集成算法,包括多种形式,顾名思义——可以是多种算法的集成,也可以是一种算法在不同设置下的集成,还可以将数据集的同部分分配不同的分类器,再将这些分类器进行集成。(包括boosting和bagging)

Bagging + 决策树 = 随机森林 
AdaBoost + 决策树 = 提升树 
Gradient Boosting + 决策树 = GBDT

再说到boost之前,先介绍下bagging(bootstrap aggregating)

bagging是一种基于数据随机重抽样的分类器构建方法,其是从原始数据集选择s次后得到s个新数据集的一种技术。一句话概括就是,用部分数据 or 部分特征 or 多个算法 训练一些模型;然后再组合这些模型,对于分类问题采用投票多数表决,回归问题采用求平均。——可以看出多模型组合的特点很适合并行计算

boosting(提升)是一个机器学习技术, 可以用于回归和分类问题, 它每一步产生一个弱预测模型(如决策树), 并加权累加到总模型中,最终得带一个强预测模型;

Boosting与bagging的不同处:

  • boosting是集中关注分类器错分的那些数据来获得新的分类器
  • bagging中分类器权重相等。
  • 而boosting中分类器的权值并不相等,分类器的错误率越低,那么其对应的权重也就越大,越容易对预测结果产生影响

Bagging方法主要有:

一、随机森林RF

前面说过 “bagging + 决策树(CRAT) = 随机森林”

算法构造的特点如下:

1)RF使用了CART决策树作为弱学习器。

2)RF对决策树算法进行了改进,RF通过随机选择节点上的一部份样本特征(,普通CART决策树则是选择节点上所有样本n),选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。

3)因为每个节点选取部分样本在划分,所以有:

越小,模型越健壮,拟合越差(bias越大)

在实际案例中,一般会通过交叉验证调参获取一个合适的的值。

RF算法的流程如下:

输入为样本集D=(x1,y1),(x2,y2),...(xm,ym),弱分类器迭代次数T。输出为最终的强分类器f(x)

1)对于t=1,2...,T
       a)对训练集进行第t次随机采样,得到一个包含m个样本的采样集Dm
       b)用采样集Dm训练第m个决策树模型Gm(x),在训练决策树模型的节点的时候, 在所有的特征中选择一部分特征,在这些随           机选择的部分样本特征中选择最优的特征来做决策树的左右子树划分。
2) 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。

作为一个可以高度并行化的算法,RF在大数据时候大有可为。这里也对常规的随机森林算法的优缺点做一个总结。

RF算法优点:

1)从算法流程可以看出,RF算法可以高度并行化,对于大数据时代的大样本训练速度有优势。

2)由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。

3)由于采用了随机采样,训练出的模型的方差小,泛化能力强,对部分特征缺失不敏感。

4)相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。

5)很容易地测量每个特征对预测的相对重要性。(sklearn中有方法)

RF的主要缺点有:

1) 在某些噪音比较大的样本集上,RF模型容易陷入过拟合。 
2) 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。

例:

如果您想预测某人是否会点击在线广告,可以收集该广告的过去点击人员以及能够描述其做决定的特征。一旦你将这些特征和标签放入决策树中,它会生成节点和一些规则,然后你就可以预测广告是否会被点击。但决策树通常通过计算信息增益和基尼指数来生成节点和规则时,相比之下,随机森林则是随机的。

另一个区别是“深度”决策树往往会遭遇过拟合问题。而随机森林则可以通过创建随机的特征子集并使用这些子集构建较小的树,随后组成子树,这种方法可以防止大部分情况的过拟合。要注意的是,这同时会使得计算速度变慢(可通过并行化解决),并取决于随机森林构建的树。

Boosting方法的主要版本有以下几种:

一、Adaboost

adaBoost分类器利用同一种基分类器(弱分类器,一般选择一阶的决策树),基于分类器的错误率分配不同的权重参数,最后累加加权的预测结果作为输出。

1、名词解释:

  • 弱分类器

一般指的是分类错误率接近50%。既只略优于随机猜测的分类器。adaboost即用相同的训练集,使用相同的弱分类器,选择不同的分类点,进行分类,并根据分类准确性,将准确率高的分类器的阀值提高,最后集成若干弱分类器。

  • 权重

有两种权重:一种是数据的权重W,另一种是弱分类器的权重alpha

2、分类器训练过程

1)训练全部的训练集集,为每一个样本赋予权重w,初始时权重相等(可选为1/n,其中n为样本个数)。

2)首先在训练数据集上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器,但是在第二次训练时,将会根据分类器的错误率,对数据集中样本的各个权重进行调整。将正确分类的样本权重降低,加大错误分类的样本权重。(保证权重总和=1)

3)最终,基于每个弱分类器的错误率,为所有弱分类器分配一个权重alpha。

*其中ε为分类的误差率,m为轮次i。max(ε,1e-16)是为了防止误差率率为0而造成分母为0

可以看出,alpha>0,且随着误差率ε减小而增大。

4)进行样本权重更新,既使“分类错误样本获得更高权重D”。D的更新公式为:

分类正确的样本:

分类错误的样本:

其中Z的公式为:

*其中m为第m个分类器,既迭代轮数为m。i为权重向量的第i个分量

由上式可得——分类错误和正确的样本,其权重会相差e^(2*alpha)倍,刚好是,可知分类越准确,这个权重倍差越大。

5)按照以上步骤循环直到达到停止条件(达到设定的迭代次数,或者样本的训练错误率为0)


3、思考:两个权重的意义    

1)W:有一个问题,如果训练数据保持不变,那么单层决策树找到的最佳决策点每一次必然都是一样的 ,这是因为单层决策树把所有可能的决策点找了一遍之后选择了最好的。所以在数据不变的情况下,必须使用数据权重。即,在秋分类的误差时候,Adaboost要求其乘上权重,即计算带上权重的误差。 例如:

在以前没有权重时(其实是平局权重时),一共10个点时,对应每个点的权重都是0.1,分错1个,错误率就加0.1;分错3个,错误率就是0.3。现在,每个点的权重不一样了,还是10个点,权重依次是[0.01,0.01,0.01,0.01,0.01,0.01, 0.01,0.01,0.01,0.91],如果分错了第1一个点,那么错误率是0.01,如果分错了第3个点,那么错误率是0.01,要是分错了最后一个点,那么错误率就是0.91。            

2)alpha: 由于Adaboost中若干个分类器的关系是第N个分类器更可能分对第N-1个分类器没分对的数据,而不能保证以前分对的数据也能同时分对。所以在Adaboost中,每个弱分类器都有各自最关注的点,每个弱分类器都只关注整个数据集的中一部分数据,所以它们必然是共同组合在一起才能发挥出作用。所以最终投票表决时,需要根据弱分类器的权重来进行加权投票,权重大小是根据弱分类器的分类错误率计算得出的,总的规律就是弱分类器错误率越低,其权重就越高。

3)训练误差分析

最终的分类器是一个加法模型(组合各个弱分类器)

G(x) = sign(f(x))

损失函数为指数函数:

L(y,f(x)) = exp(-y*f(x))

4、Adaboost的优缺点

1)使用简单的弱分类器,不用对特征进行筛选,也不存在过拟合的现象。

2)Adaboost算法不需要弱分类器的先验知识,最后得到的强分类器的分类精度依赖于所有弱分类器。无论是应用于人造数据还是真实数据,Adaboost都能显著的提高学习精度。

3)Adaboost算法不需要预先知道弱分类器的错误率上限,且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,可以深挖分类器的能力。Adaboost可以根据弱分类器的反馈,自适应地调整假定的错误率,执行的效率高。

4)Adaboost可以在不改变训练数据,只改变数据权值分布,使得数据在不同学习器中产生不同作用,类似于重采样。

缺点:

1)在Adaboost训练过程中,Adaboost会使得难于分类样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致Adaboost算法易受噪声干扰。此外,Adaboost依赖于弱分类器,而弱分类器的训练时间往往很长。

二、GBDT(Gradient Boosting Decision Tree)

GBDT全称梯度下降树,在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一。在被提出之初就和SVM一起被认为是泛化能力较强的算法。

Gradient Boosting + 决策树 = GBDT(Gradient Boosting Decision Tree).......名字是不是显而易见?

顾名思义,这也是一种多决策树叠加的集成算法。且每一步的弱预测模型生成都是依据损失函数的梯度方向, 称之为梯度提升(Gradient boosting)。

不过需要注意的是:

           GBDT中的树是回归树(不是分类树)。( GBDT的核心在于累加所有树的结果作为最终结果,就像前面对年龄的累加(-3是加负3),而分类树的结果显然是没办法累加的,所以GBDT中的树都是回归树,不是分类树)

和随机森林RF算法可以看出,RF中的决策树是独立采样和构建,最后投票的。而从Adaboost,是在每一次构建弱分类器的时候,就对弱分类器的权重进行了定义。

所以我们想,随机森林最终投票的决策方式,是否可以变为——在构建随机森林的各个决策树的过程中就可以确定(权重?)?

四、Xgboost

机器学习笔记系列---集成学习相关推荐

  1. 机器学习笔记之集成学习(四)Gradient Boosting

    机器学习笔记之集成学习--Gradient Boosting 引言 回顾: Boosting \text{Boosting} Boosting算法思想与 AdaBoost \text{AdaBoost ...

  2. 机器学习笔记(八)集成学习

    8.集成学习 8.1个体与集成 集成学习(ansemblelearning)通过构建并结合多个学习器来完成学习任务,也称为多分类器系统(multi-classifiersystem).基于委员会的学习 ...

  3. 机器学习系列笔记十三: 集成学习/模型聚合

    机器学习系列笔记十三: 集成学习/模型聚合 文章目录 机器学习系列笔记十三: 集成学习/模型聚合 什么是集成学习 Voting Hard Voting 模拟实现Hard Voting 集成学习 使用V ...

  4. python3《机器学习实战系列》学习笔记----3.2 决策树实战

    前言 一.ID3算法构造决策树 1.1 背景 1.2 信息增益计算 1.3 递归生成决策树 二.使用Matplotlib注解绘制树形图 2.1 Matplotlib注解 2.2 构造注解树 三.测试和 ...

  5. 笔记 | 《机器学习》手推笔记更新集成学习(Boosting和随机森林)

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng [人工智能资源(书籍+视频)全网收集 ...

  6. 机器学习读书笔记:集成学习

    文章目录 集成学习 AdaBoost 代码 Bagging与随机森林 Bagging 随机森林(Random Forest) 结合策略 增加多样性的策略 多样性度量 集成学习 ​ 之前已经讲过了好几个 ...

  7. 机器学习中的集成学习模型实战完整讲解

    2019-12-03 13:50:23 集成学习模型实践讲解 --沂水寒城 无论是在机器学习领域还是深度学习领域里面,通过模型的集成来提升整体模型的性能是一件非常有效的事情,当前我们所接触到的比较成熟 ...

  8. 【机器学习】使用集成学习回归器改善预测模型的得分

    作者 | SHYAM2106 编译 | Flin 来源 | analyticsvidhya 介绍 集成的一般原则是将各种模型的预测与给定的学习算法相结合,以提高单个模型的鲁棒性. "整体大于 ...

  9. 机器学习实战-54: 集成学习分类算法(ada-boost)

    集成学习分类算法 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 集成学习分类算法(ada-boost)属于监督学习算法.常用分类算法包括:逻辑回归(Logistic Regress ...

最新文章

  1. PHP的命令行脚本调用
  2. 深度解析KGDB调试Linux模块和内核
  3. 2006年世界杯小组赛日程表
  4. ubuntu 安装 Sublime Text 2
  5. Mzc和男家丁的游戏
  6. ITK:两个图像的像素分割
  7. 不是明年年初?苹果明年三季度才会推出AirPods Pro 2
  8. hibernate中java类的成员变量类型如何映射到SQL中的数据类型变化
  9. RedHat 9 Linux SendMail 的配置
  10. SIM868使用笔记
  11. 线粒体和叶绿体的基因组特点_叶绿体和线粒体基因组的组装研究
  12. HDoj 1862
  13. 联想笔记本小新air14,键盘如何设置不用按Fn直接按F1~12、?
  14. 10种方法打开EPUB文件
  15. webpack基础配置
  16. android 读写cpu卡,RAM/CPU和SD卡读写性能提升_联想 K860i_手机Android频道-中关村在线...
  17. 国际会计准则IAS 和 IFRS
  18. 区分浏览器,判断浏览器版本
  19. 附带有背景图、文字的二维码
  20. Linux centos 64位 mysql安装教程

热门文章

  1. 用 Python 将神龙大侠搞怪 GIF 转为字符动画
  2. Apache Maven项目提供的EAR插件详解
  3. OBJECT ARX 移动,拷贝 旋转,镜像,缩放
  4. python通过fancy indexing把数组转换为one hot编码的numpy array
  5. 蓝桥杯 BFS 高桥买酒
  6. 高德地图 JS API (地图/地图属性)
  7. 今天出一期官方正版Minecraft如何安装光影的教程 反正没人看 官方正版Minecraft如何安装OptiFine 官方正版Minecraft如何安装光影
  8. The expression after ELSE should have the same type as those after THEN: bigint is expected but i
  9. 【论文阅读】GearDB: A GC-free Key-Value Store on HM-SMR Drives with Gear Compaction
  10. 「题解」CF1468M Similar Sets