我正在尝试用 100 个数字特征训练超过 50k 个示例的梯度提升模型。XGBClassifier
在我的机器上在 43 秒内处理 500 棵树,而GradientBoostingClassifier
在 1 分 2 秒内只处理 10 棵树(!):( 我没有费心尝试种植 500 棵树,因为这需要几个小时。我正在使用相同learning_rate
的max_depth
设置, 见下文。
是什么让 XGBoost 如此之快?它是否使用了一些 sklearn 家伙不知道的新的梯度提升实现?还是“偷工减料”,种植较浅的树木?
ps 我知道这个讨论:https ://www.kaggle.com/c/higgs-boson/forums/t/10335/xgboost-post-competition-survey但无法在那里得到答案......
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)