机器学习第十课--提升树

news2025/1/12 6:08:21

一.Bagging与Boosting的区别

 在上一章里我们学习了一个集成模型叫作随机森林,而且也了解到随机森林属于Bagging的成员。本节我们重点来学习一下另外一种集成模型叫作Boosting。首先回顾一下什么叫Bagging? 比如在随机森林里,针对于样本数据,我们同时训练了多棵决策树,然后让这些决策树通过投票的方式来参与预测。这种方式的好处也讲过,可以很好地提升模型的稳定性。 其实任意的集成模型只要训练得合理都具备这种特性的,Boosting也不例外。

首先,在Bagging和Boosting里,我们把每一个模型称作Weak Learner,比如随机森林里的每一棵决策树就是Weak Leaner。那怎么理解Weak Learner呢? 其实就是不太靠谱的模型,但很多不太靠谱的模型组合在一起最终得出来的很可能是靠谱的模型,是不是很神奇?

虽然Bagging和Boosting都由Weak Learner来组成,但它们之间还是有很大区别的。有两个关键词我们还需要记住:overfitting和underfitting。 前者的意思是一个模型训练得太好了、太厉害了,导致出现过拟合的现象,所以不靠谱; 后者的意思是这么模型有点弱,都没有充分训练过,所以不靠谱。Bagging是很多过拟合的Weak Leaner来组成,Boosting是很多欠拟合的Weak Learner来组成,这就是它们之间核心的区别。

可以举个例子:Bagging模型可以理解成由很多顶级的专家来组成,但这些专家呢,都自以为很厉害都听不进去别人的意见,所以遇到新的问题适应能力稍微弱一些。但是呢,让这些专家通过合作一起做事情的时候就非常厉害。另外一方面,Boosting模型可以理解成由很多学渣来组成,每一个人的能力都挺弱的,而且不能够独当一面。但是呢,当很多人一起合作的时候却能带来惊人的结果。 

二.提升树--基于残差的训练 

 用残差代替收入,以此类推

问题:对于回归问题,假如我们按照残差的方式学习了很多棵决策树,决策的时候怎么办? 

 三.XGBoost

那XGBoost如何学习呢? 最好的资源无非是Tianqi自己写的PPT,链接请参考:https://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf
 

 四.XGBoost目标函数

 当拿到一个样本之后,分别通过每一个模型做预测,最后每个模型输出之和作为最终的预测结果。我们可以把这个过程泛化到具有K棵树的情况。

 最后的结果相当于所有K棵树预测之和。这里的fk​(xi​)代表第k棵树对第i个样本的预测值。简单来讲,这里的函数f可以看作是每一棵训练好的决策树。

这里的目标函数由两个部分来构成,其中一项是损失函数,另外一项是控制模型的复杂度项。如果是回归问题,我们可以使用最小二乘作为损失函数;如果是分类问题,我们则可以使用交叉熵作为损失函数;这里的函数l(。,。)表示预测值与真实值之间的差异。所以,从这里也可以看出XGBoost既可以用在回归问题上,也可以用在分类问题上,因为框架本身是通用的。

除了损失函数,我们在使用模型的时候一般也会加入控制复杂度的项,也叫作正则。 回顾一下,在线性回归或者逻辑回归上我们考虑过L1、L2这些常用的正则。正则的作用无非就是控制模型的复杂度,从而把容易过拟合的模型不给予考虑。那这里问题是:我们该如何给XGBoost模型定义复杂度?这个问题的本质其实:一棵决策树的复杂度如何定义? 或者换个角度:一棵复杂的决策树模型有什么特点?

五.新的目标函数

剩下的事情就最小化新的目标函数了。 这个过程其实等同于寻找一棵最好的树,使得让这个目标函数最小。那这棵树如何寻找呢? 这其实就是优化问题了!

做差越大,越好。 

这就是我们想要的答案! 其实训练过程跟决策树非常类似,无非是每次考虑的评估方式不一样。在决策树里,每次考虑的是信息增益或者方差的增益,只不过在xgboost的构建当中我们每次考虑的是自定义的目标函数的差异罢了。所以从整个过程也可以看得到,虽然一开始一步步试图构建参数化的目标函数,但最后还是回到了基于贪心算法的树的构建,跟决策树的构建很类似。只不过我们在构建决策树时并没有试图去创建什么目标函数,而是直接通过信息增益来搭建,所以直接看到的是结果,省略了中间很多步骤而已。以上是所有核心的算法细节,具体系统上的优化细节建议翻翻论文里的内容。XGBoost很好用,具体API可以参考:XGBoost Documentation — xgboost 2.1.0-dev documentation

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

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

相关文章

实在智能入选中国信通院最新《高质量数字化转型产品及服务全景图》,领跑AI大模型核心领域

随着中国数字经济进入快速发展期,中国信通院于2021年正式发起“铸基计划-高质量数字化转型行动”,围绕企业数字化转型供需两侧引导行业数字化建设。近期,中国信通院发布了最新的2023《高质量数字化转型产品及服务全景图(8月份新增…

苹果电脑如何卸载录屏软件音频驱动?

当你不想用录屏软件,且卸载后音频驱动还在,那想把音频驱动卸载的话应该如何操作? 或者是您使用录屏软件录制的视频没声音,应该如何操作,是音频插件的问题吗?需要将音频驱动卸载再重新安装吗? 接下来&…

文心一言 VS 讯飞星火 VS chatgpt (99)-- 算法导论9.3 5题

五、用go语言,假设你已经有了一个最坏情况下是线性时间的用于求解中位数的“黑箱”子程序。设计一个能在线性时间内解决任意顺序统计量的选择问题算法。 文心一言: 为了在线性时间内解决任意顺序统计量的选择问题,我们可以使用一个基于快速…

【51单片机】7-LED点阵

1.LED点阵简介 1.什么是LED点阵 1.外观 2.作用 3.内部构造原理图 点阵的优势:就是88个IO口独立控制8*8个LED灯亮灭 2.如何驱动LED点阵--74HC595 2.1 单片机端口直接驱动 要驱动8*8的点阵需要2个IO端口,(16个IO口),…

【Verilog 教程】5.3Verilog带参数实例化

关键词: defparam,参数,例化,ram 当一个模块被另一个模块引用例化时,高层模块可以对低层模块的参数值进行改写。这样就允许在编译时将不同的参数传递给多个相同名字的模块,而不用单独为只有参数不同的多个模…

【RT】什么是对抗攻击 | 视觉跟踪

现在有机会接触一下针对深度学习神经网络的对抗攻击,并做整理如下🤔 对于CV攻防,其实去年12月组会听完就浏览过相关文章👉面向目标检测的对抗样本综述后门防御, NIPS2022 adversarial attack for tracking CVPR2021 | IoU Attack导…

JS的事件循环(Event Loop)

JS的事件循环 本文是我自己对事件循环的理解和总结,不会有太多的理论知识,已经有太多文章写过了,自己搜索下就能找到很多; 同时,文章中的观点仅是本人自己理解,比较白话,不用太较真啊&#xff0…

数字孪生在灌区信息中的应用

灌区信息是智慧水利的组成部分,对灌区现代化改造的支撑作用和地位尤为重要,对促进水利可持续发展有重要意义。灌区信息化系统主要对对灌区的水情、雨情、土壤墒情、气象等信息进行监测,对重点区域进行视频监控,同时对泵站、闸门进…

C++ VTK三维图像体积计算Qt

程序示例精选 C VTK三维图像体积计算Qt 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《C VTK三维图像体积计算Qt》编写代码,代码整洁,规则,易读。 学习与…

基于SSM的乡镇篮球队管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Windows,macOS,Linux换行标识的前世今生,如何处理文本文件行尾的^M

title: Windows,macOS,Linux换行标识的前世今生,如何处理文本文件行尾的^M / The Past and Present of Line Break Symbols in Windows, macOS, Linux: How to Deal with ^M at the End of Text Files categories: 极客实用技巧 / Geek Prac…

Java面试被问了几个简单的问题,却回答的不是很好

作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言! 前言 前几天参加了…

定时器之输出捕获

简介 • IC ( Input Capture )输入捕获 • 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前 CNT 的值将被锁存到 CCR 中,可用于测量 PWM 波形的频率、占空比、脉冲间隔、电平持续时间等参数 • 每个高级定时器和…

防泄密软件推荐(数据防泄漏软件好用榜前五名)

在当今的数字化时代,数据已经成为企业最宝贵的资产之一。企业需要依赖数据来驱动业务决策、提高运营效率和创新产品。然而,随着数据量的不断增长,数据安全问题也日益凸显。企业需要采取有效的措施来保护敏感数据,防止信息泄露给竞…

5次多项式轨迹规划(博途SCL源代码)

运动控制轨迹规划时,加速度不连续将会使电机抖动,产生机械冲击。凸轮表轨迹规划很多都是基于5次多项式轨迹规划。3次多项式轨迹规划请查看下面文章链接: 3次多项式轨迹规划(PLC SCL代码)_RXXW_Dor的博客-CSDN博客机器人、运动控制等常用的轨迹规划有三次多项式、五次多项式…

第二章 进程与线程 十四、进程互斥的硬件实现方法(中断屏蔽法、TestAndSet指令、Swap指令)

目录 一、中断屏蔽法 3、优点: 4、缺点: 二、TestAndSet指令 3、代码解释 4、优点 5、缺点 三、Swap指令 1、定义 2、代码解释 3、优点 4、缺点 四、总结 一、中断屏蔽法 1、关中断后即不允许当前进程被中断,也必然不会发生进程切换。 2、…

【Tracking】Real-Time Camera Tracking: When is High Frame-Rate Best

paper: Real-Time Camera Tracking: When is High Frame-Rate Best? 0. 摘要: 更高的帧率承诺能更好地跟踪快速运动,但先进的实时视觉系统很少超过标准的10-60Hz范围,因为认为所需的计算量太大。实际上,在利用预测优势的跟踪器…

不添加端口号访问非80网站

自己用树莓派搭了个网站,由于某些原因,不能使用80端口,但又想访问网站时候不要添加端口号。这时候可以更换下DNS服务器,如使用cloudflare,替换成以下两个 参考文章 https://www.cnblogs.com/beidaxmf/p/16744589.html…

常见列表字典排序

一、列表排序 demoList [1, 3, 2, 4, 9 ,7]res sorted(demoList) # 默认升序# 降序 # res sorted(demoList, reverseTrue)print(res)二、字典排序 demoDict {"篮球": 5, "排球": 9, "网球": 6, "足球": 3}# sorted排序 res so…

Python_ithheima_第二阶段

第一章 01-初识对像 02 类的成员方法 03 类和对象 04 构造方法 05 魔术方法 06 封装 07 封装的课后练习题讲解 08 继承的基础语法 pass关键字的功能是“语法补全” 同名成员或方法,谁先来谁优先级高 09 复写父类成员和调用父类成员 10 变量的类型注解 11 函数和方法…