Saya mencoba untuk melatih model peningkatan gradien lebih dari 50k contoh dengan 100 fitur numerik. XGBClassifier
menangani 500 pohon dalam waktu 43 detik pada mesin saya, sementara GradientBoostingClassifier
hanya menangani 10 pohon (!) dalam 1 menit dan 2 detik :( Saya tidak repot-repot mencoba menumbuhkan 500 pohon karena akan memakan waktu berjam-jam. Saya menggunakan pengaturan learning_rate
dan max_depth
pengaturan yang sama , Lihat di bawah.
Apa yang membuat XGBoost jauh lebih cepat? Apakah itu menggunakan beberapa implementasi baru untuk meningkatkan gradien yang tidak diketahui orang-orang sklearn? Atau apakah itu "memotong sudut" dan menumbuhkan pohon dangkal?
ps Saya mengetahui diskusi ini: https://www.kaggle.com/c/higgs-boson/forums/t/10335/xgboost-post-competition-survey tetapi tidak bisa mendapatkan jawabannya di sana ...
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)