XGBoost中正则化的九个超参数

  • 电脑网络维修
  • 2024-11-15

正则化是一种弱小的技术,经过防止过拟合来提高模型性能。本文将探求各种XGBoost中的正则化方法及其长处。

为什么正则化在XGBoost中很关键?

XGBoost是一种以其在各种机器学习义务中的效率和性能而知名的弱小算法。像任何其余复杂模型一样,它或许会过拟合,特意是在解决噪声数据或过多特色时。XGBoost中的正则化有助于经过以下形式缓解这一疑问:

上方咱们引见在XGBoost中成功正则化的方法

增加预计器的数量可以防止模型变得过于复杂。两个关键超超参数包括:

设置较低的树的数量可以协助防止模型学习训练数据中的噪声。n_estimators的高值会造成过拟合,而低值或许造成欠拟合。

这种技术在验证集上的性能中止改善时中止训练环节,防止过拟合。

上图为没有早停的模型目的

上方的模型中,即使损失不再降低,训练也会继续。相比之下,经常使用early_stopping_rounds=10,当延续10轮损失没有改善时,训练就会中止。

# 初始化带有早停的XGBoost回归器 model = xgb.XGBRegressor(n_estimators=1000, learning_rate=0.1, max_depth=5)# 经常使用早停训练模型 model.fit(X_train, y_train,eval_set=[(X_test, y_test)],early_stopping_rounds=10,verbose=True)

简化每棵树的结构也可以协助正则化模型。关键参数包括:

在叶节点上进后退一步分区所需的最小损失增加。较高的值会造成更激进的模型。

上方是XGBoost的目的函数。假设参与gamma,叶节点的数量(T)就会增加。gamma处罚T并协助防止树变得过于复杂。

Gamma是一个后剪枝参数。以下复杂公式示意在每次决裂时计算的增益。第一、第二和第三项区分是左子节点、右子节点和父节点的相似度分数。Gamma(最后一项)是增益的阈值。

在上方的例子中,每个节点内的值代表不蕴含gamma项的增益。当gamma设置为时,最底部的分支被删除,由于它不满足阈值规范,这样树就变得更便捷了。

那么疑问来了:gamma的最佳值是多少?答案在于超参数调优。

# 失掉树的详细转储,包括统计消息 tree_dump = model.get_booster().get_dump(dump_format='text', with_stats=True)# 打印树的转储以检查详细消息,包括每个节点的增益 for tree in tree_dump:print(tree)

上方的代码将显示一切决策树的转储。经过观察一切节点的增益,咱们可以尝试不同的gamma值。

import xgboost as xgb # Gamma的成功 model = xgb.XGBRegressor(n_estimators=3, random_state=42, gamma = 25000)

然而有一点,gamma值过高会造成欠拟合,由于它增加了树的深度,而gamma值过低会造成过拟合。

限度树的最大深度。较低的值可以防止模型学习过于详细的形式。这是一个预剪枝参数。

思索题1:当咱们有gamma时,为什么还要求max_depth?(答案在最后)

要解释这个参数就要先了解什么是cover。

当咱们启动树转储时,咱们会看到一切节点的cover值。Cover是hessians的总和,而hessian是损失函数相关于预测值的二阶导数。

咱们以一个便捷的损失为例,关于均方损失函数的回归疑问,hessian的值为1。所以在这种状况下,cover基本上是每个节点中的数据点数量。因 此min_child_weight是每个节点中应该存在的最小数据点数量。它对每个节点设置以下条件:cover > min_child_weight。

xgboost中回归疑问的min_

import xgboost as xgb# min_child_weight的例子 model = xgb.XGBRegressor(n_estimators=100, learning_rate=0.1, max_depth=5, min_child_weight=10, gamma=1, random_state=42)

关于分类疑问,了解这一点有点辣手,然而便捷来说分类中min_child_weight的一句话形容是:它为数据点的关键性设置了一个阈值。

所以咱们只需记住min_child_weight是一个预剪枝参数。参与min_child_weight会增加过拟合。

采样触及在数据的子集上训练模型,这可以经过引入随机性来增加过拟合。

用于训练每棵树的训练数据的百分比。较低的值可以防止过拟合。子采样使每个决策树成为数据子集的专家,遵照"群众的智慧"准则。依据数据的不同,0.5到0.8的范围通常会给出良好的结果。

于训练每棵树的特色的百分比。这也可以用来引入随机性并防止过拟合。colsample有以下三种类型,它们的值范围从0到1。这些按引入随机性的参与顺序 陈列如下。假定咱们的数据中有10个特色,一切这些超参数的值都设置为0.5:

import xgboost as xgb# subsample和colsample的例子 model = xgb.XGBRegressor(n_estimators=100, subsample=0.8,max_depth=5, colsample_bytree=0.5,colsample_bylevel=0.5, colsample_bynode=0.5)

收缩增加了每棵独自树的影响,使模型愈加持重:

增加每棵树的影响。较低的值象征着模型构建更多的树,但不太或许过拟合。0.3是许多模型的适合学习率。

L2(岭)和L1(Lasso)正则化项,处罚大系数。

当增益小于gamma时,该节点就会被剪枝。当lambda参与时,过拟合增加,欠拟合参与。Lambda与gamma一同用于正则化。

思索题2:当咱们有gamma时,为什么还要求lambda?

import xgboost as xgb # reg_lambda是lambda的超参数,reg_alpha是alpha的超参数 model = xgb.XGBRegressor(n_estimators=3, learning_rate=0.3, reg_lambda=100, reg_alpha=100, gamma=10000)

1、XGBoost中即使有了gamma参数,咱们依然要求max_depth参数。

在XGBoost中,gamma和max_depth只管都用于控制树的成长,但它们的上班形式和目的略有不同:

1.不同的控制粒度:

2.计算效率:

3.模型可解释性:

4.解决不同类型的数据:

5.互补作用:

总之,gamma和max_depth在控制树的成长方面起着互补的作用。gamma关注决裂的品质,而max_depth确保树不会变得过于复杂。同时经常使用这两个参数,可以更好地平衡模型的性能、复杂度和可解释性。

2、为什么在XGBoost中即使有了gamma参数,咱们依然要求lambda参数。

在XGBoost中,gamma和lambda只管都用于正则化,但它们的上班形式和目的是不同的:

gamma和lambda在XGBoost中起着互补的作用。gamma关键控制树的结构,而lambda关键控制叶子节点的权重和树的输入。同时经常使用这两个参数,可以更片面、更灵敏地控制模型的复杂度,从而在不同层面上防止过拟合,提高模型的泛化才干。这种多层面的正则化战略是XGBoost弱小性能的关键起因之一。

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/7702.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号