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

Posted

技术标签:

【中文标题】用于 XGboost、不平衡数据集和最佳迭代次数 (n_iter) 的 RandomizedSearchCV【英文标题】:RandomizedSearchCV for XGboost, imbalanced dataset and optimum iterations count (n_iter) 【发布时间】:2019-10-09 17:11:47 【问题描述】:

我正在研究一个不平衡 (9:1) 的二元分类问题,并希望使用 Xgboost 和 RandomizedSearchCV。

如代码所示,有 472,50,000 (5*7*5*5*5*5*6*4*9*10) 种超参数组合。用 10 倍 CV,上述数字变为 472,500,000(472.5 万)

它通常建议随机搜索 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)

              

【问题讨论】:

您是否为xgboost 培训设置了early_stopping_rounds?您的问题取决于平均训练模型需要多长时间,以及多少时间对您来说是合理的。 添加,理想情况下你不必调整scale_pos_weight。您必须将其设置为9 感谢 Nihal- 指出 scale_pos_weight,是的,它应该是 9。 @NihalSangeeth 提前停止我还没有设置,但是我会这样做。模型训练时间是一个限制,但不是很大,因为我想要尽可能高的召回率和精度,我可以耐心地制定这个模型。你建议我应该为 n_iter 最佳值做些什么,因为我更喜欢随着时间的推移进行正确的分类,并且还建议当时间是一个约束时 n_iter 应该做什么。有没有办法在有限的时间内实现相当好的 n_iter 数。非常感谢您的帮助,谢谢。 这是一个随机搜索。因此,即使您采用 90% 的组合,也不能保证找到最佳参数。最佳参数也有可能出现在您选择的 10 种组合中。我建议阅读参数并尝试根据您的数据集和功能修复其中一些参数。 【参考方案1】:

添加 cmets 作为答案。

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

这是一个随机搜索。因此,即使您采用 90% 的组合,也不能保证找到最佳参数。最佳参数也有可能出现在您选择的 10 种组合中。我建议阅读参数并尝试根据您的数据集和功能修复其中一些参数。

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

像学习率这样的参数也可能不依赖于其他参数。您可以将它们排除在外并单独调整它们。

【讨论】:

scale_pos_weight 也可以使用 class_ratios、class_ratios 的平方根和 1 进行调整。修复该参数并不总是很好。

以上是关于用于 XGboost、不平衡数据集和最佳迭代次数 (n_iter) 的 RandomizedSearchCV的主要内容,如果未能解决你的问题,请参考以下文章

如何从 xgboost 中的最佳迭代中保存模型?

XGBoost 最佳迭代

Xgboost 处理不平衡的分类数据

使用 xgboost 处理极度不平衡

不平衡的训练数据集和回归模型

xgboost 不平衡样本的输出结果怎样划分