在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
XGB调参,实战经验总结! XGBoost(或eXtreme Gradient Boosting)很强大,它在太多的数据科学竞赛中被证明是有用的。 调参是一个需要经验的活,如果蛮干的话事倍功半:譬如要处理大型数据集,要对5个不同的参数进行了朴素的网格搜索,并且每个参数都有5个可能的值,那么您将有5的5次方= 3,125次迭代。如果一次迭代要花10分钟才能运行,那么在获取到靠谱参数之前,您将有21天以上的等待时间。 注:在这里假设您首先正确完成了特征工程。特别是对于类别特征,因为XGBoost不擅长处理类别特征。 1. Train-test训练集和测试集拆分,评估指标和提前停止[early-stoping]在进行参数优化之前,首先要花一些时间来设计模型的诊断框架。 XGBoost Python api提供了一种通过增加树的个数来评估增加的性能的方法。它使用两个参数:“eval_set”(通常是训练集和测试集)以及关联的“eval_metric”来衡量这些评估集上的误差。 训练集合测试集误差,绘制结果出来一般如下图所示: 在上图所示的分类误差图上:我们的模型持续学习直到350次迭代,然后误差非常缓慢地减小。也就是说,可以考虑砍掉350之后的树,节省以后的参数调整时间。 如果您不使用scikit-learn API,而是使用纯XGBoost Python API,那么提前停止参数,可帮助您自动减少树的数量。 2.具体如何调参?当还没有运行任何模型时从哪里开始?
把上面这些主要参数调好,模型效果通常就很不错了! 3.其他说明为了让模型效果及性能[运行速度]更好,除了上面比较常规的调参之外,根据特征重要性做特征选择也很重要! xgboost提供了特征重要性统计函数:plot_importance(),其用法如下:
运行得到的特征重要性图像如下: 注:根据其在输入数组中的索引,plot_importance自动将特征被命名为f0-f7。可以自行对应到具体的特征名。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13