Sto cercando di formare un modello di aumento gradiente su 50.000 esempi con 100 funzioni numeriche. XGBClassifier
gestisce 500 alberi entro 43 secondi sulla mia macchina, mentre GradientBoostingClassifier
gestisce solo 10 alberi (!) in 1 minuto e 2 secondi :( Non mi sono preoccupato di provare a far crescere 500 alberi perché ci vorranno ore. Sto usando lo stesso learning_rate
e le max_depth
impostazioni , vedi sotto.
Cosa rende XGBoost molto più veloce? Usa qualche nuova implementazione per aumentare il gradiente che sklearn non conosce? O è "tagliare gli angoli" e far crescere alberi meno profondi?
ps Sono a conoscenza di questa discussione: https://www.kaggle.com/c/higgs-boson/forums/t/10335/xgboost-post-competition-survey ma non ho trovato la risposta lì ...
XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1,
gamma=0, learning_rate=0.05, max_delta_step=0, max_depth=10,
min_child_weight=1, missing=None, n_estimators=500, nthread=-1,
objective='binary:logistic', reg_alpha=0, reg_lambda=1,
scale_pos_weight=1, seed=0, silent=True, subsample=1)
GradientBoostingClassifier(init=None, learning_rate=0.05, loss='deviance',
max_depth=10, max_features=None, max_leaf_nodes=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=10,
presort='auto', random_state=None, subsample=1.0, verbose=0,
warm_start=False)