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)
machine-learning
python
algorithms
scikit-learn
kaggle
użytkownik2592989
źródło
źródło
Odpowiedzi:
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:
uzasadnione jest zbudowanie modelu
f(x) = x/10-1
, któryx<10
zwraca 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ść.
źródło
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.źródło