Klasyfikacja ze wzmocnieniem gradientowym: Jak zachować prognozę w [0,1]

17

Pytanie

Staram się zrozumieć, w jaki sposób prognoza jest utrzymywana w przedziale [0,1] podczas klasyfikacji binarnej z funkcją wzmocnienia gradientu.

Załóżmy, że pracujemy nad problemem klasyfikacji binarnej, a naszą funkcją celu jest utrata logów, yilog(Hm(xi))+(1yi)log(1Hm(xi)) , gdzie y jest zmienną docelową a jest naszym obecnym modelem.{0,1}H

Kiedy trenujesz kolejnego słabego ucznia tak aby nasz nowy model to H_i = H_ {i-1} + h_i , jaki jest mechanizm, który powinien utrzymywać H_i \ w [0,1] ? A może bardziej trafne pytanie, czy istnieje taki mechanizm?hiHi=Hi1+hiHi[0,1]


Więcej informacji o tym, co robię

Próbuję wdrożyć wzmocnienie gradientu, używając drzew regresji. Aby tego uniknąć, należy pomnożyć hi przez współczynnik c[0,cmax] , tak że H+cmaxh nie spada poniżej zera lub powyżej jeden i wybieram do tym zakresie, który minimalizuje funkcję strat.

To pociąga za sobą następujący problem: po kilku rundach mam jeden punkt, który jest doskonale sklasyfikowany, a najlepszy dostępny podział, aby przesunąć klasyfikator w kierunku gradientu, chce przesunąć ten punkt ponad jeden, czego upewniam się, że nie nastąpi ustawienie . Zatem cała następna iteracja wybierze ten sam podział i to samo .c=0c=0

Próbowałem popularnych praktyk regularyzacji

  • Zmniejszenie szybkości uczenia się przez pomnożenie przez . To tylko opóźnia problem.cμ=0.01
  • Podpróbkowanie przestrzeni cech, ale niektóre punkty są bardzo łatwe do sklasyfikowania, zaznaczają prawie każde pole w polu „czy to jest pozytywne?” forma i prawie każdy „dobry podział” pokazuje takie zachowanie.

Myślę, że to nie jest problem z parametrami i powinien być bardziej rozsądny sposób, aby to naprawić. Nie odrzucam możliwości zepsucia mojej implementacji, ale nie znalazłem nic, co mogłoby rozwiązać ten problem.

To, czym manipulujemy, w kontekście utraty logistyki, powinno być prawdopodobieństwem, więc jak tego uniknąć?


Moją intuicją byłoby umieszczenie modelu, który budujemy, , w funkcji sigmoidalnej, tak że jest on ograniczony do , i myślę, że to by działało, ale chcę wiedzieć, czy istnieją inne rozwiązania. Ponieważ wydaje się, że zwiększanie gradientu jest z powodzeniem stosowane w zadaniach klasyfikacji, powinno istnieć „prawidłowe” (tj. Z uzasadnieniem) rozwiązanie.H[0,1]

Mruga
źródło
Możesz wymagać, aby był multiplikatywny, ponieważ ln ( H ) zachowuje się addytywnie z innymi Twoimi ekspertami. Hln(H)
Alex R.

Odpowiedzi:

22

Lubię o tym myśleć analogicznie do przypadku modeli liniowych i ich rozszerzenia na GLM (uogólnione modele liniowe).

W modelu liniowym dopasowujemy funkcję liniową, aby przewidzieć naszą odpowiedź

y^=β0+β1x1+βnxn

Aby uogólnić na inne sytuacje, wprowadzamy funkcję link, która przekształca liniową część modelu na skalę odpowiedzi (technicznie jest to link odwrotny, ale myślę, że łatwiej jest o tym myśleć, przekształcając predyktor liniowy w odpowiedź, niż przekształcenie odpowiedzi w predyktor liniowy).

Na przykład model logistyczny używa funkcji sigmoid (lub logit)

y^=11+exp((β0+β1x1+βnxn))

a regresja Poissona wykorzystuje funkcję wykładniczą

y^=exp(β0+β1x1+βnxn)

Aby skonstruować analogię ze wzmocnieniem gradientu, zastępujemy liniową część tych modeli sumą wzmocnionych drzew. Na przykład przypadek gaussowski (analogiczny do regresji liniowej) staje się dobrze znany

y^=ihi

gdzie jest naszą sekwencją słabych uczniów. Przypadek dwumianowy jest analogiczny do regresji logistycznej (jak zauważyłeś w odpowiedzi)hi

y^=11+exp(ihi)

a wzmocnienie Poissona jest analogiczne do regresji Poissona

y^=exp(ihi)

Pozostaje pytanie, w jaki sposób można dopasować te wzmocnione modele, gdy włączona jest funkcja link? W przypadku gaussowskim, gdzie link jest funkcją tożsamości, często słyszana mantra dopasowania słabych uczniów do resztek obecnego modelu roboczego działa, ale tak naprawdę nie uogólnia to na bardziej skomplikowane modele. Sztuką jest napisanie funkcji straty, która jest minimalizowana jako funkcja liniowej części modelu (tj. Części formuły GLM).iβixi

Na przykład utrata dwumianowa zwykle występuje jako

iyilog(pi)+(1yi)log(1pi)

pipiLiLi

iyiLilog(1+exp(Li))

L

Dopiero na samym końcu, kiedy chcemy stworzyć prognozy dla użytkownika, zastosujemy funkcję link do końcowej sekwencji słabych uczniów, aby umieścić prognozy na tej samej skali co odpowiedź. Dopasowując model, cały czas pracujemy wewnętrznie w skali liniowej.

Matthew Drury
źródło
2
r(,)i(yilog11+er+(1yi)log(111+er))r
@ matthew-drury Czy mógłbyś dodać trochę światła w wielomianowej części klasy K tego samego algorytmu, w której podobny pomysł został rozszerzony, aby nad nim zadziałać?
MixCoded
6

Po niektórych badaniach wydaje się, że moja intuicja i komentarz Alexa R. mają rację.

[0,1]HHR

11+eH[0,1]
H

Zasugerowano to w artykule Addytywna regresja logistyczna: statystyczny pogląd na zwiększenie przez Friedmana, Hastie i Tibshirani, aby zbudować LogitBoost (Wikipedia) , adaptację AdaBoost (Wikipedia) do utraty logistycznej.

Mówiąc bardzo prosto, jeśli możliwe jest przejście od regresji liniowej do regresji logistycznej przez dodanie sigmoidu, to działa również na konwersję wzmocnienia regresji na zwiększenie klasyfikacji.

Mruga
źródło