XGBoost 参数的超调过程如何实现自动化?

数据挖掘 r 优化 xgboost 超参数 加权数据
2021-10-14 04:39:08

我正在使用xgboost具有极端类不平衡的数据来训练模型。这里参考后。

在执行网格搜索和一些手动设置后,我发现以下参数最适合我:

weight <- as.numeric(labels) * nrow(test) / length(labels)
upscale <- sum(weight * (labels == 1.0))

xgb_params = list(
  objective = 'binary:logistic',                                               
  eta = 0.1,                                                                  
  max_depth = 4,                                                               
  eval_metric = 'auc',                                                         
  max_delta_step = 10,
  scale_pos_weight = upscale
)

如何xgboost为最佳 AUC 自动设置最佳超参数的过程?请注意,其中一些参数不受caret实现的支持,xgboost但对于我必须设计的模型非常重要。

1个回答

一般来说,如果你想自动微调模型的超参数,最好使用经过良好测试的包,例如 caret 或 MLR。

我已经广泛使用了 caret 包。是插入符号支持的参数的参考,用于调整 xgboost 模型。

要使用插入符号自动选择参数,请执行以下操作:

  1. 首先定义您希望插入符号搜索的每个参数的值范围。在调整网格中定义它。
  2. 在指定要优化的度量(例如准确性或 Kappa 统计量等)后,使用插入符号开始模型训练。
  3. 绘制或打印各种参数值的性能比较,如果需要,可以改进和重复。

请参阅此处的插入符号指南以获取有关使用它的分步说明。

对于处理类不平衡,我从我的经验中发现,调整权重不如对多数类进行采样不足和对少数类进行过度采样,或者两者兼而有之。然而,这一切都取决于可用数据的大小和手头的情况。

如果您需要调整插入符号不支持的一些参数,那么您可以编写自己的迭代循环来训练和测试该参数的不同值的模型,然后选择一个效果最好的。我认为大多数真正相关的参数已经包含在插入符号中。

您需要调整这些参数,以防人口本身随时间变化。或者,收集数据的方法及其准确性可能会发生变化,这可能会导致性能下降。您可以通过比较模型在当前数据集与 6 个月前数据集上的性能来运行一个简单的检查。如果性能相似,那么您将来可能不需要更新模型。