我正在处理一个不平衡(9:1)的二进制分类问题,并希望使用Xgboost & RandomizedSearchCV。
如代码所示,有472,50,000 (5*7*5*5*5*5*6*4*9*10)超参数组合。通过10倍的CV,上述数字为4725万(4725万)。
它通常建议随机搜索5-10%的总组合应采取。472.5万人中的5-10%将是一个很高的数字.
那么,我的问题是,会是一个好的'n_iter‘值,这样才能在合理的时间/计算效率内获得好的结果?
注意一个潜在的查询:一些参数,如‘scale_pos_ are’,'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)
}
发布于 2019-05-23 08:41:21
添加注释作为回答。
你的问题取决于你平均需要多长时间来训练这个模型,对你来说多少钱是合理的。
这是随机搜索。因此,即使采用90%的组合,也不能保证找到最优参数。也有一个机会,最优的参数可能是在10个组合你选择。我建议阅读有关参数,并尝试修复一些取决于您的数据集和功能。
首先,你不需要调整scale_pos_weight。您必须将其修正为9,因为您有一个9:1不平衡的数据集。
另外,像学习率这样的参数可能不依赖于其他参数。你可以把它们排除在外,然后单独调整它们。
https://stackoverflow.com/questions/56269941
复制相似问题