新闻  |   论坛  |   博客  |   在线研讨会
XGBoost超参数调优指南(2)
数据派THU | 2023-06-23 16:08:06    阅读:699   发布文章

4、subsample和colsample_bytree


子抽样subsample它将更多的随机性引入到训练中,从而有助于对抗过拟合。


Subsample =0.7意味着集合中的每个决策树将在随机选择的70%可用数据上进行训练。值1.0表示将使用所有行(不进行子抽样)。


与subsample类似,也有colsample_bytree。顾名思义,colsample_bytree控制每个决策树将使用的特征的比例。Colsample_bytree =0.8使每个树使用每个树中随机80%的可用特征(列)。


调整这两个参数可以控制偏差和方差之间的权衡。使用较小的值降低了树之间的相关性,增加了集合中的多样性,有助于提高泛化和减少过拟合。


但是它们可能会引入更多的噪声,增加模型的偏差。而使用较大的值会增加树之间的相关性,降低多样性并可能导致过拟合。


5、max_depth


最大深度max_depth控制决策树在训练过程中可能达到的最大层次数。


图片


更深的树可以捕获特征之间更复杂的相互作用。但是更深的树也有更高的过拟合风险,因为它们可以记住训练数据中的噪声或不相关的模式。为了控制这种复杂性,可以限制max_depth,从而生成更浅、更简单的树,并捕获更通用的模式。


Max_depth数值可以很好地平衡了复杂性和泛化。


6、7、alpha,lambda


这两个参数一起说是因为alpha (L1)和lambda (L2)是两个帮助过拟合的正则化参数。


与其他正则化参数的区别在于,它们可以将不重要或不重要的特征的权重缩小到0(特别是alpha),从而获得具有更少特征的模型,从而降低复杂性。


alpha和lambda的效果可能受到max_depth、subsample和colsample_bytree等其他参数的影响。更高的alpha或lambda值可能需要调整其他参数来补偿增加的正则化。例如,较高的alpha值可能受益于较大的subsample值,因为这样可以保持模型多样性并防止欠拟合。


8、gamma


如果你读过XGBoost文档,它说gamma是:


在树的叶节点上进行进一步分区所需的最小损失减少。


英文原文:the minimum loss reduction required to make a further partition on a leaf node of the tree.


我觉得除了写这句话的人,其他人都看不懂。让我们看看它到底是什么,下面是一个两层决策树:


图片


为了证明通过拆分叶节点向树中添加更多层是合理的,XGBoost应该计算出该操作能够显著降低损失函数。


但“显著是多少呢?”这就是gamma——它作为一个阈值来决定一个叶节点是否应该进一步分割。


如果损失函数的减少(通常称为增益)在潜在分裂后小于选择的伽马,则不执行分裂。这意味着叶节点将保持不变,并且树不会从该点开始生长。


所以调优的目标是找到导致损失函数最大减少的最佳分割,这意味着改进的模型性能。


9、min_child_weight


XGBoost从具有单个根节点的单个决策树开始初始训练过程。该节点包含所有训练实例(行)。然后随着 XGBoost 选择潜在的特征和分割标准最大程度地减少损失,更深的节点将包含越来越少的实例。


图片


如果让XGBoost任意运行,树可能会长到最后节点中只有几个无关紧要的实例。这种情况是非常不可取的,因为这正是过度拟合的定义。


所以XGBoost为每个节点中继续分割的最小实例数设置一个阈值。通过对节点中的所有实例进行加权,并找到权重的总和,如果这个最终权重小于min_child_weight,则分裂停止,节点成为叶节点。


上面解释是对整个过程的最简化的版本,因为我们主要介绍他的概念。


总结


以上就是我们对这 10个重要的超参数的解释,如果你想更深入的了解仍有很多东西需要学习。所以建议给ChatGPT以下两个提示:


1) Explain the {parameter_name} XGBoost parameter in detail and how to choose values for it wisely.
 
2) Describe how {parameter_name} fits into the step-by-step tree-building process of XGBoost.

它肯定比我讲的明白,对吧。


最后如果你也用optuna进行调优,请参考以下的GIST:


https://gist.github.com/BexTuychiev/823df08d2e3760538e9b931d38439a68


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客