集成学习

  • 概述
  • 一、Boosting
    • 1、Boosting
    • 2、GBDT (Gradient Boosting Decision Tree)
    • 3、XGBoost(Extreme Gradient Boosting)
  • 二、Bagging 与 Random Forest
    • 1、Bagging
    • 2、RF(Random Forest)

概述

集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务。

要获得好的集成,个体学习器应该“好而不同

集成学习分类:
个体学习器间存在强依赖关系,必须串行生成的序列化方法:Boosting
个体学习器间不存在强依赖关系,可以同时生成的并行化方法:Bagging、随机森林(Random Forest)

一、Boosting

1、Boosting

工作机制:先从初始训练集训练出一个基学习器,然后根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本再后续会受到更多关注,然后基于调整后的训练样本分布来训练下一个基学习器;如此重复进行,直至基学习器数量达到事先指定的值T,最终结果是将这T个基学习器进行加权结合
从偏差-方差的角度看,Boosting 主要关注降低偏差
【Boosting 族算法最著名的代表是 AdaBoost,即基学习器的线性组合】

2、GBDT (Gradient Boosting Decision Tree)

GBDT(梯度提升决策树)与传统的Boosting区别较大,它的每一次计算都是为了减少上一次的残差,而为了消除残差,我们可以在残差减小的梯度方向上建立模型。所以说,在GradientBoost中,每个新的模型的建立是为了使得之前的模型的残差往梯度下降的方向,与传统的Boosting中关注正确错误的样本加权有着很大的区别。

在GradientBoosting算法中,关键就是利用损失函数的负梯度方向在当前模型的值作为残差的近似值,进而拟合一棵CART回归树。

GBDT的会累加所有树的结果,而这种累加是无法通过分类完成的,因此GBDT的树都是CART回归树,而不是分类树(尽管GBDT调整后也可以用于分类但不代表GBDT的树为分类树)。

优点:

  1. 它能灵活的处理各种类型的数据;
  2. 在相对较少的调参时间下,预测的准确度较高。
  3. 预测阶段的计算速度快,树与树之间可并行化计算。
  4. 在分布稠密的数据集上,泛化能力和表达能力都很好。
  5. 采用决策树作为弱分类器使得GBDT模型具有较好的解释性和鲁棒性,能够自动发现特征间的高阶关系。

缺点:

  1. 由于它是Boosting,因此基学习器之前存在串行关系,难以并行训练数据
  2. GBDT在高维稀疏的数据集上,表现不如支持向量机或者神经网络。
  3. GBDT在处理文本分类特征问题上,相对其他模型的优势不如它在处理数值特征时明显。
  4. 训练过程需要串行训练,只能在决策树内部采用一些局部并行的手段提高训练速度。

3、XGBoost(Extreme Gradient Boosting)

XGBoost的性能在GBDT上又有一步提升,能够自动地运用CPU的多线程进行并行计算,同时在算法精度上也进行了精度的提高。

由于GBDT在合理的参数设置下,往往要生成一定数量的树才能达到令人满意的准确率,在数据集较复杂时,模型可能需要几千次迭代运算。但是XGBoost利用并行的CPU更好的解决了这个问题。

其实XGBoost和GBDT的差别也较大,这一点也同样体现在其性能表现上,详见XGBoost与GBDT的区别。

二、Bagging 与 Random Forest

为了获得“好而不同”的基学习器,可以考虑使用相互有交叠的采样子集
自助采样法(bootstrap sampling):m 个样本数据集进行有放回的 m 次抽样得到一个采样集(初始训练集中约有63.2%的样本出现在采样集中)

1、Bagging

Bagging 直接基于自助采样法,采样出 T 个含有 m 个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些学习器进行结合。在对预测输出进行结合时,通常对分类任务使用简单投票法,对回归任务使用简单平均法

优点:

  1. 与标准AdaBoost只适用于二分类任务不同,Bagging能不经修改地用于多分类、回归。
  2. 自助采样中剩余的约36.8%的样本有很多别的用处,如:用作验证集进行“包外估计”,决策树的辅助剪枝,估计决策树各结点的后验概率辅助对零训练样本结点的处理。神经网络的辅助及早停止以减小过拟合。

2、RF(Random Forest)

Random Forest 是Bagging的扩展变体,它在以决策树 为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机特征选择,因此可以概括RF包括四个部分:

  1. 随机选择样本(放回抽样);
  2. 随机选择特征;
  3. 构建决策树;
  4. 随机森林投票(平均)。

随机选择样本和Bagging相同,随机选择特征是指在树的构建中,会从样本集的特征集合中随机选择部分特征,然后再从这个子集中选择最优的属 性用于划分,这种随机性导致随机森林的偏差会有稍微的增加(相比于单棵不随机树),但是由于随机森林的‘平均’特性,会使得它的方差减小,而且方差的减小补偿了偏差的增大,因此总体而言是更好的模型。

优点:

  1. 在数据集上表现良好,相对于其他算法有较大的优势(训练速度、预测准确度)
  2. 能够处理很高维的数据,并且不用特征选择,而且在训练完后,给出特征的重要性
  3. 容易做成并行化方法。

缺点:在噪声较大的分类或者回归问题上会过拟合。


RF和Bagging对比

RF的起始性能较差,特别当只有一个基学习器时,随着学习器数目增多,随机森林通常会收敛到更低的泛化误差。随机森林的训练效率也会高于Bagging,因为在单个决策树的构建中,Bagging使用的是‘确定性’决策树,在选择特征划分结点时,要对所有的特征进行考虑,而随机森林使用的是‘随机性’特征数,只需考虑特征的子集。

RF(随机森林)与GBDT对比:

相同点:

  1. 都是由多棵树组成,最终的结果都是由多棵树一起决定。
  2. RF和GBDT在使用CART树时,可以是分类树或者回归树。

不同点:

  1. 组成随机森林的树可以并行生成,而GBDT是串行生成
  2. 随机森林的结果是多数表决表决的,而GBDT则是多棵树累加之和
  3. 随机森林对异常值不敏感,而GBDT对异常值比较敏感
  4. 随机森林是减少模型的方差,而GBDT是减少模型的偏差
  5. 随机森林不需要进行特征归一化。而GBDT则需要进行特征归一化(因为GBDT的树是在上一颗树的基础上通过梯度下降求解最优解,归一化能收敛的更快,而随机森林本来就是通过减少方差提高性能的,树之间建立关系是独立的,不需要归一化)

集成学习(西瓜书学习)相关推荐

  1. 西瓜书学习笔记第2章(模型评估与选择)

    西瓜书学习笔记第2章(模型评估与选择) 2.1经验误差与过拟合 2.2评估方法 2.2.1留出法(hold-out) 2.2.2交叉验证法(cross validation) 2.2.3自助法(boo ...

  2. 西瓜书学习记录-神经网络(第五章)

    西瓜书学习记录-神经网络(第五章) 第五章啦,大佬的视频没讲第五章,所以看书自学一下: 书籍来自周志华的<机器学习>.

  3. 西瓜书学习记录-决策树(第四章)

    西瓜书学习记录-决策树(第四章) 第四章啦 知乎黄耀鹏-决策树算法的Python实现: https://zhuanlan.zhihu.com/p/20794583 一般分布例子如下:(见下具体例题) ...

  4. 西瓜书学习记录-线性模型(第三章)

    西瓜书学习记录-线性模型(第三章) 第三章啦 反函数(上图) 梯度下降法: 补充:: 看的大佬的教学视频,标明一下出处: https://www.bilibili.com/video/BV17J411 ...

  5. 西瓜书学习记录-绪论

    西瓜书学习记录-绪论 看了一下大神录的西瓜书读书记录,学习到很多东西,这里记录一下自己学习的一些截屏记录,方便以后再来复习,致敬大神们的讲解,感谢感谢. 看的大佬的教学视频,标明一下出处: https ...

  6. 西瓜书学习记录-模型评估与选择(第二章)

    西瓜书学习记录-模型评估与选择 第二章啦 整个过程可以描述为在训练集上去训练,在验证集上去调参,调完参之后再到训练集上去训练,直到结果满意,最后到测试集上去测试. 例子(反例): 上图选择蓝色的线,坏 ...

  7. 【DataWhale学习】Day10~13-4章决策树——西瓜书学习摘录笔记

    [DataWhale学习]Day10~13-4章决策树--西瓜书学习摘录笔记 本文参考了周志华老师的西瓜书,李航老师的统计学习方法,谢文睿大佬的南瓜书(无推导尿点,仅加深理解食用) 决策树模型 ​ 决 ...

  8. 周志华西瓜书学习笔记(一)

    周志华西瓜书学习笔记 第一章 绪论 数据处理分为三个阶段:收集,分析,预测. 一.基本概念 机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能. Mitchell给出的更形式化的定义为 ...

  9. 西瓜书--学习笔记1

    西瓜书–学习笔记1 第一章 1.分类和回归是监督学习的代表,而聚类是无监督学习的代表. 2.归纳和演绎是科学推理的两大基本手段. 归纳:从特殊到一般的"泛化"过程,即从具体的事实归 ...

  10. 【数据科学系统学习】机器学习算法 # 西瓜书学习记录 [8] 支持向量机(二)...

    这两篇内容为西瓜书第 6 章支持向量机 6.1,6.2,6.4,6.3 的内容: 6.1 间隔与支持向量 6.2 对偶问题 6.4 软间隔与正则化 6.3 核函数 由于本章内容较多,分为两篇来叙述.本 ...

最新文章

  1. JavaScript那些事儿(1):对比JavaScript和jQuery的Dom操作
  2. Sentinel(三)之如何使用
  3. arm java 性能怎么样,ARM v6上使用java的Number to String转换性能
  4. 【转发】响应式Web设计?怎样进行?
  5. 【Java从入门到头秃专栏 8】语法篇(七) :反射 动态代理 注解
  6. MySQL之Index(索引)
  7. Oracle统计信息锁,oracle 由于impdp 引起的表统计信息被锁 ORA-20005: object statistics are locked...
  8. Css3 Column实现瀑布流
  9. P2207 Photo
  10. c语言手机程序代码,C语言必背18个经典程序(示例代码)
  11. Android识别图片坐标,Android 取到ImageView背景图片中某处的相对坐标
  12. buildSrc使用,依赖统一管理
  13. Vue家谱视图结构- vue-tree-chart
  14. HTML的基本结构语法
  15. java流程图都有哪些,盘点国内都有哪些免费好用的流程图设计工具
  16. [Unity-26] AnimationClip压缩-动画文件压缩
  17. 搜狗2012校招在线评测_信息编码程序
  18. Python入门: 贪吃蛇详解
  19. 网易云评论 爬虫 java_网易云音乐资源爬取(登录+评论)
  20. python入门之python编程语言(简介)

热门文章

  1. SensorKernel层框架分析
  2. 一场不能只看结果的较量
  3. 给ubuntuGedit安装gedit-source-code-browser
  4. mysql declare 赋值_sql server和mysql变量赋值的区别 以及 MySql Declare
  5. python和c语言混合编程-python和C语言混编的几种方式
  6. 如何 给给软件开发 添加 代理_敏捷开发是如何被跑偏的
  7. 使用预训练模型进行句对分类(Paddle、PyTorch)
  8. LeetCode 1058. 最小化舍入误差以满足目标(排序+贪心)
  9. LeetCode 361. 轰炸敌人(前缀和DP)
  10. LeetCode 1411. 给 N x 3 网格图涂色的方案数(数学)