一张图介绍机器学习中的集成学习算法

简介: 机器学习在当下早已成为一项热门的技术,在众多机器学习算法中,除去深度学习和强化学习等最新发展方向,若是谈及经典机器学习算法,那么集成学习算法无论是在效果上还是热度上都是当之无愧的焦点。今天本文就来简要介绍那些经典的集成学习算法。

640.png集成学习算法的三大派系


所谓集成学习,顾名思义,就是集成多个基学习器的结果,采用一定的融合机制得到一个更为精准和稳定的结果。这其中,隐藏一个重要条件是:多个基学习器的学习结果要存在差异性,否则如果基学习器结果完全相同则无论用何种融合策略都得不到更好的集成结果。按照对多个基学习器集成策略和融合机制的不同,集成学习主要包含三大派系:


  • bagging,全称即为bootstrap aggregating,主要是通过并行独立地训练多个基学习器,而后采取投票或加权的方式融合多个学习结果,以期得到更为精准的结果,三个臭皮匠赛过诸葛亮就是这个道理;


  • boosting,翻译过来即为提升的意思,是采取串行的方式逐一提升学习效果的方式,颇有后人站在前面巨人肩膀上的意味;


  • stacking,"stack"是数据结构与算法中栈的英文,用在这里即表达集成的方式其实也隐藏了先后和递进的思想,不同于boosting的是:stacking是将众多基学习器的结果作为输入实现再训练的过程,有些类似于多层神经网络的思想。


01 bagging


bagging,基本套路就是以多取胜。通过并行训练多个独立的基学习器,而后对所有基学习器预测结果进行融合,得到最终的集成预测结果。这里,为了保证集成学习结果优于基学习器,则要求多个基学习器预测结果不同,而达成这一目的的方法一般就是采样:通过行采样或者列采样来得到不同的训练集,进而每个基学习器的训练结果都不同。根据行采样和列采样方式的不同,bagging流派又分为以下4种方法:


  • 仅对样本维度(体现为行采样)进行采样,且采样是有放回的,意味着每个弱学习器的K个采样样本中可能存在重复的样本,此时对应bagging算法,这里bagging=bootstrap aggregating。发现,这个具体算法的名字与bagging流派的名字重合,这并不意外,因为这是bagging中一种经典的采样方式,因而以其作为流派的名字。当然,bagging既是一种算法也是流派名,那就要看是狭义还是广义的bagging来加以区分了


  • 仅对样本维度采样,但采样是无放回的,意味着对于每个弱学习器的K个采样样本是完全不同的,由于相当于是每执行一次采样,则该样本就被舍弃掉(pass),所以此时算法叫做pasting


  • 前两者的随机性均来源于样本维度的随机采样,也就是行方向上,那么对于列方向上进行随机采样是否也可以呢?比如说每个弱学习器都选用所有的样本参与训练,但各学习器选取参与训练的特征是不一致的,训练出的算法自然也是具有随机性的,可以满足集成的要求。此时,对应算法叫做subspaces,中文译作子空间,具体说是特征维度的子空间,名字还是比较传神的


  • 发现,既有样本维度的随机,也有特征维度的随机,那么自然想到有没有兼顾二者的随机呢,也就是说每个弱学习器既执行行采样、也有列采样,得到的弱学习器其算法随机性应该更强。当然,这种算法被称作是patches,比如前文已经提到的随机森林就属于这种。实际上,随机森林才是最为广泛使用的bagging流派集成学习算法。


02 boosting


如果说bagging的基本套路是以多取胜,那么boosting的基本套路则是车轮战!即boosting采取逐个基学习器递进训练的方式进行,通过不断弥补前面基学习器存在的短板和问题,来实现最终整体效果上的提升。这里,针对弥补短板的不同,boosting其实也存在两大方法:


  • Adaboost:针对前一轮预测错误的样本,不断加强对这些易错样本的权重,具体是通过对各样本分配不同的权重系数来实现。这就好比说一个学生能够针对历次学习考试建立自己的错题集,来实现有的放矢的提高;


  • GBDT:不断弥补前面训练的差距,实现整体效果上的逼近,具体是将真实值与预测值的差值等效为梯度的方法实现提升。


二者都是针对前一轮训练的弱点,加以针对性的弥补以实现训练得到更好的学习器。方法论是一致的,但当下的发展热门程度则天差地别。目前来看,Adaboost应用场合相对较为有限,并大有逐渐淡出大众视野的趋势,而GBDT的思想则更为火热,并日益衍生更多的迭代改进版本,例如当下最火热的三大集成学习算法就都是基于GBDT的改进提升:


  • Xgboost,这是对GBDT的第一个改进,源于AI大神陈天齐(本科是上海交大ACM毕业),与GBDT最大的差异在于对目标函数的改进(本质上是taylor一级展开到二级展开的改进),另有一些工程实现上的差异;


  • Lightgbm,这是在Xgboost的基础上做的进一步改进,源于微软团队。正如其名字中的light一样,lightgbm本质上是在达到与xgboost相近效果的基础上,大幅提高训练速度,这其中得益于三项算法或机制:①数值维度上,进行了基于直方图统计的分箱处理,简化了数据存储和分裂点的选取;②样本维度上,采取了单边梯度采样算法,避免低梯度样本的计算量;③特征维度上,采用了互斥特征捆绑(好吧,这个名字着实拗口),就是对多个稀疏特征进行合并,实现特征数量的降维。此外,Lightgbm与Xgboost的另一个显著区别是采用了leaf-wise的决策树生长策略,确保每次分裂都是有意义的;


  • Catboost,出道时间要略晚于Lightgbm,源于俄罗斯互联网巨头Yandex,其实也是对Xgboost的改进,最大不同是原生支持Cat型特征而无需转化为数值,另外也支持对缺失值的自动处理。不过在竞赛中的应用并不是很多。

总体来看,以Xgboost、Lightgbm和Catboost为代表的boosting集成学习流派才是机器学习领域的焦点之战,也基本代表了经典机器学习算法的研究方向和热点聚焦。


从另一个角度来看,这三种算法也可视做分别源于中、美、俄……好吧,大国之争果真无处不在!


03 Stacking


Stacking的思想其实可视为bagging+boosting的混合体,即先并行训练多个基学习器,而后以多个基学习器的训练结果为特征数据,进一步训练第二阶段的学习器,以期得到更为精准的结果。当然,照此流程,其实还可以训练第三波第四波,这就真的好似深度神经网络了……不过,可能也正因为其思想过于贴近于深度神经网络,所以Stacking方式的集成学习貌似也并未得到广泛应用。


640.png

目录
相关文章
|
21天前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
41 3
|
2月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十三章 集成测试
本文是《软件质量保护与测试》(第2版)第十三章的学习总结,介绍了集成测试的概念、主要任务、测试层次与原则,以及集成测试的不同策略,包括非渐增式集成和渐增式集成(自顶向下和自底向上),并通过图示详细解释了集成测试的过程。
72 1
软件质量保护与测试(第2版)学习总结第十三章 集成测试
|
2月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
169 1
|
2月前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
117 0
|
2月前
|
机器学习/深度学习 算法 前端开发
集成学习任务七和八、投票法与bagging学习
集成学习任务七和八、投票法与bagging学习
27 0
|
2月前
|
机器学习/深度学习 算法
【机器学习】迅速了解什么是集成学习
【机器学习】迅速了解什么是集成学习
|
3月前
|
机器学习/深度学习 人工智能 搜索推荐
如何让你的Uno Platform应用秒变AI大神?从零开始,轻松集成机器学习功能,让应用智能起来,用户惊呼太神奇!
【9月更文挑战第8天】随着技术的发展,人工智能与机器学习已融入日常生活,特别是在移动应用开发中。Uno Platform 是一个强大的框架,支持使用 C# 和 XAML 开发跨平台应用(涵盖 Windows、macOS、iOS、Android 和 Web)。本文探讨如何在 Uno Platform 中集成机器学习功能,通过示例代码展示从模型选择、训练到应用集成的全过程,并介绍如何利用 Onnx Runtime 等库实现在 Uno 平台上的模型运行,最终提升应用智能化水平和用户体验。
66 1
|
3月前
|
机器学习/深度学习 存储 数据采集
Elasticsearch 与机器学习的集成
【9月更文第3天】Elasticsearch 不仅仅是一个强大的分布式搜索和分析引擎,它还是一个完整的数据平台,通过与 Kibana、Logstash 等工具结合使用,能够提供从数据采集、存储到分析的一站式解决方案。特别是,Elasticsearch 集成了机器学习(ML)功能,使得在实时数据流中进行异常检测和趋势预测成为可能。本文将详细介绍如何利用 Elasticsearch 的 ML 功能来检测异常行为或预测趋势。
96 4
|
4月前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
89 0
|
21天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
65 4