数据挖掘小白系列!XGBOOST参数超详解!参数选择,顺序,值一网打尽!

0根据情况决定silent&booster&objective

->1n_estimator&eta

->2max_depthORgamma

观察模型处于什么样的状态(过拟合还是欠拟合,处于方差-偏差图像的左边还是右边?)决定是否需要剪枝(对于XGB这种树模型来说一般都是要的)

->3subsample(视情况在使用与否)&三个树的剪枝参数

“colsample_bytree”“colsample_bylevel”“colsample_bynode”

4alphaOR/ANDlambda正则化参数(受最大深度和和gamma影响)

PS:如果是大数据集就只能手动CV调

CV调节方式(P36)

让我们先从最原始的,设定默认参数开始,先观察一下默认参数下,我们的交叉验证曲线长什么样.在这里,我们要使用三组曲线。一组用于展示原始数据上的结果,一组用于展示上一个参数调节完毕后的结果,最后一组用于展示现在我们在调节的参数的结果。

说明:

弱分类器的数量,就是建立多少课树

作用:

n_estimators越大,模型的学习能力就会越强,模型也越容易过拟合

参数推荐:

一般都不会建议一个太大的数目,300以下为佳,如果数据量是几十万甚至百万可以适当调高。

注意点:

1树的数量前期影响模型效果大,后期减小,并且可能因为数量过多导致效果下降或者过拟合

控制抽样抽出来的样本量大概是多少(通常在样本量大的时候使用)

让模型更加集中于那些困难样本

可借助学习曲线一般(0.05,1,20)确定大范围

1数据量少时不推荐使用

迭代决策树时的步长(shrinkage),又叫做学习率(learningrate)。

越大,迭代的速度越快,算法的极限很快被达到,有可能无法收敛到真正的最佳。越小,越有可能找到更精确的最佳值,更多的空间被留给了后面建立的树,但迭代速度会比较缓慢。

一般和n_estimators交互,使用网格交搜索来同时确定两者参数值,一般在0.01~0.2之间

1从评估器角度出发,新建的评估器一定是要比之前的好,是当前最优.

booster'来控制我们究竟使用怎样的弱评估器。

不同情况下不同的弱评估器的选择对最后模型的效果影响很大。

gtree:默认

gnlinear:一般数据成线性关系时候使用

dart:比梯度提升树有更好的防过拟合功能

1数据量不大时:gbtree和dart效果是相似的。

objective来控制我们究竟使用怎样的损失函数

不同情况下不同的损失函数对最后模型的效果影响很大。

更多详见:

1分类型的目标函数导入回归类中会直接报错。

被称为“复杂性控制”(complexitycontrol),是Gain中的惩罚项,增加的叶子越多,结构分之差Gain会被惩罚越重在树的叶节点上进行进一步分枝所需的最小目标函数减少量,是用来防止过拟合的重要参数。对梯度提升树影响最大的参数之一。

设定越大,算法就越保守,树的叶子数量就越少,模型的复杂度就越低。

1学习曲线运行速度较缓慢并且曲线的效果匪夷所思,推荐使用xgboost.cv。

剪枝参数。

控制过拟合。

一般使用max_depth&colsample_bytree&colsample_bilevel

1最大深度的功能与参数gamma相似,因此如果先调节了,则最大深度可能无法展示出巨大的效果。当然,如果先调整了最大深度,则也有可能无法显示明显的效果。通常来说,这两个参数中我们只使用一个,不过两个都试试也没有坏处。

2学习曲线运行速度较缓慢并且曲线的效果匪夷所思,推荐使用xgboost.cv

都是控制正则化强度的参数。

我们可以二选一使用,也可以一起使用加大正则化的力度。当alpha和lambda都为0的时候,目标函数就是普通的梯度提升树的目标函数。

一般先用L2,效果还不好再加上L1,配合网格搜索。

1实际使用防止过拟合还是先考虑剪枝,或者是参数伽马。

调节样本不平衡的参数。

正负样本比例。

参数推荐&注意点:

官网上说,如果我们只在意模型的整表现,则使用AUC作为模型评估指标,使用scale_pos_weight来处理样本不平衡问题,如果我们在意预测出正确的概率,那我们就无法通过调节scale_pos_weight来减轻样本不平衡问题带来的影响。

这种时候,我们需要考虑另一个参数:max_delta_step。这个参数非常难以理解,它被称之为是“树的权重估计中允许的单次最大增量”,既可以考虑成是影响的估计的参数。xgboost官网上认为,如果我们在处理样本不均衡问题,并且十分在意得到正确的预测概率,则可以设置

max_delta_step参数为一个有限的数(比如1)来帮助收敛。max_delta_step参数通常不进行使用,二分类下的样本不均衡问题时这个参数唯一的用途。

nthread和n_jobs都是算法运行所使用的线程,与sklearn中规则一样,输入整数表示使用的线程,输入-1表示使用计

算机全部的计算资源。如果我们的数据量很大,则我们可能需要这个参数来为我们调用更多线程。

这个分数默认0.5,但其实这个分数在这种情况下并不有效。许多使用XGBoost的人已经提出,当使用回归的时候base_score的默认应该是标签的均值,不过现在xgboost库尚未对此做出改进。使用这个参数,我们便是在告诉模型一些我们了解但模型不一定能够从数据中学习到的信息。通常我们不会使用这个参数,但对于严重的样本不均衡问题,设置一个正确的base_score取值是很有必要的。

在xgb库和sklearn中,都存在空值生成树的随机模式的参数random_state。在之前的剪枝中,我们提到可以通过随机抽样样本,随机抽样特征来减轻过拟合的影响,我们可以通过其他参数来影响随机抽样的比例,却无法对随机抽样干涉更多,因此,真正的随机性还是由模型自己生成的。如果希望控制这种随机性,可以在random_state参数中输入固定整数。需要注意的是,xgb库和sklearn库中,在random_state参数中输入同一个整数未必表示同一个随机模

式,不一定会得到相同的结果,因此导致模型的feature_importances也会不一致。

XGBOOST自带importance参数说明:

XGBOOST自带importance实战:

Shap可视化可解释性特征重要性库(推荐先看):

树模型的优势之一:能够查看模型的重要性分数,可以使用嵌入法进行特征选择-P9

进化的学习曲线:方差与泛化误差8.细化学习曲线,找出最佳nestimators-P10

细化学习曲线,找出最佳eta-p16

使用网格搜索来查找最佳的参数组合(alpha和lambda)p25

细化学习曲线,找出最佳gamma-p31

使用xgboost调节gamma-p32

完整CV调参示例-p36

使用Joblib保存和调用模型p40

XGBvsGBDT核心区别1:求解预测值的方式不同GBDT中预测值是由所有弱分类器上的预测结果的加权求和,其中每个样本上的预测结果就是样本所在的叶子节点的均值。而XGBT中的预测值是所有弱分类器上的叶子权重直接求和得到,计算叶子权重是一个复杂的过程。

XGBvsGBDT核心区别2:正则项的存在

在普通的梯度提升树GBDT中,我们是不在目标函数中使用正则项的。但XGB借用正则项来修正树模型天生容易

THE END
1.Alibaba最新1000多道Java面试题汇总详解,收藏起来慢慢刷!21、接口有什么特点? 22、抽象类和接口的区别? 23、Hashcode 的作用 24、普通类与抽象类有什么区别? 25、什么是接口?为什么需要接口? 26、接口有什么特点? 27、拷贝和浅拷贝的区别是什么? 28、JDBC 操作的步骤 29、什么时候用 assert 30、数组有没有 length()这个方法? String 有没有 length()这个方法 ...https://maimai.cn/article/detail?fid=1728969401&efid=esjJLvGGL4fAr1LArgq_cQ
2.幼儿的科学小常识有哪些打呵欠是一种深呼吸动作,它会让我们比平常更多地吸进氧气和排出二气化碳,还做到消除疲劳的作用呢。 11、为什么蛇没有脚都能走路? 蛇的身上有很多鳞片,这是它们身上最外面的一层盔甲。鳞片不但用来保护身体,还可以是它们的「脚」。 蛇向前爬行时,身体会呈S形。而每一片在S形外边的鳞片,都会翘起来,帮助蛇前进...https://m.jy135.com/shenghuo/289923.html
3.机器学习sklearn(学习笔记4)——决策树2剪枝悲观剪枝策略先剪枝说白了就是提前结束决策树的增长,跟上述决策树停止生长的方法一样。 后剪枝是指在决策树生长完成之后再进行剪枝的过程。这里介绍三种后剪枝方案: (1)REP—错误率降低剪枝 顾名思义,该剪枝方法是根据错误率进行剪枝,如果一棵子树修剪前后错误率没有下降,就可以认为该子树是可以修剪的。 https://blog.csdn.net/qq_42696553/article/details/88555251
4.关于诚信的素材(附故事+名言警句)诚信的作用 从哲学的意义上说,“诚信”既是一种世界观,又是一种社会价值观和道德观,无论对于社会抑或个人,都具有重要的意义和作用。 对于每个社会成员而言,“诚信”是立身之本,处世之宝。人生立于世间数十年,必须不断学习,以获得知识、增进知识,知识既是个人谋生的工具,也是个人为社会服务的工具。但是,要真正...https://www.yuwenmi.com/sucai/544106.html
5.成功上岸阿里,深度学习知识考点总结当一个神经元被丢弃时,无论其输入及相关的学习参数是多少,其输出都会被置为0。丢弃的神经元在训练阶段的前向传播和后向传播阶段都不起作用:因为这个原因,每当一个单一的神经元被丢弃时,训练阶段就好像是在一个新的神经网络上完成。大概是sample吧。(我感觉有点像非结构化稀疏剪枝)...https://cuijiahua.com/blog/2020/09/interview-1.html
6.一年两茬茄子是怎么种出来的?2018~2020年种什么品种好?掌握这些...剪枝后,由于外界温度高,再加上庞大的根系吸收作用,一般剪枝30天左右即可采收,一般再生的第一茬茄子采收结束后拔秧腾茬,安排下一茬作物。 6、病虫害防治 为害茄子的病害主要有灰霉病、早疫病、青枯病等;为害茄子的虫害主要有蓟马、茶黄螨等。 按照“预防为主,综合防治”的植保方针,坚持以“农业防治,物理防治,生物...https://nync.guiyang.gov.cn/xwdt/kjzc/202002/t20200220_50327638.html
7.汽车服务汽车管理第三步,剪枝决策。比较各方案的期望值。期望值最大的方案枝即为最佳方案。 13.经营计划的实施方式 1)根据年度经营计划,编制落实季度经营计划和月份作业计划。 2)运用企业内部经济责任制和经济核算制等办法,落实各项计划指标和工作任务。 14.汽车售后服务企业信息系统的具体构成 ...https://www.unjs.com/zuixinxiaoxi/ziliao/20170709000008_1387088.html
8.金枝玉叶修剪扦插技巧有哪些?剪枝和扦插的基本原理是什么?剪枝和扦插的基本原理是什么? 对于爱好园艺的人来说,修剪和扦插是非常重要的技巧。通过正确的修剪和扦插方法,你可以让你的植物在生长过程中更加健康、美丽。本文将介绍关于金枝玉叶修剪和扦插的基本原理和技巧,希望能为你的园艺之旅提供一些参考。 一:了解金枝玉叶的基本特点...https://www.huahuizhiye.com/article-15723-1.html
9.荔枝树的生长条件是什么荔枝树种植管理技术→MAIGOO知识4、整形剪枝 荔枝因为生长的很快,所以需要给它整形修剪一次,可以在夏秋冬两季进行修剪,需要将荔枝的老枝、枯枝、侧枝全部剪掉,可以减少对土壤中的养分消耗,促使结出的果实更美味,不然会造成荔枝徒长,影响荔枝生长,果实的味道将会大打折扣。 5、防寒护树 https://m.maigoo.com/goomai/204806.html
10.训练网络像是买彩票?神经网络剪枝最新进展之彩票假设解读Frankle 和 Carbin 在彩票假设(LT)论文中提出一种模型剪枝方法:对网络训练后,对所有小于某个阈值的权重置 0(即剪枝),然后将剩下的权重重置成原始网络初始的权重,最后重新训练网络。基于这种方法,得到了两个有趣的结果。 一方面经过大量剪枝的网络(删掉 85%-95% 的权重)与原网络相比性能并没有明显的下降,而且,...https://www.thepaper.cn/newsDetail_forward_4454449
11.GitHubakiritsu/cslearning完成 6.034 后,学生应能够通过组装对具体计算问题的解决方案来开发智能系统;理解知识表示、问题解决和学习在智能系统工程中的作用;并从计算的角度欣赏问题解决、视觉和语言在理解人类智能中的作用。 【课程】UC Berkeley CS188: Introduction to Artificial Intelligence #哔哩哔哩-中英字幕 入门课程,搜索剪枝、约束满足...https://github.com/akiritsu/cs-learning-map
12.数据挖掘复习(包括一些课本习题)[通俗易懂]1.1.数据挖掘处理的对象有哪些? 处理某一专业领域中积累的数据; 1.2.数据挖掘在电子商务中的客户关系管理起到非常重要的作用; 第二章 代码语言:javascript 复制 (1)数据挖掘中使用的数据是数据对象及其属性的集合,属性为对象的特性(1)类属性和数值属性,标称,序数,区间,比例 ...https://cloud.tencent.com/developer/article/2093242