Inversione della regressione della cresta: dati la matrice di risposta e i coefficienti di regressione, trova predittori adatti


16

Considera un problema di regressione OLS standard : Ho matrici e e voglio trovare per minimizzare L = \ | \ Y- \ X \ B \ | ^ 2. La soluzione è data da \ hat \ B = \ argmin_ \ B \ {L \} = (\ X ^ \ top \ X) ^ + \ X ^ \ top \ Y.YXβ

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

Posso anche porre un problema "inverso": dato Y e β , trova X^ che produrrebbe β^β , cioè minimizzerebbe argminβ{L}β2 . In parole, ho la matrice di risposta Y e il vettore coefficiente β e voglio trovare la matrice predittore che produrrebbe coefficienti vicini a β . Questo è, ovviamente, anche un problema di regressione OLS con la soluzione

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

Aggiornamento di chiarimento: come ha spiegato @ GeoMatt22 nella sua risposta, se Y è un vettore (ovvero se esiste solo una variabile di risposta), allora questo X^ sarà al primo posto e il problema inverso è enormemente sottodeterminato. Nel mio caso, Y è in realtà una matrice (cioè ci sono molte variabili di risposta, è una regressione multivariata ). Quindi X è n×p , Y è n×q e β è p×q .


Sono interessato a risolvere un problema "inverso" per la regressione della cresta. Vale a dire, la mia funzione di perdita ora è e la soluzione è

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

Il problema "inverso" è trovare

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

Ancora una volta, ho una matrice di risposta Y e un vettore coefficiente β e voglio trovare una matrice predittore che produca coefficienti vicini a β .

In realtà ci sono due formulazioni correlate:

  1. Trova X^ dato Y e β e μ .
  2. Trova e dati e .X^μ^Yβ

Uno di loro ha una soluzione diretta?


Ecco un breve estratto di Matlab per illustrare il problema:

% 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(:)))

Questo codice restituisce zero se mu=0ma non diversamente.


Dato che vengono dati e , non influenzano le variazioni della perdita. Pertanto in (1) stai ancora facendo OLS. (2) è altrettanto semplice, perché la perdita può essere arbitrariamente ridotta prendendo arbitrariamente negativo, entro i limiti di eventuali vincoli che si confrontano per imporvi. Ciò ti riduce al caso (1). Bμμ^
whuber

@whuber Grazie. Penso di non averlo spiegato abbastanza chiaramente. Considerare (1). e sono indicati (chiamiamolo ), ma devo trovare che produrrebbe coefficienti di regressione della cresta vicini a , in altre parole voglio trovare X che minimizza argmin B { L r i d g e ( X , B ) } - B 2 . Non vedo perché questo dovrebbe essere OLS. BμBXBX
argminB{Lridge(X,B)}B2.
ameba dice Reinstate Monica

È come se avessi e voglio trovare v tale che argmin w f ( v , w ) è vicino a una data w . Non è lo stesso di trovare argmin v f ( v , w ) . f(v,w)vargminwf(v,w)wargminvf(v,w)
ameba dice Reinstate Monica il

L'esposizione nel tuo post è fonte di confusione su questo argomento, perché evidentemente si sta non effettivamente utilizzando in funzione di perdita. Potresti forse approfondire le specifiche dei problemi (1) e (2) nel post? L
whuber

2
@ hxd1011 Molte colonne in X sono generalmente chiamate "regressione multipla", molte colonne in Y sono generalmente chiamate "regressione multivariata".
ameba dice Reinstate Monica il

Risposte:


11

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 .

minBXBY2
XRn×pBRp×qYRn×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=US0V0T
X+=VS+UT=V0S01UT
XS01

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.

BX+Y=(V0S01UT)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βyk2+ω2β2
questa raccolta di problemi può essere ridotta al seguente problema "OLS" min BX ω B - Y 2 dove abbiamo introdotto le matrici aumentate X ω = [ X ω I ]
Bω=[β1,,βk],Y=[y1,,yk]
minBXωBY2
Xω=[XωI],Y=[Y0]

Bω=X+Y
Bω=(V0Sω2UT)Y
σω2=σ02+ω2σ0
pnσωσ0

Xω=YBω+

Xω=USω2V0T
σω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

1
+11. Grazie mille per tutto lo sforzo che hai dedicato a rispondere a questa domanda e per tutte le discussioni che abbiamo avuto. Questo sembra rispondere completamente alla mia domanda. Ho sentito che accettare semplicemente la tua risposta non è abbastanza in questo caso; questo merita molto più di due voti che questa risposta ha attualmente. Saluti.
ameba dice Ripristina Monica il

@amoeba grazie! Sono contento che sia stato utile. Penso che pubblicherò un commento sulla risposta di Whuber che link chiederai se pensa che sia appropriato e / o se c'è una risposta migliore da usare. (Nota che ha la precedenza sulla sua discussione SVD con la condizionepn, cioè un eccesso determinato X.)
GeoMatt22,

@ GeoMatt22 il mio commento sulla domanda originale dice che l'uso pinvnon è una buona cosa, sei d'accordo?
Haitao Du

1
@ hxd1011 In generale (quasi) non si vuole mai invertire esplicitamente una matrice numericamente, e questo vale anche per lo pseudo-inverso. I due motivi per cui l'ho usato qui sono 1) coerenza con le equazioni matematiche + codice demo di amoeba e 2) per il caso di sistemi indefiniti, le soluzioni "slash" predefinite di Matlab possono differire da quelle pinv . Quasi tutti i casi nel mio codice potrebbero essere sostituiti dai comandi \ o / appropriati, che sono generalmente da preferire. (Questi consentono a Matlab di decidere il risolutore diretto più efficace.)
GeoMatt22,

1
@hxd1011 to clarify on point 2 of my previous comment, from the link in your comment on the original question: "If the rank of A is less than the number of columns in A, then x = A\B is not necessarily the minimum norm solution. The more computationally expensive x = pinv(A)*B computes the minimum norm least-squares solution.".
GeoMatt22
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.