当前位置: 首页>>机器学习>>正文


XGBoost调参注意事项

qingchuan 机器学习, 算法&结构 , , 去评论

机器学习中参数调整是门艺术,模型的最佳参数可能取决于许多场景,所以很难为此做一个全面的指导。本文尝试为xgboost中的参数调整提供一些说明。

xgboost

了解偏差-方差权衡(Bias-Variance Tradeoff)

在机器学习或统计课程中,偏差方差权衡可能是最重要的概念之一。当我们允许模型变得更加复杂(例如,更大的深度)时,模型具有更好的适应训练数据的能力,从而使模型偏差较小。然而,这种复杂的模型需要更多的数据来做训练。

xgboost中的大多数参数是关于偏差方差权衡的。最好的模型应该在模型的复杂性及模型的预测能力上做细致的权衡(注:模型的复杂度越高,对训练数据的拟合能力就越强,其泛化或者预测能力可能就越差)。

[xgboost参数文档]介绍了每个参数对模型造成的影响,可以帮助您在复杂的模型和简单的模型之间自由调整。

控制过拟合

当您观察到较高的训练准确率,但测试精度较低时,很可能遇到了过拟合问题。

通常可以通过两种方式来控制xgboost中的过拟合

  • 第一种方式是直接控制模型的复杂性
    • 这包括max_depthmin_child_weightgamma
  • 第二种方法是增加随机性,使训练对噪声更加鲁棒
    • 这包括subsamplecolsample_bytree
    • 你还可以减少步骤eta,但是当你这样做时,需要记住增加num_round

处理不平衡数据集

对于常见情况,例如广告点击日志,数据集非常不平衡。这会影响xgboost模式的训练,有两种方法可以改进。

  • 如果你只关心您的预测的排名顺序(AUC)
    • 通过scale_pos_weight平衡正负权重
    • 使用AUC进行评估
  • 如果你关心预测正确的概率
    • 在这种情况下,您无法重新平衡数据集
    • 在这种情况下,将参数max_delta_step设置为有限数量(例如1)将有助于收敛

英文版:http://xgboost.readthedocs.io/en/latest/how_to/param_tuning.html

本文由《纯净的天空》出品。文章地址: https://vimsky.com/article/3363.html,未经允许,请勿转载。