XGBoost参数调优完全指南(附Python代码)

 

 

XGBoost参数调优完全指南(附Python代码):http://www.2cto.com/kf/201607/528771.html

 

 https://www.zhihu.com/question/41354392

【以下转自知乎】

https://www.zhihu.com/question/45487317

为什么xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?

 

XGBoost除去正则和并行的优化,我觉得和传统GBDT最核心的区别是:
1. 传统GBDT的每颗树学习的是梯度,是损失函数在上一轮预测值的梯度,
所以喂给下一轮决策树的样本是,g_i 是损失函数L对上一轮预测值y_{i,t-1}处的梯度,
然后y_{i,t} = y_{i,t-1} - lambda * g_i;
2. 而XGBoost是直接学习的残差,看论文里的分裂方法,就是在找每个叶子节点上最优的权重w_j,而这个值对应的是y - y_t;


作者:木叶
链接:https://www.zhihu.com/question/41354392/answer/120715099
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
参加kaggle的时候,用xgboost/gbdt在在调参的时候把树的最大深度调成6就有很高的精度了。但是用DecisionTree/RandomForest的时候需要把树的深度调到15或更高。
用RandomForest所需要的树的深度和DecisionTree一样我能理解,因为它是用bagging的方法把DecisionTree组合在一起,相当于做了多次DecisionTree一样。
但是xgboost/gbdt仅仅用梯度上升法就能用6个节点的深度达到很高的预测精度?
 
作者:于菲
链接:https://www.zhihu.com/question/45487317/answer/99153174
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

一句话的解释,来自周志华老师的机器学习教科书( 机器学习-周志华):Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成;Bagging主要关注降低方差,因此它在不剪枝的决策树、神经网络等学习器上效用更为明显。

随机森林(random forest)和GBDT都是属于集成学习(ensemble learning)的范畴。集成学习下有两个重要的策略Bagging和Boosting。

Bagging算法是这样做的:每个分类器都随机从原样本中做有放回的采样,然后分别在这些采样后的样本上训练分类器,然后再把这些分类器组合起来。简单的多数投票一般就可以。其代表算法是随机森林。Boosting的意思是这样,他通过迭代地训练一系列的分类器,每个分类器采用的样本分布都和上一轮的学习结果有关。其代表算法是AdaBoost, GBDT。

其实就机器学习算法来说,其泛化误差可以分解为两部分,偏差(bias)和方差(variance)。这个可由下图的式子导出(这里用到了概率论公式D(X)=E(X^2)-[E(X)]^2)。偏差指的是算法的期望预测与真实预测之间的偏差程度,反应了模型本身的拟合能力;方差度量了同等大小的训练集的变动导致学习性能的变化,刻画了数据扰动所导致的影响。这个有点儿绕,不过你一定知道过拟合。

<span style="color: rgb(0, 0, 0);"><img src="https://pic1.zhimg.com/bca1b7c915099702fd0e8a3a3e0b2cac_b.png" data-rawwidth="320" data-rawheight="108" class="content_image" width="320">如下图所示,当模型越复杂时,拟合的程度就越高,模型的训练偏差就越小。但此时如果换一组数据可能模型的变化就会很大,即模型的方差很大。所以模型过于复杂的时候会导致过拟合。</span>如下图所示,当模型越复杂时,拟合的程度就越高,模型的训练偏差就越小。但此时如果换一组数据可能模型的变化就会很大,即模型的方差很大。所以模型过于复杂的时候会导致过拟合。
当模型越简单时,即使我们再换一组数据,最后得出的学习器和之前的学习器的差别就不那么大,模型的方差很小。还是因为模型简单,所以偏差会很大。
<span style="color: rgb(0, 0, 0);"><img src="https://pic4.zhimg.com/1cca0e32949ab02127e56636b0ff080f_b.png" data-rawwidth="455" data-rawheight="281" class="origin_image zh-lightbox-thumb" width="455" data-original="https://pic4.zhimg.com/1cca0e32949ab02127e56636b0ff080f_r.png"></span>
也就是说,当我们训练一个模型时,偏差和方差都得照顾到,漏掉一个都不行。
对于Bagging算法来说,由于我们会并行地训练很多不同的分类器的目的就是降低这个方差(variance) \mathbf{E}[h-\mathbb{E}(h)],因为采用了相互独立的基分类器多了以后,h的值自然就会靠近\mathbb{E}(h).所以对于每个基分类器来说,目标就是如何降低这个偏差(bias),所以我们会采用深度很深甚至不剪枝的决策树。

对于Boosting来说,每一步我们都会在上一轮的基础上更加拟合原数据,所以可以保证偏差(bias),所以对于每个基分类器来说,问题就在于如何选择variance更小的分类器,即更简单的分类器,所以我们选择了深度很浅的决策树。
 

 

转载于:https://www.cnblogs.com/zhangbojiangfeng/p/6126547.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科技基建,自主创芯——详解全球半导体制造行业格局

来源:芯潮今天推荐一份报告,详解全球半导体制造行业格局,本报告从以下几个角度进行分析:一、全球半导体制造市场规模及竞争格局全球半导体制造市场及行业格局中国半导体制造行业情况二、半导体制造制程技术分析28纳米是生命周期相…

python按行读取文件取消空白行_python去掉空白行的多种实现代码

测试代码 jb51.txt 1:www.jb51.net 2:www.jb51.net 3:www.jb51.net 4:www.jb51.net 5:www.jb51.net 6:www.jb51.net 7:www.jb51.net 8:www.jb51.net 9:www.jb51.net 10:www.jb51.net 11:www.jb51.net 12:www.jb51.net 13:www.jb51.net 14:www.jb51.net 15:www.jb51.net 16:www.…

android 大视图风格通知栏,Android中使用Notification实现宽视图通知栏(Notification示例二)...

Notification是在你的应用常规界面以外展现的消息。当app让系统发送一个消息的时候,消息首先以图表的形式显示在通知栏。要查看消息的详情须要进入通知抽屉(notificationdrawer)中查看。通知栏和通知抽屉html(notificationdrawer)都是系统层面控制的,你能…

计算机、数学、运筹学等领域32个重要算法

来源: 深度学习与机器视觉奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多数是计算机…

怎么用python表白_如何正确使用Python进行表白?这是个值得思考的问题!

提到程序员, 可能每个同学都认识一个—— 爱穿格子衬衫、冲锋衣,爱宅着敲代码的程序员或者准程序员, 他们仿佛永远在bug和debug的路上, 还总爱自黑自己是“单身狗”,如何正确使用Python进行表白?这是个值得…

iOS 高阶

1.UIStoryBoard 2. segue跳转传值 3. UIColor配色 //1. 十进制配色 [UIColor colorWithRed:163.0/255.0 green:148.0/255.0 blue:128.0/255.0 alpha:1.0]; //2. 设置16进制颜色(同上) [UIColor colorWithRed:0xba/255.0 green:0x21/255.0 blue:0xd5/255.0 alpha:1.0]; 4. XML解…

android 顶部标签切换,Android实现底部切换标签

本文实例为大家分享了Android实现底部切换标签的具体代码,供大家参考,具体内容如下实现底部通用切换标签 ,嵌套Fragment,方便自定义布局自定义控件:widget_tab_view.xmlandroid:layout_width"match_parent"a…

simulink显示多个数据_Matlab/Simulink与自动驾驶(ADAS)算法开发

Simulink是如何存在自动驾驶的开发过程中?废话少讲,让咱们开始娓娓道来!自动驾驶的开发架构是什么?自动驾驶软件开发基础的架构,逃不出我们经常所说的三大法宝,感知--- 决策(规划)--- 执行(控制)&#xff0…

数字孪生智慧城市建设加速5G+产业AI的应用,全流程数据透明化及实时可控成为升级的大方向,构建智慧城市生态圈在路上!...

本视频为深圳市副市长和IDG领导在高交会智慧城市论坛上的讲话。来源:北京物联网智能技术应用协会 本期正文Digital Twin数字孪生:是充分利用物理模型、传感器更新、运行历史等数据,集成多学科、多物理量、多尺度、多概率的仿真过程&#xff0…

Linux部署Apache ActiveMQ 5.14.1

Linux部署Apache ActiveMQ 5.14.1 简单记一下,下载地址 http://activemq.apache.org/download.html 一、安装JDK7以上,官方说明:http://activemq.apache.org/version-5-getting-started.html 二、创建目录: cd /usrmkdir activemq…

python做excel表格柱状图_Python Excel 绘制柱形图

原博文 2019-11-19 22:07 − 本文主要讲述如何使用Python操作Excel绘制柱形图。 相关代码请参考 https://github.com/RustFisher/python-playground 本文链接:https://www.rustfisher.com/2019/11/19/Python/Python-op-ex... 相关推荐 2019-12-08 20:02 − 利用Pyth…

管理口地址 ibm_WAN口有IP地址上不了网如何解决 WAN口有IP地址上不了网解决方法【详解】...

设置好路由器WAN口PPPoE拨号后,WAN口状态已经显示获得到IP地址,如下图:WAN口有IP地址上不了网怎么办但是终端设备连接路由器无法上网,请参考以下步骤排查。电脑需要设置为自动获得IP地址,如果您不清楚如何设置&#xf…

IBM 消费者洞察报告,揭示 5G 娱乐时代的三大关键趋势

来源:IBM中国 5G 时代来临,三大变革力量的出现,注定让“传统媒体”彻底无眠。消费者对 5G 技术兴趣盎然 5G 为消费者带来的最重要好处是能够提升移动视频流的质量,最终转向超高清 (UHD) 格式。 沉浸式媒体吸引了消费者的浓厚兴趣 …

什么时候需要coinitialize_机器学习模型什么时候需要做数据标准化?

机器学习Author:louwillMachine Learning Lab一直都有朋友在做机器学习模型时有疑问:我的数据要不要做标准化处理?这个问题笔者也思考过,只不过不够系统,观点也比较单一,所以才有了上图中的【变量单位之间数…

机器人与人工智能: 应对全球挑战的终极途径

来源:中国指挥与控制学会欧洲机器人协会主席伯纳德利珀特(Bernd Liepert)近日在2019 世界机器人大会上透露,未来产业界将在欧洲机器协会的项目中发挥领导作用,欧盟正在推动一个2021 年至2027 年的新项目,总…

6位顺序号生成_分布式id生成策略,我和面试官扯了一个半小时

一、分布式系统带来ID生成挑战在分布式系统中,往往需要对大量的数据如订单、账户进行标识,以一个有意义的有序的序列号来作为全局唯一的ID。而分布式系统中我们对ID生成器要求又有哪些呢?全局唯一性:不能出现重复的ID号,既然是唯…

数据库的前世今生

译者 | 谭开朗编辑 | 屠敏来源 | CSDN(ID:CSDNnews)【CSDN 编者按】被称之为基础软件三驾马车之一的数据库,在经历了层次型和网状型、关系型数据型库以及更加强大的数据管理功能等三个时期之后,其在未来的发展历程中还…

android app links,Android APP Links 配置

一. 简介在Instant App开发中,需要app支持Instant App Links. 本文中,主要介绍其作用,配置必需条件,配置的过程。二. 作用App Links 本质上是 Deep Link 的一种延伸,我们知道,Deep Link配置在Manifest之后&…

【边缘计算】对边缘计算的理解与思考

来源:边缘计算社区在2019年第三届边缘计算技术研讨会上华为高级产业发展经理、ECC需求与总体组副主席黄还青发表了《ECC及华为在边缘计算领域的思考与实践》主题演讲,本文为黄还青演讲中对边缘计算理解及思考。首先我们认为边缘计算的兴起应该是在过去三…

【代码笔记】iOS-实现网络图片的异步加载和缓存

代码: - (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.self.title"EGOImageViewDemo"; //实现网络图片的异步加载和缓存 EGOImageView *imageView [[EGOImageView alloc] initWithPlaceholderImage:[UIIm…