Als ich die Anzahl der Bäume erhöhe in scikit lernen ist GradientBoostingRegressor
, erhalte ich negative Prognosen, auch wenn es in meiner Ausbildung oder Testsatz keine negativen Werte sind. Ich habe ungefähr 10 Funktionen, von denen die meisten binär sind.
Einige der Parameter, die ich eingestellt habe, waren:
- die Anzahl der Bäume / Iterationen;
- Lerntiefe;
- und Lernrate.
Der Prozentsatz der negativen Werte schien bei ~ 2% maximal zu sein. Die Lerntiefe von 1 (Stümpfe) schien den größten Prozentsatz der negativen Werte zu haben. Dieser Prozentsatz schien auch mit mehr Bäumen und einer geringeren Lernrate zuzunehmen. Der Datensatz stammt von einem der Kaggle-Spielplatzwettbewerbe.
Mein Code ist so etwas wie:
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)