Я пытаюсь обучить модели повышения градиента более чем на 50 тыс. Примеров с 100 числовыми функциями. XGBClassifier
обрабатывает 500 деревьев в течение 43 секунд на моей машине, в то время как GradientBoostingClassifier
обрабатывает только 10 деревьев (!) за 1 минуту и 2 секунды :( Я не стал пытаться вырастить 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)