Czytałem, że regresję grzbietu można osiągnąć, po prostu dodając wiersze danych do oryginalnej macierzy danych, gdzie każdy wiersz jest konstruowany przy użyciu 0 dla zmiennych zależnych i pierwiastka kwadratowego lub zero dla zmiennych niezależnych. Następnie dodaje się jeden dodatkowy wiersz dla każdej niezależnej zmiennej.
Zastanawiałem się, czy można uzyskać dowód dla wszystkich przypadków, w tym dla regresji logistycznej lub innych GLM.
logistic
generalized-linear-model
ridge-regression
Płatek śniegu
źródło
źródło
Odpowiedzi:
Następnie
Działa to w przypadku regresji liniowej. Nie działa w przypadku regresji logistycznej, ponieważ zwykła regresja logistyczna nie minimalizuje sumy kwadratów reszt.
[Regresja grzbietu nie jest jedyną rzeczą, którą można zrobić za pomocą takich pseudoobserwacyjnych sztuczek - pojawiają się one w wielu innych kontekstach]
źródło
Uogólnienie tego przepisu na GLM rzeczywiście nie jest trudne, ponieważ GLM są zwykle dopasowane przy użyciu iteracyjnie przeważonych najmniejszych kwadratów . Dlatego w ramach każdej iteracji można zastąpić regularny ważony krok najmniejszych kwadratów krokiem karnym ważonym krokiem najmniejszych kwadratów, aby uzyskać punkt GLM karany kalenicą. W rzeczywistości, w połączeniu z adaptacyjnymi karami kalenicowymi, przepis ten stosuje się, aby dopasować GLM z karą L0 (czyli najlepszy podzbiór, tj. GLM, w których karana jest całkowita liczba niezerowych współczynników). Zostało to zaimplementowane na przykład w pakiecie L0ara , zobacz ten dokument i ten, aby uzyskać szczegółowe informacje.
Warto również zauważyć, że stosuje się najszybszy zamknięty sposób rozwiązywania regularnej regresji grzbietu
w przypadku
n>=p
, gdy lub przy użyciukiedy
p>n
i dla modelu bez przechwytywania.Jest to szybsze niż stosowanie przepisu powiększania wierszy , tj. Robienie
Jeśli będziesz potrzebować ograniczeń nieujemności względem dopasowanych współczynników , możesz to zrobić
co daje nieco dokładniejszy wynik btw niż
(i ściśle mówiąc, tylko rozwiązanie
nnls(A=crossprod(X)+diag(lambdas), b=crossprod(X,Y))$x
jest wtedy poprawne).Jeszcze nie zorientowałem się, w jaki sposób można zoptymalizować przypadek ograniczony nieegatywnością dla tej
p > n
sprawy - daj mi znać, jeśli ktoś będzie wiedział, jak to zrobić ... [lmridge_nnls_largep = function (X, Y, lambda) t(X) %*% nnls(A=tcrossprod(X)+lambda*diag(nrow(X)), b=Y)$x
nie działa]źródło