我有一台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实例上部署它之外,还有什么快速解决方案可以提高速度吗?
提前致谢。
答案 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。