Odwrócenie regresji grzbietu: biorąc pod uwagę macierz reakcji i współczynniki regresji, znajdź odpowiednie predyktory

16

Rozważ standardowy problem regresji OLS : Mam macierze i i chcę znaleźć aby zminimalizować L = \ | \ Y- \ X \ B \ | ^ 2. Rozwiązanie podano przez \ hat \ B = \ argmin_ \ B \ {L \} = (\ X ^ \ top \ X) ^ + \ X ^ \ top \ Y.YYXXββL=YXβ2.

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

Mogę również stanowić problem „odwrotny”: biorąc pod uwagę YY i ββ , znajdź ˆXX^ , co da ˆβββ^β , tj. Zminimalizuje argminβ{L}β2argminβ{L}β2 . Innymi słowy, mam macierz odpowiedzi YY i wektor współczynnika ββ i chcę znaleźć macierz predykcyjną, która dałaby współczynniki zbliżone do ββ . Jest to oczywiście także problem regresji OLS z rozwiązaniem ˆX=argminX{argminβ{L}β2}=Yβ(ββ)+.

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

Aktualizacja wyjaśnienia: Jak wyjaśnił @ GeoMatt22 w swojej odpowiedzi, jeśli YY jest wektorem (tj. Jeśli istnieje tylko jedna zmienna odpowiedzi), to ten ˆXX^ będzie miał jeden stopień, a problem odwrotny jest znacznie niedookreślony. W moim przypadku YY jest właściwie macierzą (tzn. Istnieje wiele zmiennych odpowiedzi, jest to regresja wielowymiarowa ). Więc XX to n×pn×p , YY to n×qn×q a ββ to p×qp×q .


Jestem zainteresowany rozwiązaniem problemu „odwrotnego” regresji grzbietu. Mianowicie, moją funkcją utraty jest teraz L=YXβ2+μβ2

L=YXβ2+μβ2
a rozwiązaniem jest ˆβ=argminβ{L}=(XX+μI)1XY.
β^=argminβ{L}=(XX+μI)1XY.

Problem „wstecz” polega na znalezieniu ˆX=argminX{argminβ{L}β2}=?

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

Ponownie mam macierz odpowiedzi YY i wektor współczynnika ββ i chcę znaleźć macierz predykcyjną, która dałaby współczynniki zbliżone do ββ .

W rzeczywistości istnieją dwie powiązane formuły:

  1. Znajdź ˆXX^ dany YY i ββ i μμ .
  2. Znajdź ˆXX^ i ˆμμ^ podano YY i ββ .

Czy któryś z nich ma bezpośrednie rozwiązanie?


Oto krótki fragment Matlaba ilustrujący problem:

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

Ten kod generuje zero, jeśli mu=0nie inaczej.

ameba mówi Przywróć Monikę
źródło
Ponieważ podane są i , nie wpływają one na zmiany straty. Dlatego w (1) nadal wykonujesz OLS. (2) jest równie proste, ponieważ stratę można dowolnie zmniejszyć, przyjmując arbitralnie ujemną, w granicach wszelkich ograniczeń, które porównasz, aby na nią nałożyć. To redukuje cię do przypadku (1). BBμμˆμμ^
whuber
@whuber Thanks. Myślę, że nie wyjaśniłem tego wystarczająco jasno. Rozważ (1). Podano i (nazwijmy to ), ale muszę znaleźć który dałby współczynniki regresji grzbietu zbliżone do , innymi słowy chcę znaleźć minimalizującyNie rozumiem, dlaczego powinien to być OLS. BBμμBBXXBBXXargminB{Lridge(X,B)}B2.
argminB{Lridge(X,B)}B2.
ameba mówi Przywróć Monikę
To tak, jakbym miał i chcę znaleźć taki, że jest zbliżony do podanego . To nie to samo, co znalezienie . f(v,w)f(v,w)vvargminwf(v,w)argminwf(v,w)wwargminvf(v,w)argminvf(v,w)
ameba mówi Przywróć Monikę
Ekspozycja w twoim poście jest myląca w tej kwestii, ponieważ najwyraźniej tak naprawdę nie używasz jako funkcji straty. Czy mógłbyś rozwinąć specyfikę problemów (1) i (2) w poście? LL
whuber
2
@ hxd1011 Wiele kolumn w X jest zwykle nazywanych „regresją wielokrotną”, wiele kolumn w Y jest zwykle nazywanych „regresją wielowymiarową”.
ameba mówi Przywróć Monikę

Odpowiedzi:

11

Teraz, gdy pytanie skupiło się na bardziej precyzyjnym sformułowaniu interesującego nas problemu, znalazłem rozwiązanie dla przypadku 1 (znany parametr grzbietu). Powinno to również pomóc w przypadku 2 (nie do końca rozwiązanie analityczne, ale prosta formuła i niektóre ograniczenia).

Podsumowanie: Żadna z dwóch formuł odwrotnych problemów nie ma jednoznacznej odpowiedzi. W przypadku 2 , w którym parametr grzbietu jest nieznany, istnieje nieskończenie wiele rozwiązań , dla . W przypadku 1, w którym podano , istnieje skończona liczba rozwiązań dla , ze względu na niejednoznaczność w widmie o liczbie pojedynczej.μω2μω2XωXωω[0,ωmax]ω[0,ωmax]ωωXωXω

(Wyprowadzenie jest nieco długie, więc TL, DR: na końcu jest działający kod Matlab.)


Nieokreślony przypadek („OLS”)

Problem przesyłania dalej to gdzie , iminBXBY2

minBXBY2
XRn×pXRn×pBRp×qBRp×qYRn×qYRn×q .

Na podstawie zaktualizowanego pytanie, będziemy zakładać, , więc jest ustalana pod podany i . Podobnie jak w kwestii, to przyjmujemy "domyślne" (minimalna -norm) Roztwór , gdzie jest pseudoinverse z .n<p<qn<p<qBBXXYYL2L2B=X+Y

B=X+Y
X+X+XX

Z rozkładu wartości pojedynczej ( SVD ) , podanego przez * pseudoinwersję można obliczyć jako ** (* Pierwsze wyrażenia używają pełnego SVD, podczas gdy drugie wyrażenia używają zmniejszonego SVD. ** Dla uproszczenia zakładam, że ma pełną pozycję, tj.XXX=USVT=US0VT0

X=USVT=US0VT0
X+=VS+UT=V0S10UT
X+=VS+UT=V0S10UT
XXS10S10 .)

Tak więc problem naprzód ma rozwiązanie W przyszłości, zauważam, że , gdzieBX+Y=(V0S10UT)Y

BX+Y=(V0S10UT)Y
S0=diag(σ0)S0=diag(σ0)σ0>0σ0>0 to wektor wartości pojedynczych.

W odwrotnym problemem, daje nam i . Wiemy, że pochodzi z powyższego procesu, ale nie wiemy, . Następnie należy ustalić odpowiedniYYBBBBXX .

Jak zaznaczono w zaktualizowanym pytanie, w tym przypadku możemy odzyskać stosując zasadniczo takie samo podejście, tzn teraz używając pseudoinverse z .XX0=YB+

B

Przereklamowany przypadek (estymator grzbietu)

W przypadku „OLS” niedostatecznie określony problem został rozwiązany poprzez wybranie rozwiązania o minimalnej normie , tj. Nasze „unikalne” rozwiązanie zostało domyślnie uregulowane .

Zamiast wybierać rozwiązanie normy minimalnej , tutaj wprowadzamy parametr aby kontrolować „jak małą” powinna być norma, tzn. Używamy regresji grzbietu .ω

W tym przypadku mamy serię problemów do przodu dla , , które są podane przez Zebranie różnych wektorów po lewej i prawej stronie do ta kolekcja problemy można sprowadzić do następującego problemu „OLS” gdzie wprowadziliśmy rozszerzone macierze βkk=1,,q
minβXβyk2+ω2β2

Bω=[β1,,βk],Y=[y1,,yk]
minBXωBY2
Xω=[XωI],Y=[Y0]

W tym przereklamowanym przypadku rozwiązanie jest nadal podawane przez pseudo-odwrotność ale pseudo-odwrotność jest teraz zmieniana, w wyniku czego * gdzie nowa macierz „spektrum osobliwości” ma (odwrotną) przekątną ** (* Nieco obliczenia wymagane do uzyskania tego zostały pominięte ze względu na zwięzłość. Jest to podobne do opisu tutaj dla przypadku . ** Tutaj wpisy wektor jest wyrażany w kategoriach wektora , gdzie wszystkie operacje są wprowadzane).Bω=X+Y

Bω=(V0S2ωUT)Y
σ2ω=σ20+ω2σ0
pnσωσ0

Teraz w tym problemie nadal możemy formalnie odzyskać „rozwiązanie podstawowe” jako ale to już nie jest prawdziwe rozwiązanie.Xω=YB+ω

Jednak analogia nadal utrzymuje się w tym, że to „rozwiązanie” ma SVD z pojedynczymi wartościami podanymi powyżej.Xω=US2ωVT0

σ2ω

Możemy więc wyprowadzić równanie kwadratowe dotyczące pożądanych wartości pojedynczych z do odzyskania wartościami pojedynczymi i parametrem regularyzacji . Rozwiązaniem jest zatem σ0σ2ωωσ0=ˉσ±Δσ,ˉσ=12σ2ω,Δσ=(ˉσ+ω)(ˉσω)


Poniższe demo Matlaba (przetestowane online przez Octave ) pokazuje, że ta metoda rozwiązania wydaje się działać zarówno w praktyce, jak i teorii. Ostatni wiersz pokazuje, że wszystkie pojedyncze wartości znajdują się w rekonstrukcji , ale nie do końca ustaliłem, który root wybrać ( = vs. ). Dla zawsze będzie to root. Wydaje się, że ogólnie dotyczy to „małego” , podczas gdy dla „dużego” wydaje się, że root. (Poniższa wersja demonstracyjna jest obecnie ustawiona na „dużą” wielkość).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?

Nie mogę powiedzieć, jak solidne jest to rozwiązanie, ponieważ odwrotne problemy są na ogół źle postawione, a rozwiązania analityczne mogą być bardzo kruche. Jednak pobieżne eksperymenty zanieczyszczające szumem Gaussa (tj. Mają pełną rangę porównaniu ze zmniejszoną rangą ) wydają się wskazywać, że metoda jest właściwie zachowana.Bpn

Co do problemu 2 (tj nieznany), powyżej daje przynajmniej górna granica w . Aby kwadratowy dyskryminator był nieujemny, musimy mieć ωωωωmax=ˉσn=min[12σ2ω]


W przypadku dwuznaczności znaku kwadratowego-root poniższy fragment kodu pokazuje, że niezależnie od znaku każdy da to samo rozwiązanie grzbietu przód , nawet jeśli różni się od .ˆXBσ0SVD[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
GeoMatt22
źródło
1
+11. Bardzo dziękuję za wysiłek włożony w odpowiedź na to pytanie i za całą dyskusję, którą przeprowadziliśmy. To wydaje się całkowicie odpowiadać na moje pytanie. Czułem, że samo przyjęcie odpowiedzi nie wystarczy w tym przypadku; zasługuje to na znacznie więcej niż dwa pozytywne głosy, które obecnie ma ta odpowiedź. Twoje zdrowie.
ameba mówi Przywróć Monikę
@amoeba dzięki! Cieszę się, że było pomocne. Myślę, że opublikuję komentarz na temat odpowiedzi Whubera na link, w której pytasz, czy uważa, że ​​jest to właściwe i / lub czy istnieje lepsza odpowiedź do użycia. (Uwaga: poprzedza swoją dyskusję SVD zastrzeżeniem , tj . pnX
Przesadnie
@ GeoMatt22 mój komentarz do oryginalnego pytania mówi, że używanie pinvnie jest dobrą rzeczą, zgadzasz się?
Haitao Du
1
@ hxd1011 Zasadniczo (prawie) nigdy nie chcesz jawnie odwracać macierzy liczbowo, i dotyczy to również pseudo-odwrotności. Dwa powody, dla których go tutaj użyłem, to: 1) zgodność z równaniami matematycznymi + kodem demo ameby oraz 2) w przypadku nieokreślonych systemów, domyślne rozwiązania „slash” Matlaba mogą różnić się od pinv . Prawie wszystkie przypadki w moim kodzie można zastąpić odpowiednimi poleceniami \ lub /, które ogólnie należy preferować. (Pozwalają
Matlabowi
1
@ hxd1011, aby wyjaśnić punkt 2 mojego poprzedniego komentarza, z linku w komentarzu do pierwotnego pytania: „Jeśli ranga A jest mniejsza niż liczba kolumn w A, to x = A \ B niekoniecznie jest minimum rozwiązanie norm. Droższe obliczeniowo x = pinv (A) * B oblicza minimalne rozwiązanie najmniejszych kwadratów. ".
GeoMatt22,