随机森林、AdaBoost 和 XGBoost 三者之间的主要区别

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


在这里插入图片描述

集成学习是一种强大的机器学习范式,它通过构建并结合多个学习器来提高预测性能。其中,随机森林、AdaBoost 和 XGBoost 是集成学习领域中著名且广泛应用的方法。尽管这些方法共享一些基本概念,但它们在算法原理、损失函数、优化方法、应用场景以及优缺点等方面存在显著差异。

算法原理

随机森林是一种基于决策树的集成学习方法(Bagging)。它通过并行构建许多决策树,并对这些树的预测结果进行平均或多数投票,来得出最终预测。随机森林引入了两个关键的随机性元素:一是在训练每棵树时采用不同的数据样本(数据随机:通过自助采样法),二是在分裂节点时考虑随机选取的特征子集(特征随机)。

Boosting 方法背后的直观理念是,我们需要串行地训练模型,而非并行。每个模型都应专注于之前弱学习器表现不佳的样本区域。相较于随机森林中各决策树的相互独立性,AdaBoost 展现出一种顺序训练的级联结构。在 AdaBoost 中,后续模型的训练基于前一个模型的预测结果,形成依赖关系。这种级联方式使 AdaBoost 更专注于解决之前未能正确预测的样本,逐步优化预测性能。AdaBoost 充分考虑了每个弱学习器的发言权,不同于随机森林的简单投票或计算平均值。AdaBoost 的核心思想在于:每一轮迭代后更新样本权重和弱学习器权重。

XGBoost(eXtreme Gradient Boosting)是梯度提升算法的高效实现。该算法利用梯度提升框架,在每次迭代过程中添加新树以纠正先前所有树预测之和与真实标签之间的残差。为了控制模型复杂度并防止过拟合,XGBoost 引入了正则项。

损失函数和优化

随机森林通常使用的 CRAT 树(分类回归树),指导模型学习过程的是决策树的划分准则,如基尼不纯度和信息增益(分类)、均方误差和平均绝对误差(回归)。随机森林致力于降低模型整体的方差,进而提高预测准确性。随机森林通过增加树的数量和引入随机性来优化模型的表现。没有显式的迭代优化过程。

AdaBoost 使用加权指数损失函数进行优化。通过迭代地增加对错误预测样本的关注度(调整样本权重)并添加新的弱学习器以及调整弱学习器权重来减少总体模型误差。

XGBoost 允许用户自定义损失函数,并且已内置了多种损失函数,适用于回归、分类等多样化任务。优化的核心在于利用损失函数的一阶导数(即梯度)和二阶导数(即海森矩阵)。XGBoost 的核心作者陈天奇为什么用二阶泰勒展开呢?

  • XGBoost 之所以采用二阶泰勒展开,是为了能够自定义损失函数,提高算法的可扩展性,使其能够近似大量的损失函数,从而支持回归、分类和排名任务。只要损失函数是二阶可导的,就可以利用陈天奇关于目标函数的推导,实现代码的复用。泰勒展开式的本质在于尽可能地近似一个函数,二阶泰勒展开已经足够近似许多损失函数,例如基于分类的对数似然损失函数。这样一来,使用相同的代码就能完成回归或分类任务,无需每次都重新推导和编写训练代码。

  • 一阶导指示梯度方向,而二阶导则揭示了梯度方向如何变化,类似牛顿法比 SGD 收敛更快,二阶导信息可以使得梯度收敛更加快速和精确。XGBoost 通过采用二阶泰勒展开直接求解最优化问题,有效避免了 GBDT 采用一阶泰勒展开时所需的 “打补丁” 方法,这凸显了 XGBoost 在模块化设计上的显著优势。

XGBoost 采用类似梯度下降的方式更新模型参数(所以有个学习率参数 eta),并通过列抽样、行抽样等策略进一步提升计算效率和减少过拟合风险。在寻找最优特征方面,XGBoost 通过给特征打分来确定其重要性,采用无放回的样本选择方式以避免梯度优化时的重复抽样问题,支持子采样以提高模型训练的效率。

应用场景、优点与不足

随机森林适用于分类和回归任务,特别是在具有高维特征且模型解释性要求不严格的情况下。

优点:准确性高;抑制过拟合;能处理大量的特征和数据;能处理缺失值;多功能性;易于使用

不足:模型复杂度高;模型可解释性不佳;对噪声敏感

AdaBoost 适用于二分类问题和多类别问题(通过一对多策略)。尤其在解决有明显复杂决策边界问题时效果良好。

优点:准确性高;易于代码实现;自动处理特征选择;灵活性;不太容易过拟合

不足:噪声敏感性;计算量较大

XGBoost 非常适合于各种规模数据集上的分类、回归和排名任务。特别是在竞赛和工业界项目中广受欢迎。

优点:准确性高;抑制过拟合;能处理大量的特征和数据;能处理缺失值;多功能性;易于使用;运行速度快,效果好;可以处理缺失数据;支持自定义损失函数;具有良好的扩展性和灵活性。

不足:参数较多,调参复杂;在某些噪音较大或数据量较小情况下容易过拟合。

总结来说,这三种算法各具特点:随机森林强调简单性、通用性和稳健性;AdaBoost 注重逐步提升模型准确性并增强弱学习器;而 XGBoost 则专注于高效、灵活和广泛的适应性。具体选择哪种算法,需根据任务需求、数据特性和计算资源等因素综合考虑。


📚️ 相关链接:

  • XGBoost Documentation

  • sklearn.ensemble: Ensemble Methods

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

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

相关文章

比selenium体验更好的ui自动化测试工具: cypress介绍

话说 Cypress is a next generation front end testing tool built for the modern web. And Cypress can test anything that runs in a browser.Cypress consists of a free, open source, locally installed Test Runner and a Dashboard Service for recording your tests.…

os.listdir()bug总结

今天测试出一个神奇的bug,算是教训吧,找了两天不知道问题在哪,最后才发现问题出现在这 原始文件夹显示 os.listdir()结果乱序 import os base_path "./file/"files os.listdir(base_path)print(files)问题原因 解决办法(排序)

蓝桥杯第十四届C++A组(未完)

【规律题】平方差 题目描述 给定 L, R,问 L ≤ x ≤ R 中有多少个数 x 满足存在整数 y,z 使得 。 输入格式 输入一行包含两个整数 L, R,用一个空格分隔。 输出格式 输出一行包含一个整数满足题目给定条件的 x 的数量。 样例输入 1 5 样例输出 …

文件怎么做成二维码图片?怎么用手机扫描二维码下载文件?

文件如何生成二维码图片?随着互联网的不断发展,用二维码来传递内容已经成为一种很常用的方式,其他人可以通过手机扫描生成二维码的方式来查看或者下载文件内容,有效提升文件传输的效率和速度。 现在制作活码类型的二维码可以在图…

JVM基础:类的生命周期详解

JDK版本:jdk8 IDEA版本:IntelliJ IDEA 2022.1.3 文章目录 一. 生命周期概述二. 加载阶段(Loading)2.1 加载步骤2.2 查看内存中的对象 三. 连接阶段(Linking)3.1 连接之验证3.2 连接之准备3.3 连接阶段之解析 四. 初始化阶段(Initialization)4.1 单个类的…

官方竞价排名是否对SEO自然排名有影响?

很多站长有疑问,如果使用搜索引擎官方的SEM竞价,是否对之前做的SEO自然优化排名有影响。这个问题我自己也有疑问。 因为很多站长认为是起绝对反作用,什么只要用了竞价,停止之后,原本很好的排名都会掉光。我们不否定一…

idea开发 java web 酒店推荐系统bootstrap框架开发协同过滤算法web结构java编程计算机网页

一、源码特点 java 酒店推荐推荐系统是一套完善的完整信息系统,结合java web开发和bootstrap UI框架完成本系统 采用协同过滤算法进行推荐 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式…

JAVA8 新特性StreamAPI使用(二)

一、使用StreamAPI,(基于数据模型——客户、订单和商品,实体关系图如下,客户可以有多个订单,是一对多的关系,而产品和订单的关系是多对多的)需求如下: 二、Stream API思维导图 三、需…

用C/C++加Easyx实现俄罗斯方块游戏(爆肝4万字,完全免费)

前言 相信大家一定玩过俄罗斯方块这款小游戏,简单容易上手是老少皆宜的小游戏,今天大家就跟着我来实现这个小游戏吧!让自己学的C语言有用武之地。 为了让俄罗斯方块的开发更为简单些,图像更为丰富,在这里就利用了Easyx…

故障诊断 | 一文解决,PLS偏最小二乘法的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,PLS偏最小二乘法的故障诊断(Matlab) 模型描述 偏最小二乘法(Partial Least Squares, PLS)是一种统计建模方法,用于建立变量之间的线性关系模型。它是对多元线性回归方法的扩展,特别适用于处理高维数据和具有多重共线性的数据集。…

Java面向对象进阶基础知识

面向对象进阶 static 静态变量 被该类的所有的对象共享 不属于对象,属于类 随着类的加载而加载,优先于对象存在 类名调用(推荐) 对象名调用 static的注意事项 静态方法中没有this关键字 静态方法,只能访问静态 非静态方法可以访问所有 在Java中,static关…

在CentOS 7上安装Python 3.7.7

文章目录 一、实战步骤1. 安装编译工具2. 下载Python 3.7.7安装包3. 上传Python 3.7.7安装包4. 解压缩安装包5. 切换目录并编译安装6. 配置Python环境变量7. 使配置生效8. 验证安装是否成功 二、实战总结 一、实战步骤 1. 安装编译工具 在终端中执行以下命令 yum -y groupin…