Potrafię trenować regresję logistyczną w zakresie R
korzystania
glm(y ~ x, family=binomial(logit)))
ale IIUC optymalizuje to pod kątem prawdopodobieństwa dziennika.
Czy istnieje sposób wytrenowania modelu za pomocą funkcji straty liniowej ( ) (która w tym przypadku jest taka sama jak całkowita odległość zmienności )?
To znaczy, biorąc pod uwagę wektor liczbowy i nieco (logiczny) wektor , chcę skonstruować funkcję monotoniczną (w rzeczywistości zwiększającą się) taką, że jest zminimalizowane.
Zobacz też
Odpowiedzi:
To, co chcesz zrobić, nie istnieje, ponieważ z braku lepszego słowa jest matematycznie wadliwe.
Ale najpierw podkreślę, dlaczego uważam, że przesłanki twojego pytania są solidne. Spróbuję następnie wyjaśnić, dlaczego uważam, że wyciągnięte z nich wnioski opierają się na niezrozumieniu modelu logistycznego, a na koniec zasugeruję alternatywne podejście.
Oznaczę twojenobserwacji (pogrubione litery oznaczają wektory), które leżą wprzestrzenipwymiarowej (pierwszy wpis x{ ( xxja, yja) }ni = 1 n p jest 1)p<n, Y i ∈[0,1], a f( xxxja p<n yi∈[0,1] to monotonna funkcja xf(xxi)=f(xx′iββ) , powiedz jakkrzywa logistyczna,aby naprawić pomysły. Dla wygody założę, że n jestwystarczającoduże w porównaniu do p .xx′iββ n p
Masz rację, że jeśli zamierzasz użyć TVD jako kryterium oceny dopasowanego modelu, uzasadnione jest oczekiwanie, że twoje dopasowanie zoptymalizuje to samo kryterium wśród wszystkich możliwych kandydatów na twoich danych. W związku z tym
Problemem jest błąd : i jeśli(po prostu chcemy, aby nasz model był asymptotyczniebezstronny), wtedymusibyćheteroskedastyczny. Wynika to z tego, żemoże przyjmować tylko dwie wartości, 0 i 1. Dlatego, biorąc pod uwagę ,może również przyjmować tylko dwie wartości:gdy, co występuje z prawdopodobieństwemigdy, co występuje z prawdopodobieństwem.ϵi=yi−f(xx′iββ) ϵ i y i xE(ϵϵ)=0 ϵi yi ϵ i 1-f( xxxi ϵi y i = 1 f ( x1−f(xx′iββ) yi=1 - f ( xf(xx′iββ) y i = 1 1 - f ( x−f(xx′iββ) yi=1 1−f(xx′iββ)
Te rozważania łącznie oznaczają, że:
stąd nie jest stały, ale ma wklęsły kształt paraboli i jest maksymalizowany, gdy jest takie, że .var(ϵϵ) xx E(y|xx)≈.5
Ta nieodłączna heteroskedastyczność reszt ma konsekwencje . Oznacza to między innymi, że minimalizując utraty , masz asymptotycznie część swojej próbki. Oznacza to, że dopasowany ogóle nie pasuje do danych, ale tylko jego część skupiona wokół miejsc, w których jest taki, że . To są najmniej pouczające punkty danych w twojej próbie : odpowiadają one obserwacjom, dla których składnik hałasu jest największy. Dlatego twoje dopasowanie jest przyciągane do , np. Jest nieistotne.l1 ββ∗ xx E(yy|xx)≈.5 ββ∗=ββ:f(xx′ββ)≈.5
Jednym z rozwiązań, jak wynika z powyższego opisu, jest zniesienie wymogu bezstronności. Popularnym sposobem na odchylenie estymatora (z dołączoną interpretacją bayesowską) jest włączenie terminu skurczu. Jeśli przeskalujemy odpowiedź:
i dla celów obliczeniowych zastąp inną funkcją monotoniczną --it będzie wygodne kontynuacja oznacza pierwszy komponent wektora parametru jak , a pozostałe te - i to określenie kurczenie (na przykład jedna z postaci ), wynikający z tego problem optymalizacji staje się:f(xx′ββ) g(xx,[c,γγ])=xx′[c,γγ] c p−1 γγ ||γγ||2
Zwróć uwagę, że w tym nowym (również wypukłym) problemie optymalizacji kara za poprawnie sklasyfikowane obserwacje wynosi 0 i rośnie liniowo wraz z dla sklasyfikowanej - jak w utrata. Rozwiązaniem drugiego problemu optymalizacji są znane współczynniki liniowe svm (z idealną separacją). W przeciwieństwie do , sensowne jest nauczenie się tych z danych z karą typu TVD („typ” z powodu określenia błędu) . W związku z tym to rozwiązanie jest szeroko wdrażane. Zobacz na przykład pakiet R LiblineaR .1 1 [ c ∗ , γxx′[[c,γ] l1 β[c∗,γγ∗] [ c ∗ , γββ∗ [c∗,γγ∗]
źródło
Nie jestem pewien, dlaczego chcesz użyć utraty L1 do czegoś ograniczonego między 0 a 1. W zależności od tego, jaki jest twój cel, możesz rozważyć coś takiego jak utrata zawiasu, która jest podobna do utraty L1 w jednym kierunku i płasko w innym.
W każdym razie poniższy kod powinien wykonać to, o co prosiłeś. Zauważ, że optymalna reakcja jest w zasadzie funkcją krokową.
źródło
Możesz użyć pakietu glmnet do dopasowania modeli L1, L2. Nie ogranicza się to do regresji logistycznej, ale obejmuje ją.
Oto winieta: http://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html
Istnieje również webminar: https://www.youtube.com/watch?v=BU2gjoLPfDc
Liblinear jest dobry, ale łatwiej było mi zacząć korzystać z glmnet. Glmnet zawiera funkcję, która dokonuje weryfikacji krzyżowej i wybiera dla ciebie parametr regularyzacji na podstawie różnych wskaźników, takich jak AUC.
Jeśli chodzi o teorię, czytałbym artykuł tibshiarini dotyczący lasso (regularyzacja L1) i rozdział dotyczący elementów uczenia statystycznego. http://statweb.stanford.edu/~tibs/lasso/lasso.pdf
O utracie dziennika chodzi tylko o ocenę modeli. To nie jest funkcja straty dla dopasowania modelu.
źródło