Metody regularyzacji regresji logistycznej


42

Regularność za pomocą metod takich jak Ridge, Lasso, ElasticNet jest dość powszechna w przypadku regresji liniowej. Chciałem wiedzieć, co następuje: Czy te metody mają zastosowanie do regresji logistycznej? Jeśli tak, to czy istnieją jakieś różnice w sposobie ich wykorzystania do regresji logistycznej? Jeśli te metody nie mają zastosowania, w jaki sposób regularyzuje się regresję logistyczną?


Czy patrzysz na konkretny zestaw danych, a zatem musisz rozważyć uczynienie danych możliwymi do obliczenia, np. Wybranie, skalowanie i przesunięcie danych, aby początkowe obliczenie zwykle zakończyło się sukcesem. Czy może jest to bardziej ogólne spojrzenie na pytania i pytania (bez konkretnego zestawu danych do obliczenia dla 0?
Philip Oakley,

1
Jest to bardziej ogólne spojrzenie na sposoby i sposoby regularyzacji. Teksty wprowadzające do metod regularyzacji (ridge, Lasso, Elasticnet itp.), Na które natknąłem się konkretnie wspomniane przykłady regresji liniowej. Żaden z nich nie wspomniał konkretnie o logistyce, stąd pytanie.
TAK

1
Regresja logistyczna jest formą GLM korzystającą z funkcji łącza nie-tożsamości, prawie wszystko ma zastosowanie.
Firebug,


Regresja kalenicowa, lasso i elastyczna to popularne opcje, ale nie są to jedyne opcje regularyzacji. Na przykład, macierze wygładzające penalizują funkcje dużymi drugimi pochodnymi, dzięki czemu parametr regularyzacji pozwala na „regresję” regresji, co jest niezłym kompromisem między zbyt dużym a niedopasowaniem danych. Podobnie jak w regresji grzbietowej / lasso / elastycznej, można ich również używać z regresją logistyczną.
Przywróć Monikę

Odpowiedzi:


49

Tak, regularyzację można stosować we wszystkich metodach liniowych, w tym zarówno w regresji, jak i klasyfikacji. Chciałbym pokazać, że nie ma zbyt dużej różnicy między regresją a klasyfikacją: jedyną różnicą jest funkcja straty.

W szczególności istnieją trzy główne elementy metody liniowej, funkcja strat, regularyzacja, algorytmy . Tam, gdzie funkcja straty plus regularyzacja jest funkcją celu w problemie w formie optymalizacji, a algorytm jest sposobem na jego rozwiązanie (funkcja celu jest wypukła, nie będziemy omawiać w tym poście).

L(y^,y)=(y^y)2L(y^,y)=|y^y|L()yy^

L(y^,y)=log(1+exp(y^y))L(y^,y)=(1y^y)+y{1,1}y^y^

W ustawieniach regularyzacji wspomniałeś o regularyzacji L1 i L2, istnieją również inne formy, które nie zostaną omówione w tym poście.

Dlatego na wysokim poziomie metoda liniowa jest

minimizew   x,yL(wx,y)+λh(w)

Jeśli zastąpisz funkcję Utrata od ustawienia regresji do utraty logistyki, regresję logistyczną otrzymasz z regularyzacją.

Na przykład w regresji grzbietu problemem optymalizacji jest

minimizew   x,y(wxy)2+λww

Jeśli zastąpisz funkcję straty utratą logistyczną, problem stanie się

minimizew   x,ylog(1+exp(wxy))+λww

Tutaj masz regresję logistyczną z regularyzacją L2.


Tak to wygląda w zabawkowym zsyntetyzowanym zestawie danych binarnych. Lewy rysunek to dane z modelem liniowym (granica decyzji). Prawa figura to kontur funkcji celu (oś xiy przedstawia wartości dla 2 parametrów.). Zestaw danych został wygenerowany z dwóch Gaussa, a my dopasowujemy model regresji logistycznej bez przechwytywania, więc są tylko dwa parametry, które możemy wizualizować na odpowiedniej rycinie.

Niebieskie linie to regresja logistyczna bez regularyzacji, a czarne linie to regresja logistyczna z regularyzacją L2. Niebieskie i czarne punkty na prawej figurze są optymalnymi parametrami dla funkcji celu.

λ0

wprowadź opis zdjęcia tutaj

Oto kolejny przykład z regularyzacją L1.

wprowadź opis zdjęcia tutaj

Zauważ, że celem tego eksperymentu jest próba pokazania, jak działa normalizacja w regresji logistycznej, ale nie argumentowanie, że model regulowany jest lepszy.


λλ0

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj


wxyy^=f(x)=wx1

yy{1,1}

y^=wxy^yy^=wx{1,1}y^

y{0,1}

Kod można znaleźć w mojej innej odpowiedzi tutaj.

Czy jest jakieś intuicyjne wyjaśnienie, dlaczego regresja logistyczna nie zadziała w przypadku idealnej separacji? A dlaczego dodanie regularyzacji to naprawi?


4
wTxf(x)

Dzięki za odpowiedź @ hxd1011, czy możesz wyjaśnić, co oznaczają czarne linie na wykresie konturowym? Mówiąc ściślej, wiem, że (jak wyjaśniłeś) oś xiy pokazują 2 parametry, których używamy. Ale co z liniami ciągłymi i ich liczbami, takimi jak 8000, 10000, 12000. Dzięki!
Jespar


12

l(β)=l(β)+12ln|i(β)|
i(β)=1nipi(1pi)xixi{(yi,xi)={(1,1),(0,0)}glmR

1
Tak, możesz do tego użyć pakietów R logistf lub brglm! Może warto wspomnieć ...
Tom Wenseleers,

Jest bardzo elegancki, ale optymalizacja przebiega dość wolno, prawda? W gradiencie otrzymujesz odwrotność którą należy przeliczyć w każdej iteracji ...i(β)
appletree

Rzeczywiście, jest to boleśnie powolne, @appletree
StasK

(+1) Nie słyszałem wcześniej o korekcie Firtha. Nie spodziewałbym się, że dorozumiane podejście w cytowanym artykule wydłuży czas rozwiązania GLM? (Nie musisz odwracać macierzy, wystarczy obliczyć dźwignie. Jeśli rozwiązujesz GLM za pomocą iteracyjnie ponownie ważonych najmniejszych kwadratów, są to tylko normy rzędowe współczynnika Q. Dźwignie to po prostu dodaj do danych i ekspozycji, używając zamiast w dostosowaniu Jeffreys .)1 / 2h/21/2
GeoMatt22

6

Tak, dotyczy regresji logistycznej. W R, używając glmnet, po prostu określasz odpowiednią rodzinę, która jest „dwumianowa” dla regresji logistycznej. Istnieje kilka innych (trucizna, wielomian itp.), Które możesz określić w zależności od swoich danych i problemu, który rozwiązujesz.


Minusem korzystania z glmnet do tego jest to, że takie podejście nie dałoby ci poziomów istotności. Jeśli jesteś zainteresowany tym, czym pakiety R logistf lub brglm byłoby lepszym sposobem, aby przejść ...
Tom Wenseleers

@TomWenseleers istnieją również metody ładowania glmnet w celu uzyskania wartości p. Jest to jednak trochę skomplikowane, ponieważ „zwykły” bootstrap nie działa dla współczynników lasso
godspeed

Dzięki za poinformowanie mnie o tym. Widziałem też o tym inni, np. Tutaj: stats.stackexchange.com/questions/34859/... , ale wydaje się, że nie można znaleźć żadnego standardu zaimplementowanego w jakimś pakiecie R. Czy miałbyś jakieś wskazówki? Lub dobra literatura na ten temat? Wadą ładowaniem początkowym jest także, że zazwyczaj bardzo powolne dla dużych zbiorów danych ...
Tom Wenseleers

Czy masz na myśli metody, takie jak te zaimplementowane w pakiecie R hdi, cran.r-project.org/web/packages/hdi/index.html ?
Tom Wenseleers
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.