À mesure que j'augmente le nombre d'arbres dans scikit learn 's GradientBoostingRegressor
, j'obtiens de plus en plus de prédictions négatives, même s'il n'y a pas de valeurs négatives dans mon ensemble d'entraînement ou de test. J'ai environ 10 fonctionnalités, dont la plupart sont binaires.
Certains des paramètres que je réglais étaient:
- le nombre d'arbres / itérations;
- profondeur d'apprentissage;
- et le taux d'apprentissage.
Le pourcentage de valeurs négatives semblait max à ~ 2%. La profondeur d'apprentissage de 1 (moignons) semblait avoir le plus grand% de valeurs négatives. Ce pourcentage semble également augmenter avec plus d'arbres et un taux d'apprentissage plus faible. L'ensemble de données provient de l'une des compétitions de terrains de jeux de kaggle.
Mon code est quelque chose comme:
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)