Ora che la domanda è convergente su una formulazione più precisa del problema di interesse, ho trovato una soluzione per il caso 1 (parametro di cresta noto). Questo dovrebbe aiutare anche per il caso 2 (non esattamente una soluzione analitica, ma una formula semplice e alcuni vincoli).
Riepilogo: nessuna delle due formulazioni inverse del problema ha una risposta unica. Nel caso 2 , dove il parametro di cresta è sconosciuto, ci sono infinite soluzioni X ω , per ω ∈ [ 0 , ω max ] . Nel caso 1, dove viene dato ω , esiste un numero finito di soluzioni per X ω , a causa dell'ambiguità nello spettro del valore singolare.μ≡ω2Xωω∈[0,ωmax]ωXω
(La derivazione è un po 'lunga, quindi TL, DR: alla fine c'è un codice Matlab funzionante.)
Caso indeterminato ("OLS")
Il problema in avanti è
dove X ∈ R n × p , B ∈ R p × q e Y ∈ R n × q .
minB∥XB−Y∥2
X∈Rn×pB∈Rp×qY∈Rn×q
Sulla base della domanda aggiornato, assumeremo , quindi B è sotto determinato in X e Y . Come in questione, assumeremo il "default" (minimo L 2 -norm) Soluzione
B = X + Y
dove X + è il pseudoinversa di X .n<p<qBXYL2
B=X+Y
X+X
Dalla decomposizione del valore singolare ( SVD ) di , data da *
X = U S V T = U S 0 V T 0
lo pseudoinverso può essere calcolato come **
X + = V S + U T = V 0 S - 1 0 U T
(* Le prime espressioni usano il SVD completo, mentre le seconde espressioni usano il SVD ridotto. ** Per semplicità suppongo che X abbia il rango completo, cioè che S - 1 0 esiste.)X
X=USVT=US0VT0
X+=VS+UT=V0S−10UT
XS−10
Quindi il problema in avanti ha la soluzione
Per riferimento futuro, noto che S 0 = d i a g ( σ 0 ) , dove σ 0 > 0 è il vettore di valori singolari.
B≡X+Y=(V0S−10UT)Y
S0=diag(σ0)σ0>0
Nel problema inverso, c'è dato e B . Sappiamo che B è venuto dal processo di cui sopra, ma non sappiamo X . Il compito è quindi determinare la X appropriata .YBBXX
Come indicato nella domanda aggiornato, in questo caso possiamo recuperare usando essenzialmente lo stesso approccio, ovvero
X 0 = Y B +
ora usando l'pseudoinversa di B .X
X0=YB+
B
Caso troppo determinato (stimatore di cresta)
Nel caso "OLS", il problema sottostimato è stato risolto scegliendo la soluzione a norma minima , ovvero la nostra soluzione "unica" è stata implicitamente regolarizzata .
Piuttosto che scegliere la soluzione della norma minima , qui introduciamo un parametro per controllare "quanto piccola" dovrebbe essere la norma, cioè usiamo la regressione della cresta .ω
In questo caso, abbiamo una serie di problemi in avanti per , k = 1 , … , q , che sono dati da min β ‖ X β - y k ‖ 2 + ω 2 ‖ β ‖ 2
Raccogliere i diversi sinistra e destra vettori lato mano in
B ω = [ β 1 , … , β k ]βkk=1,…,q
minβ∥Xβ−yk∥2+ω2∥β∥2
questa raccolta di problemi può essere ridotta al seguente problema "OLS"
min B ‖ X ω B - Y ‖ 2
dove abbiamo introdotto le matrici aumentate
X ω = [ X ω I ]Bω=[β1,…,βk],Y=[y1,…,yk]
minB∥XωB−Y∥2
Xω=[XωI],Y=[Y0]
Bω=X+Y
Bω=(V0S−2ωUT)Y
σ2ω=σ20+ω2σ0
p≤nσωσ0
Xω=YB+ω
Xω=US2ωVT0
σ2ω
σ0σ2ωω
σ0=σ¯±Δσ,σ¯=12σ2ω,Δσ=(σ¯+ω)(σ¯−ω)−−−−−−−−−−−−√
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?
Bpn
ωω
ω≤ωmax=σ¯n=min[12σ2ω]
X^ will give the same forward B ridge-solution, even when σ0 differs from SVD[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