万字总结XGBoost原理、核心参数以及调优思路(下篇)
在数据科学领域,XGBoost以其卓越的性能和灵活性,成为了众多机器学习算法中的佼佼者。作为一种梯度提升框架,XGBoost通过构建决策树的集合来最小化一个可微分的损失函数,广泛应用于分类、回归等任务。本文将万字总结XGBoost的深层原理、关键核心参数,以及实用的调优策略。从算法基础到模型部署,我们将深入探讨XGBoost的每一个环节,为读者提供全面的指导和深入的洞见。无论您是希望提升模型性能的数据科学家,还是对XGBoost感兴趣的学习者,本文都将是您理解和掌握这一强大工具的宝贵资源。让我们启程,深入探索XGBoost的奥秘。
本篇是关于xgboost的下篇,将侧重xgboost模型的优化,xgboost各类参数详解见上篇:
万字总结XGBoost原理、核心参数以及调优思路(上篇)
文章目录
三、XGBoost的参数空间与超参数优化
1 确定XGBoost优化的参数空间
与之前介绍过的随机森林、gbdt一样,对xgboost的调参同样可以分为两步,首先确定不同参数对模型的影响力大小,确定调参范围,然后对待调参的参数进行进一步探索,初步确定有效的调参空间,再行调参。
注意:
- 在随机森林中影响力巨大的max_depth在XGBoost中默认值为6,比GBDT中的调参空间略大(GBDT中默认为3),但还是没有太多的空间,因此影响力不足,并且max_depth很多时候都是往大了调。
- 在GBDT中影响力巨大的max_features对标XGBoost中的colsample_by*系列参数,原则上来说影响力应该非常大,但由于三个参数共同作用,调参难度较高,在只有1个参数作用时效果略逊于max_features。
- 精剪枝参数往往不会对模型有太大的影响,但在XGBoost当中,min_child_weight与结构分数的计算略微相关,因此有时候会展现出较大的影响力。故而将这个精剪枝参数设置为4星参数。
- 类似于objective这样影响整体学习能力的参数一般都有较大的影响力,但XGBoost当中每种任务可选的损失函数不多,因此一般损失函数不在调参范围之内,故认为该参数的影响力不明显。
- XGBoost的初始化分数只能是数字,因此当迭代次数足够多、数据量足够大时,起点的影响会越来越小。因此一般不会对base_score进行调参。
调参时的参数选择(重点!!!)
-
num_boost_round和eta,重点中的重点,必须调。
-
colsample_by*中选一个调,一般选bytree的多,非要选两个就再选一个bynode(一般不会同时选两个,过于随机会造成模型不稳定,严重影响整体模型的学习能力),gamma和lambda选一个调,一般选lambda。(搜索的时候如果gamma进行搜索了,lambda和min_child_weight最好也进行搜索)
-
booster一般不调,如果出现验证过拟合情况了,可以考虑使用。
-
min_child_weight和max_depth一般要参与调。
-
数据量很大的时候subsamples也要调,一般可以不用调,调得话最好也是0.5以上,样本太少建模不稳定。
-
计算资源足够的时候可以都调。
待调参参数参数空间的确定:
欢迎关注公众号:待调参参数参数空间的确定