专栏首页小数志一张图介绍机器学习中的集成学习算法

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

导读

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

集成学习算法的三大派系

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

  • 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方式的集成学习其实并未得到广泛应用。

本文分享自微信公众号 - 小数志(Datazhi),作者:luanhz

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-07-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 机器学习算法之集成学习

    "We won't be distracted by comparison if we are captivated with purpose.—— Bob G...

    小闫同学啊
  • 机器学习 | 集成算法

    集成算法(Emseble Learning)是构建多个学习器,然后通过一定策略结合把它们来完成学习任务的,常常可以获得比单一学习显著优越的学习器。它本身不是一个...

    数据STUDIO
  • 机器学习:集成学习之AdaBoost算法

    集成学习(Ensemble Learning),简单来说,就是先通过一定的规则生成多个学习器,再采用某种集成策略进行组合,最后综合判断输出最终结果。一般而言,通...

    夸克
  • 机器学习中常用优化算法介绍

    磐创AI
  • 机器学习概述与算法介绍

    iOSDevLog
  • 最全的机器学习中的优化算法介绍

    在机器学习中,有很多的问题并没有解析形式的解,或者有解析形式的解但是计算量很大(譬如,超定问题的最小二乘解),对于此类问题,通常我们会选择采用一种迭代的优化方式...

    大数据技术与机器学习
  • 算法大赛神器:集成学习方法关键点介绍

    本文的目的是介绍集成学习方法的各种概念。将解释一些必要的关键点,以便读者能够很好地理解相关方法的使用,并能够在需要时设计适合的解决方案。

    deephub
  • 机器学习概述与算法介绍(二)

    iOSDevLog
  • 集成学习:一种先进的机器学习方法

    集成学习方法是一类先进的机器学习方法,这类方法训练多个学习器并将它们结合起来解决一个问题,在实践中获得了巨大成功,并成为机器学习领域的“常青树”,受到学术界和产...

    统计学家
  • 机器学习集成算法:XGBoost思想

    《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来...

    企鹅号小编
  • 机器学习集成算法:XGBoost思想

    《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来...

    double
  • 使用集成学习提升机器学习算法性能

    译者注:这篇文章是对 PythonWeekly 推荐的一篇讲集成模型的文章的翻译,原文为 Ensemble Learning to Improve Machi...

    Alan Lee
  • 【R机器学习】一种基于K近邻法的集成学习算法概要

    编辑部 大家期待已久的R语言版块终于和你们见面了。本期是我们R语言编辑部Chen 编辑的文章。希望大家有所收获! 1、引言 构建量化策略,首先需要找到具有所谓...

    量化投资与机器学习微信公众号
  • 简单易学的机器学习算法——集成方法(Ensemble Method)

    一、集成学习方法的思想 前面介绍了一系列的算法,每个算法有不同的适用范围,例如有处理线性可分问题的,有处理线性不可分问题。在现实世界的生活中,常常会因为“集体...

    zhaozhiyong
  • 简单易学的机器学习算法——集成方法(Ensemble Method)

    前面介绍了一系列的算法,每个算法有不同的适用范围,例如有处理线性可分问题的,有处理线性不可分问题。在现实世界的生活中,常常会因为“集体智慧”使得问题被很容易解...

    zhaozhiyong
  • 一文简介常见的机器学习算法

    原文 joydeep bhattacharjee 千平 编译整理 量子位 出品 | 公众号 QbitAI ? 所谓机器学习算法就是一个假设集合,用于找到最优模型...

    量子位
  • 机器学习集成算法:XGBoost模型构造

    《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来...

    double
  • Weka机器学习使用介绍(数据+算法+实战)

    Weka是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis)的英文字首缩写,新西兰怀卡托大学用Java开...

    Minerva
  • 图形搜索中用到的机器学习基础介绍

    针对目标图像(具有统一特征的图像),进行基于深度学习技术的模型训练,通过调优模型结构与参数,得到对于指定图像具有提取特征信息的模型 M。将库中所有图像通过 M ...

    用户2434869

扫码关注云+社区

领取腾讯云代金券