关于在Python中加速XGBoost Fitting的建议

时间:2017-07-05 09:50:49

标签: python machine-learning xgboost

我有一台i7 16GB Mac,我想在XGBoost上应用CV网格搜索。数据集非常大,形状为13密耳乘50立方厘米。这是我的代码:

cv_params = {'max_depth': [3], 'min_child_weight': [1]}
ind_params = {'learning_rate': 0.1, 'n_estimators': 1000, 'seed': 0, 'subsample': 0.8, 'colsample_bytree': 0.8,
             'objective': 'binary:logistic'}
optimized_GBM = GridSearchCV(xgb.XGBClassifier(**ind_params),
                            cv_params,
                            scoring = 'accuracy', cv = 5, n_jobs = -1)

train_features = train.drop('reordered', axis=1)
train_y = train['reordered']

optimized_GBM.fit(train_features, train_y) 

计算上,有没有办法提高数据的拟合速度?我一直在等几个小时。似乎如果我尝试多个级别的cv_params,那么拟合可能需要几天我没有。除了减少维度或在AWS实例上部署它之外,还有什么快速解决方案可以提高速度吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果你有 GPU,你可以将参数添加到模型中:tree_method='gpu_hist'

另外,在不减少 n_estimators 的情况下,可以添加两个参数:

optimized_GBM.fit(train_features, train_y, 
                   eval_set=[(train_features,train_y),(test_features,test_y)],
                   early_stopping_rounds=5)

其中 5 表示在最近 5 个连续步骤中没有改进;您可以为 train_features 设置任何您想要的值。因此,如果没有改进,拟合将停止并且并非所有 n 估计量都将被消耗。不幸的是,据我所知,这不适用于 GridsearchCV。