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

一.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.mzph.cn/news/86879.shtml

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

相关文章

使用命令行快速创建Vite项目

一、构建项目 在终端中使用如下命令行: npm create vite 二、定义项目名称 三、选择项目类型 Vanilla是我们常用的JavaScript,Vue和React是常用前端框架,可以根据自己的需要进行选择 通过上下键进行选择,按下回车进行确认 创建…

docker容器安装MongoDB数据库

一:MongoDB数据库 1.1 简介 MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最 像关系型数据库(MySQL)的非关系型数据库。 它支持的数据结构…

Neo4j图数据库_web页面关闭登录实现免登陆访问_常用的cypher语句_删除_查询_创建关系图谱---Neo4j图数据库工作笔记0013

由于除了安装,那么真实使用的时候,就是导入数据了,有了关系和节点的csv文件以后如果用 cypher进行导入数据和创建关系图谱,还有进行查询,以及如果导入错误如何清空,大概是这些 用的最多的,单独把这些拿进来,总结一下,用的会比较方便. 1.实现免登陆访问: /data/module/neo4j-…

Spring学习笔记6 Bean的实例化方式

Spring学习笔记5 GoF之工厂模式_biubiubiu0706的博客-CSDN博客 Spring为Bean提供了多种实例化方式,通常包括4中(目的:更加灵活) 1.通过构造方法实例化 2.通过简单工厂模式实例化 3.通过factory-bean实例化 4.通过FactoryBean接口实例化 新建模块 spring-005 依赖 <!--S…

结构体,联合体与位段

1.结构体的内存对齐(计算结构体的大小) 1.1 为什么需要结构体内存对齐? 原因1:平台原因 不是所有的硬件平台都能访问任意地址上的任意数据的&#xff1b;某些平台只能在某些地址处取得某些特定类型的数据&#xff0c;否则抛出硬件异常。 比如&#xff0c;当一个平台要取一个…

Qt5开发及实例V2.0-第二十二章-Qt.Quick Controls 2新颖界面开发

Qt5开发及实例V2.0-第二十二章-Qt.Quick Controls 2新颖界面开发 第22章 Qt Quick Controls 2新颖界面开发22.1 Qt Quick Controls 2简介22.1.1 第一个Qt Quick Controls 2程序22.1.2 Qt Quick Controls 2程序的构成 22.2 Qt Quick Controls 2与1的比较22.2.1 ApplicationWindo…

紫光展锐6nm国产5G处理器T820_国产手机芯片5G方案

紫光展锐T820是一款采用先进6nm EUV工艺的芯片&#xff0c;采用134三丛集八核心CPU架构&#xff0c;由1个主频为 2.7GHz 的 Arm Cortex-A76 大核和 3个主频为2.3GHz 的Arm Cortex-A76大核以及4个主频为2.1GHz的 Arm Cortex-A55组成 &#xff0c;支持高达3MB 三级缓存&#xff0…

MySQL 篇

目录 1、数据库三范式 2、数据库事务的特性 3、MySQL数据库引擎 4、说说 InnoDB 与 MyISAM 的区别 5、索引是什么&#xff1f; 6、索引数据结构 7、MySQL 索引类型有哪些&#xff1f; 8、索引有什么优缺点&#xff1f; 9、索引设计原则 9、使用索引应该注意些什…

ubuntu 开启笔记本摄像头并修复画面颠倒问题

文章目录 基本环境状况&#xff1a; 没找到摄像头检查 opencv检查系统应用 键盘右侧&#xff0c;硬件层面开启摄像头画面镜像问题 基本环境 笔记本&#xff1a; 联想拯救者 系统&#xff1a; ubuntu 22.04 状况&#xff1a; 没找到摄像头 检查 opencv 使用 cv::VideoCaptu…

实验室安全教育与考试

目录 我的错题&#xff08;2个&#xff09;新知识题目&#xff08;10个&#xff09;刚开始不太理解的题目&#xff08;10个&#xff09;写在最后&#xff08;免责声明&#xff09; 我的错题&#xff08;2个&#xff09; 18.发生电气火灾时可以使用的灭火设备包括&#xff1a;&…

【100天精通Python】Day65:Python可视化_Matplotlib3D绘图mplot3d,绘制3D散点图、3D线图和3D条形图,示例+代码

1 mpl_toolkits.mplot3d 功能介绍 mpl_toolkits.mplot3d 是 Matplotlib 库中的一个子模块&#xff0c;用于绘制和可视化三维图形&#xff0c;包括三维散点图、曲面图、线图等。它提供了丰富的功能来创建和定制三维图形。以下是 mpl_toolkits.mplot3d 的主要功能和功能简介&am…

《动手学深度学习 Pytorch版》 7.1 深度卷积神经网络(AlexNet)

7.1.1 学习表征 深度卷积神经网络的突破出现在2012年。突破可归因于以下两个关键因素&#xff1a; 缺少的成分&#xff1a;数据 数据集紧缺的情况在 2010 年前后兴起的大数据浪潮中得到改善。ImageNet 挑战赛中&#xff0c;ImageNet数据集由斯坦福大学教授李飞飞小组的研究人…

js对象属性

在面向对象的语言中有一个标志&#xff0c;那就是都有类&#xff0c;通过类可以创建任意多个相同属性、方法的对象。在js中没有类的存在&#xff0c;所以js中的对象&#xff0c;相对于类语言中对象有所不同。 js中定义对象为&#xff1a;“无序属性的集合&#xff0c;其属性可…

虹科案例 | LIN/CAN总线汽车零部件测试方案

文章来源&#xff1a;虹科汽车电子 点此阅读原文 虹科的LIN/CAN总线汽车零部件测试方案是一款优秀的集成套装&#xff0c;基于Baby-LIN系列产品&#xff0c;帮助客户高效完成在测试、生产阶段车辆零部件质量、功能、控制等方面的检测工作。 1、汽车零部件测试的重要性&#xf…

乐鑫科技全球首批支持蓝牙 Mesh Protocol 1.1 协议

乐鑫科技 (688018.SH) 非常高兴地宣布&#xff0c;其自研的蓝牙 Mesh 协议栈 ESP-BLE-MESH 现已支持最新蓝牙 Mesh Protocol 1.1 协议的全部功能&#xff0c;成为全球首批在蓝牙技术联盟 (Bluetooth SIG) 正式发布该协议之前支持该更新的公司之一。这意味着乐鑫在低功耗蓝牙无线…

【Java 基础篇】Java Stream 流详解

Java Stream&#xff08;流&#xff09;是Java 8引入的一个强大的新特性&#xff0c;用于处理集合数据。它提供了一种更简洁、更灵活的方式来操作数据&#xff0c;可以大大提高代码的可读性和可维护性。本文将详细介绍Java Stream流的概念、用法和一些常见操作。 什么是Stream…

API网关是如何提升API接口安全管控能力的

API安全的重要性 近几年&#xff0c;越来越多的企业开始数字化转型之路。数字化转型的核心是将企业的服务、资产和能力打包成服务&#xff08;服务的形式通常为API&#xff0c;API又称接口&#xff0c;下文中提到的API和接口意思相同&#xff09;&#xff0c;从而让资源之间形…

怎么在OPPO手机桌面上添加文字?便签桌面插件添加教程

很多年轻女性在选择手机时&#xff0c;都比较青睐于设计时尚靓丽、轻薄且续航好、系统流畅、拍照清晰的OPPO手机&#xff0c;并且OPPO为不同的用户提供了高中低不同价格档位的手机型号&#xff0c;能够满足绝大多数女性消费者的使用需求。 不过有不少OPPO手机用户表示&#xf…

关于项目、项目集、项目组合以及运营管理之间的关系

什么是项目&#xff1f; 【项目】这个名词&#xff0c;其实各位一点都不陌生&#xff0c;各位从小到大在各种报章杂志&#xff0c;甚至是每晚的新闻播报里面&#xff0c;每每都会看到或是听到【项目】这个词语&#xff0c;甚至在各位进入大学&#xff0c;或是研究生的阶段里就…

基于人脸5个关键点的人脸对齐(人脸纠正)

摘要&#xff1a;人脸检测模型输出人脸目标框坐标和5个人脸关键点&#xff0c;在进行人脸比对前&#xff0c;需要对检测得到的人脸框进行对齐&#xff08;纠正&#xff09;&#xff0c;本文将通过5个人脸关键点信息对人脸就行对齐&#xff08;纠正&#xff09;。 一、输入图像…