XGboost的RandomizedSearchCV,不平衡数据集和最佳迭代次数(n_iter)

时间:2019-05-23 07:17:15

标签: python machine-learning scikit-learn cross-validation xgboost

我正在研究不平衡的(9:1)二进制分类问题,并且想使用Xgboost和RandomizedSearchCV。

如代码中所示,有472,50,000(5 * 7 * 5 * 5 * 5 * 5 * 6 * 4 * 9 * 10)个超参数组合。简历的10倍时,上述数字变成了472,500,000(472.50万)

通常建议用于随机搜索cv应占总组合的5-10%。在472.5万的5-10%会是一个很高的数字。

所以我的问题是,要采取什么好的“ n_iter”值,以便在合理的时间/计算效率内获得好的结果?

关于潜在查询的注意事项:通常不调整“ scale_pos_weight”,“ max_delta_step”之类的一些参数,但由于数据不平衡,我将它们包括在内。

谢谢!

param_dist= {
              "max_depth": [2,3,4,5,6],
              "learning_rate":[0.01,0.02,0.03,0.05,0.1,0.3,0.5],
    "min_child_weight":[1,2,3,4,5],
              "subsample":[i/10.0 for i in range(6,10)],
 "colsample_bytree":[i/10.0 for i in range(6,10)],
               "reg_alpha":[1e-5, 1e-2, 0.1, 1, 100],
              "gamma":[i/10.0 for i in range(0,5)],
    "n_estimators":[100,500,700,1000],
    'scale_pos_weight':[1,2,3,4,5,6,7,8,9],
    'max_delta_step': range(1,10,1)

              }

1 个答案:

答案 0 :(得分:1)

添加评论作为答案。

您的问题取决于平均训练模型花费的时间以及多少对您来说是合理的。

这是随机搜索。因此,即使您采用90%的组合,也无法保证找到最佳参数。最佳参数也有可能是您选择的10种组合。建议您阅读有关参数的信息,然后尝试根据您的数据集和功能修复其中一些参数。

首先,您不必调整scale_pos_weight。您必须将其修复为9,因为您有9:1的不平衡数据集。

诸如学习率之类的参数也可能不依赖于其他参数。您可以将它们排除在外,并分别进行调整。