Dlaczego regresja wzmocnienia gradientu przewiduje wartości ujemne, gdy w moim zestawie treningowym nie ma ujemnych wartości y?

8

Jak zwiększyć liczbę drzew w scikit nauczyć „s GradientBoostingRegressor, mam więcej negatywnych prognoz, choć nie ma wartości ujemne w moim szkolenia lub testowania zestawu. Mam około 10 funkcji, z których większość jest binarna.

Niektóre parametry, które tuningowałem to:

  • liczba drzew / iteracji;
  • głębokość uczenia się;
  • i współczynnik uczenia się.

Procent wartości ujemnych wydawał się maksymalny przy ~ 2%. Wydaje się, że głębokość uczenia się 1 (pniaki) ma największy% wartości ujemnych. Odsetek ten również wydawał się zwiększać wraz z większą liczbą drzew i mniejszym wskaźnikiem nauki. Zestaw danych pochodzi z jednego z zawodów kaggle na placu zabaw.

Mój kod przypomina:

from sklearn.ensemble import GradientBoostingRegressor

X_train, X_test, y_train, y_test = train_test_split(X, y)

reg = GradientBoostingRegressor(n_estimators=8000, max_depth=1, loss = 'ls', learning_rate = .01)

reg.fit(X_train, y_train)

ypred = reg.predict(X_test)
użytkownik2592989
źródło
1
Czy jest jakaś szansa na powtarzalny przykład z kodem i danymi?
Spacedman
2
która to konkurencja na placu zabaw?
TheAxeR

Odpowiedzi:

8

Zasadniczo modele regresji (dowolne) mogą zachowywać się w sposób arbitralny poza domeną obejmującą próbki szkoleniowe. W szczególności mogą swobodnie zakładać liniowość modelowanej funkcji, więc jeśli na przykład trenujesz model regresji z punktami:

X     Y
10    0
20    1
30    2

uzasadnione jest zbudowanie modelu f(x) = x/10-1, który x<10zwraca wartości ujemne.

To samo dotyczy „pomiędzy” twoimi punktami danych, zawsze jest możliwe, że z powodu założonej znajomości funkcji (które można modelować za pomocą konkretnej metody) otrzymasz wartości „z twoich próbek treningowych”.

Możesz pomyśleć o tym w inny sposób - „co jest takiego specjalnego w wartościach ujemnych?”, Dlaczego uważasz, że istnienie wartości ujemnych jest dziwne (jeśli nie jest zawarte w zestawie szkoleniowym), podczas gdy nie niepokoi Cię istnienie opcji powiedzmy. .. wartość 2131.23? O ile nie zostanie opracowany w taki sposób, żaden model nie będzie traktował wartości ujemnych „innych” niż wartości dodatnie. To tylko naturalny element rzeczywistych wartości, które można osiągnąć jak każdą inną wartość.

lejlot
źródło
Jeśli chodzi o zestaw pytań, myślę, że czysto ujemne wartości są łatwiejsze do zidentyfikowania jako anomalie, ponieważ mają przed sobą znak „-” lub wyraźnie poniżej zera na wykresach. Równie łatwo można zadać pytanie „Dlaczego regresja wzmocnienia gradientowego przewiduje wcześniej niewidoczne wartości?”. Może mógłbyś spróbować to rozwinąć? Z pewnością uzyskasz ode mnie głos.
josh
@lejlot - Ogólnie rzecz biorąc, to nie jest prawda. Modele regresji z aktywacjami logistycznymi lub tanh często mają zagwarantowane wyniki w pewnych granicach.
user48956
@ user48956 stwierdza, że ​​odpowiedź „może zachowywać się w dowolny sposób”, nie twierdzę, że nie możesz wymusić pewnych ograniczeń, oczywiście możesz - odpowiedz tylko stwierdza, że ​​nie ma ograniczenia „zależnego od danych” (chyba że masz bardzo konkretny model, który ma to wbudowana konstrukcja) - jeśli dodasz to ręcznie jako ekspert - to zależy od Ciebie.
lejlot
5

Pamiętaj, że GradientBoostingRegressor(przy założeniu kwadratowej funkcji utraty błędów) sukcesywnie dopasowuje drzewa regresji do resztek poprzedniego etapu. Teraz, jeśli drzewo w etapie i przewiduje wartość większą niż zmienna docelowa dla konkretnego przykładu treningu, reszta etapu i dla tego przykładu będzie ujemna, a zatem drzewo regresji na etapie i + 1 będzie miało ujemne wartości docelowe (które są pozostałościami z etapu i). Ponieważ algorytm zwiększający sumuje wszystkie te drzewa, aby dokonać ostatecznej prognozy, wierzę, że to może wyjaśnić, dlaczego możesz skończyć z negatywnymi prognozami, nawet jeśli wszystkie wartości docelowe w zestawie treningowym były dodatnie, szczególnie, jak wspomniałeś, że dzieje się to więcej często, gdy zwiększa się liczbę drzew.

Milad Shahidi
źródło
To jest poprawna odpowiedź.
hahdawg