逆向岭回归:给定响应矩阵和回归系数,找到合适的预测因子


16

考虑一个标准的OLS回归问题:我有矩阵\ Y\ X,我想找到\ B以最小化L = \ | \ Y- \ X \ B \ | ^ 2。 该解决方案由\ hat \ B = \ argmin_ \ B \ {L \} =(\ X ^ \ top \ X)^ + \ X ^ \ top \ Y给出。YXββ = argmin β { 大号} = XX + Xÿ

L=YXβ2.
β^=argminβ{L}=(XX)+XY.

我也可能会造成“反向”的问题:给出Yβ,找到X^将产生 β^β,即会减小argminβ{L}β2。换句话说,我有响应矩阵Y和系数向量β,我想找到将产生接近\ B ^ *的系数的预测矩阵β。当然,这也是OLS回归问题,其解决方案

X^=argminX{argminβ{L}β2}=Yβ(ββ)+.

澄清更新:正如@ GeoMatt22在他的回答中解释的那样,如果Y是向量(即,如果只有一个响应变量),那么该X^将排在第一位,而相反的问题被大大不确定。在我的情况下,Y实际上是一个矩阵(即,有很多响应变量,它是多元回归)。因此Xn×pYn×qβp×q


我有兴趣解决岭回归的“反向”问题。即,我的损失函数现在是

L=YXβ2+μβ2
且解是
β^=argminβ{L}=(XX+μI)1XY.

“反向”问题是找到

X^=argminX{argminβ{L}β2}=?

再次,我有一个响应矩阵Y和一个系数向量β,我想找到一个预测器矩阵,该矩阵将产生接近\ B ^ *的系数β

实际上有两种相关的表述:

  1. 查找X^给出Yβμ
  2. 给定\ Y\ B ^ *找到X^\ hat \ muμ^Yβ

他们中的任何一个都有直接的解决方案吗?


这是一个简短的Matlab摘录来说明问题:

% generate some data
n = 10; % number of samples
p = 20; % number of predictors
q = 30; % number of responses
Y = rand(n,q);
X = rand(n,p);
mu = 0;
I = eye(p);

% solve the forward problem: find beta given y,X,mu
betahat = pinv(X'*X + mu*I) * X'*Y;

% backward problem: find X given y,beta,mu
% this formula works correctly only when mu=0
Xhat =  Y*betahat'*pinv(betahat*betahat');

% verify if Xhat indeed yields betahat
betahathat = pinv(Xhat'*Xhat + mu*I)*Xhat'*Y;
max(abs(betahathat(:) - betahat(:)))

如果mu=0没有,则此代码输出零。


由于给出了和,因此它们不会影响损耗的变化。因此,在(1)中,您仍在进行OLS。(2)同样简单,因为可以通过将任意取负来使损失任意小,这可以在您比较要施加的任何约束的范围内进行。这样可以减少情况(1)。μ μBμμ^
ub

@whuber谢谢。我想我没有足够清楚地解释它。考虑(1)。和(我们称其为),但是我需要找到,它会产生接近岭回归系数,换句话说,我想找到使我不明白为什么这应该是OLS。μ * X * X argmin {大号ř d ëX } - * 2BμBXBX
argminB{Lridge(X,B)}B2.
变形虫说恢复莫妮卡

就像我有,我想找到,使接近给定的。这与查找并不相同。v argmin w f v w w argmin v f v w f(v,w)vargminwf(v,w)wargminvf(v,w
变形虫说恢复莫妮卡

您的帖子中的论述使这件事令人困惑,因为显然您实际上并未将用作损失函数。您能否详细说明帖子中问题(1)和(2)的细节?L
ub

2
@ hxd1011 X中的许多列通常称为“多元回归”,Y中的许多列通常称为“多元回归”。
变形虫说恢复莫妮卡

Answers:


11

既然问题已经集中在对所关注问题的更精确表述上,我已经找到了情况1(已知的岭参数)的解决方案。这也将对情况2有所帮助(不是确切的分析解决方案,而是一个简单的公式和一些约束条件)。

简介:两个逆问题公式都没有唯一的答案。在情况2中,脊参数是未知的,对于,存在无限多个解。在情况1中,在那里给出,存在用于解决方案的有限数量,由于在奇异值频谱歧义。X ω ω ∈ [ 0 ω 最大值 ] ω X ωμω2Xωω[0ω最高]ωXω

(派生有点长,所以TL,DR:最后有一个有效的Matlab代码。)


未确定的情况(“ OLS”)

正向问题是 ,其中,和。 X [R Ñ × p [R p × q ý [R Ñ × q

X-ÿ2
X[Rñ×p[Rp×qÿ[Rñ×q

基于更新后的问题,我们将假设,因此在给定和情况下是确定的。如该问题,我们将假定的“默认”(最小范数)溶液 ,其中是伪逆的。B X Y L 2 B = X + Y X + Xñ<p<qXÿ大号2

=X+ÿ
X+X

根据的奇异值分解(SVD),由* ,伪逆可计算为** (*第一个表达式使用完整的SVD,而第二个表达式使用简化的SVD。**为简单起见,我假设具有完整的排名,即存在。)X = U S V T = U S 0 V T 0 X + = V S + U T = V 0 S 1 0 U T X S 1 0X

X=ü小号VŤ=ü小号0V0Ť
X+=V小号+üŤ=V0小号0-1个üŤ
X小号0-1个

因此,正向问题具有解 为了便于将来参考,我注意到,其中是奇异值的向量。小号0 = ð σ 0σ 0 > 0

X+ÿ=V0小号0-1个üŤÿ
小号0=d一世一种Gσ0σ0>0

在反问题,我们给出和。我们知道,从上述过程来了,但我们不知道。该任务就是确定适当的。B B X XÿXX

如更新的问题中所述,在这种情况下,我们可以使用基本上相同的方法来恢复,即 现在使用的伪逆来恢复。X 0 = Y B + BX

X0=ÿ+

案件超额确定(Ridge估计量)

在“ OLS”情况下,通过选择最小范数解解决了欠定问题,即我们的“唯一”解被隐式正则化了

而不是选择最小范数解,这里我们引入参数来控制范数应该是“多小”,即,我们使用岭回归ω

在这种情况下,对于,有一系列正向问题,问题由 收集的不同的左和右侧载体引入 此集合的问题可以简化为以下“ OLS”问题 ,我们在其中引入了增强矩阵 ķ = 1 ... q 分钟βX β - ý ķ 2 + ω 2β 2 ω = [ β 1... β ķ ]βķķ=1个q

βXβ-ÿķ2+ω2β2
分钟X ω- ý 2 X ω = [ X ω ]
ω=[β1个βķ]ÿ=[ÿ1个ÿķ]
Xω-ÿ2
Xω=[Xω一世]ÿ=[ÿ0]

在这种超定情况下,解决方案仍由伪逆 但伪逆现在已更改,从而导致* ,其中新的“奇异谱”矩阵具有(对角)对角线** (*为简洁起见,省略了为获得此结果而需要的一些计算。这与此处的情况类似。**此处向量以向量的形式表示,其中所有操作都是入门方式。)ω = V 0 小号- 2 ω Ù Ť ý σ 2 ω = σ 2 0 + ω 2

ω=X+ÿ
ω=V0小号ω-2üŤÿ
pÑσωσ0
σω2=σ02+ω2σ0
pñσωσ0

现在,在此问题中,我们仍然可以正式恢复“基本解决方案”为 但这不再是真正的解决方案。

Xω=ÿω+

但是,类比仍然保持,即此“解决方案”具有SVD 且具有上面给出的奇异值。 σ 2 ω

Xω=ü小号ω2V0Ť
σω2

因此,我们可以得出将期望的奇异值与可恢复的奇异值和正则化参数关联的二次方程。那么解决方案是 σ0σω2ω

σ0=σ¯±Δσσ¯=1个2σω2Δσ=σ¯+ωσ¯-ω

下面的Matlab演示(通过Octave在线测试)表明,这种解决方法在实践和理论上都可行。的最后一行显示的所有奇异值是在重建,但我还没有完全想出走哪根(=对)。对于,它将始终是根。这似乎通常适用于“小”,而对于“大”,根似乎可以接管。(下面的演示当前设置为“大”情况。)Xσ¯±Δσsgn+-ω=0+ωω-

% Matlab demo of "Reverse Ridge Regression"
n = 3; p = 5; q = 8; w = 1*sqrt(1e+1); sgn = -1;
Y = rand(n,q); X = rand(n,p);
I = eye(p); Z = zeros(p,q);
err = @(a,b)norm(a(:)-b(:),Inf);

B = pinv([X;w*I])*[Y;Z];
Xhat0 = Y*pinv(B);
dBres0 = err( pinv([Xhat0;w*I])*[Y;Z] , B )

[Uw,Sw2,Vw0] = svd(Xhat0, 'econ');

sw2 = diag(Sw2); s0mid = sw2/2;
ds0 = sqrt(max( 0 , s0mid.^2 - w^2 ));
s0 = s0mid + sgn * ds0;
Xhat = Uw*diag(s0)*Vw0';

dBres = err( pinv([Xhat;w*I])*[Y;Z] , B )
dXerr = err( Xhat , X )
sigX = svd(X)', sigHat = [s0mid+ds0,s0mid-ds0]' % all there, but which sign?

我不能说这个解决方案的鲁棒性,因为反问题通常是不适当的,而且分析解决方案可能非常脆弱。但是,用高斯噪声污染粗略实验(即,它具有完整的等级与降低的等级)似乎表明该方法的行为合理。pñ

对于问题2(即 unknown),以上内容至少给出了的上限。为了使二次判别式为非负数,我们必须具有 ωω

ωω最高=σ¯ñ=[1个2σω2]

对于二次根符号歧义,以下代码段显示,即使与不同,任何都将独立于符号而给出相同的正向脊解。X^σ0小号Vd[X]

Xrnd=Uw*diag(s0mid+sign(randn(n,1)).*ds0)*Vw0'; % random signs
dBrnd=err(pinv([Xrnd;w*I])*[Y;Z],B) % B is always consistent ...
dXrnd=err(Xrnd,X) % ... even when X is not

1
+11。非常感谢您为回答这个问题所做的所有努力以及我们进行的所有讨论。这似乎完全回答了我的问题。我觉得仅接受您的回答是不够的。这值得该答案目前拥有两个以上的支持。干杯。
变形虫说恢复莫妮卡

@amoeba谢谢!我很高兴这很有帮助。我想我会在wuber的答案链接上发表评论,询问他是否认为合适和/或是否有更好的答案。(注意他的序言他的前提SVD讨论,即超定)pñX
GeoMatt22

@ GeoMatt22我对原始问题的评论说使用pinv不是一件好事,您同意吗?
Haitao Du

1
@ hxd1011通常,您(几乎)永远不想在数值上显式地反转矩阵,这也适用于伪逆。我在这里使用它的两个原因是:1)与数学方程式一致+变形虫的演示代码,以及2)对于系统欠佳的情况,默认的Matlab“斜杠”解决方案可能与pinv解决方案有所不同。我的代码中几乎所有情况都可以由适当的\或/命令替换,通常最好使用\或/命令。(这使Matlab可以确定最有效的直接求解器。)
GeoMatt22'9

1
@ hxd1011 在您对原始问题的评论中的链接上澄清我先前的评论的第2点:“如果A的等级小于A中的列数,则x = A \ B不一定是最小值计算代价更高的x = pinv(A)* B计算最小范数最小二乘解。”。
GeoMatt22 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.