首页 > 编程语言 > 详细

机器学习算法概述第六章——集成学习

时间:2019-12-28 15:19:34      阅读:125      评论:0      收藏:0      [点我收藏+]

集成学习

  集成算法
  随机森林(前身是bagging或者随机抽样)(并行算法)
  提升算法(Boosting算法)
  GBDT(迭代决策树) (串行算法)
  Adaboost (串行算法)
  Stacking
————————————————————————————————————————————
集成算法 
  
集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器。
弱分类器(weaklearner)指那些分类准确率只稍微好于随机猜测的分类器(准确率稍大于百分之50,可以是之前学过的逻辑回归线性回归等所有算法);
同质集成:集成中的基学习器是用相同的学习算法构成,例如:决策树或神经网络等
异质集成:集成中的基学习器是用不同的学习算法构成,例如:决策树和神经网络等集成学习(EnsembleLearning),大多数是异质集成
 
各个弱分类器一定要有差异性,不然不起作用,如图b。
各个弱分类器一定要有一定的准确性,不然会起副作用,如图c。
技术分享图片

 

 

Bagging算法: 
  凡解:给定M个数据集,有放回的随机抽取M个数据,假设如此抽取3组,3组数据一定是有重复的,所以先去重。去重后得到3组数据,每组数据量分别是s1,s2,s3,然后三组分别训练组合成一个强模型。如下图:
技术分享图片

 

 随机森林算法

  一般用于大规模数据,百万级以上的。

  在Bagging算法的基础上,如上面的解释,在去重后得到三组数据,那么再随机抽取三个特征属性,选择最佳分割属性作为节点来创建决策树。可以说是

随机森林=决策树+Bagging
 如下图
技术分享图片

RF(随机森林)的变种:

  ExtraTree算法

  凡解:和随机森林的原理基本一样。主要差别点如下

①随机森林是在含有m个数据的原数据集上有放回的抽取m个数据,而ExtraTree算法是直接用原数据集训练。

②随机森林在选择划分特征点的时候会和传统决策树一样,会基于信息增益、信息增益率、基尼系数、均方差等原则来选择最优特征值;而ExtraTree会随机的选择一个特征值来划分决策树。

  TRTE算法

  不重要,了解一下即可

  官解:TRTE是一种非监督的数据转化方式。对特征属性重新编码,将低维的数据集映射到高维,从而让映射到高维的数据更好的应用于分类回归模型。

   划分标准为方差

  看例子吧直接:

  技术分享图片

 

 

  IForest

  IForest是一种异常点检测算法,使用类似RF的方式来检测异常点

   此算法比较坑,适应性不强。

  1.在随机采样的过程中,一般只需要少量数据即可;

  •2.在进行决策树构建过程中,IForest算法会随机选择一个划分特征,并对划分特征随机选择一个划分阈值;

  •3.IForest算法构建的决策树一般深度max_depth是比较小的。

  此算法可以用,但此算法连创作者本人也无法完整的解释原理。

RF(随机森林)的主要优点:

●1.训练可以并行化,对于大规模样本的训练具有速度的优势;

●2.由于进行随机选择决策树划分特征列表,这样在样本维度比较高的时候,仍然具有比较高的训练性能;

●3.可以给出各个特征的重要性列表;
●4.由于存在随机抽样,训练出来的模型方差小,泛化能力强;
●5. RF实现简单;
●6.对于部分特征的缺失不敏感。
RF的主要缺点:
1.在某些噪音比较大的特征上(数据特别异常情况),RF模型容易陷入过拟合;
●2.取值比较多的划分特征对RF的决策会产生更大的影响,从而有可能影响模型的
效果。

 随机树主要参数,划线部分为主要调整的参数
技术分享图片

Boosting算法

  关键点与难点在于如何修改数据

  原理:将 含有m个数据的数据集 丢给一个弱学习器1分类,比如分对百分之60,

那么经过一定手段修改数据集,数据个数还是m个,将修改后的数据集扔给弱学习器2训练,学习器2把在学习器1中分错的那一部分又分对百分之三十。

再修改数据集,将修改后的数据集扔给弱学习器3训练,学习器3把在学习器1和2中分错的那一部分又分对百分之三十。

最后加权融合为一个强学习器。

......

......

如下图:

技术分享图片

 重点:修改数据集的方法

①凡解(配图讲解,绝对可以懂)

设原数据集为D,将其咔嚓好几刀分为n份,假设分成了三份,一份70%,一份20%,一份10%。

先拿70%这份去给弱分类器C1进行训练,假设C1分对了55%,分错了45%。

再提溜20%那一份作为测试集,扔给C1训练,分对了算C1牛批,C1没出息分错了的话就扔给楼下的D2数据集

C1分错了的数据加上一些C1分对了的数据共同组成数据集D2,把D2丢给一个新的弱分类器C2训练。(为什么加上一些C1分对了的数据?为了保证数据的完整性,如果D2中含有C1分的错的多,那么C2分类时就会偏向于C1分错的这部分,因为它多啊,所以尽量D2中是一半C1分对的,一半C1分错的)

 以此类推,生生不息

老板,上图!

 技术分享图片

②AdaBoost算法修改数据

最好用来作分类

凡解:总而言之一句话:修改权重,基于上上个图片,可以看出,一个一个的弱分类器分类后,越往后的弱分类器分类误差率越小,也就是分类效果越好(因为分类错误的越来越少了),

官解一:

  算法/子模型会为每个样本赋予一个权重,每次用训练好的学习器标注/预测各个样本(训练数据),如果某个样本点被预测的越正确,则将样本权重降低;否则提高样本的权重。权重越高的样本在下一个迭代训练中所占的权重就越大,也就是说越难区分的样本在训练过程中会变得越重要;
  整个迭代过程直到错误率足够小或者达到一定的迭代次数为止。
官解二:
  技术分享图片

   其中Gm为从第一个开始的一个一个的弱分类器,G1,G2,G3......Gm。

  αm为我们分配给各个分类器的权重。

  如下公式是强分类器的公式:

技术分享图片

   公式解释:公式的结果是加权求和的形式,组合成强分类器。Gm是弱分类器,那么Gm分类的结果就是1or-1,1or-1,1or-1,αm是权重,可以是任意值,所以αm是连续的,那么技术分享图片也就是连续的,但是我们最后搭建的是分类器,所以用符号函数,把连续的量变成离散的量。

  那么现在就该求αm和Gm了吧,首先搞清楚分类的目标是什么?答:分类的准确率。自然就是错误率越低越好咯

  那我们以分类错误的几率作为损失函数,分类错误的几率如何表示?分类错误的个数/总的个数,分类错误的个数如何表示?G(x)≠yi,G(x)是强分类器分类的结果,yi是对应的正确的分类标签。G(x)≠yi也就是说强学习器分类的结果和它正确的所属类别不同,不就是分类错误咯。为了便于操作,用指示函数把它套上,即I(G(x)≠yi),意思是分类错误的话记作1,分类正确的话记作0,i从1到n就是分类错误的样本个数技术分享图片,n是总的个数,即所有样本的个数,再除以n,不就是错误率了吗,最后损失函数公式如下:技术分享图片 

  现在再回归我们一开始的目标:让其准确率最高,即错误率最低,求αm和Gm。----很明显,损失函数和αm与Gm没有半毛钱关系,那怎么办?扩大呗,扩大后让它们有关系呗,怎么扩大?这个有点乱,我用手写表示吧,上图!

技术分享图片

 

 最后损失函数公式建立起来关系后为:技术分享图片

目的是准确率最高,那么找损失函数最小值即可,也就是找技术分享图片最小值即可。

 f(x)其实是α1G1+α2G2+α3G3+.....+αmGm,而Boosting思想是搭建了第一个分类器才搭建第二个分类器,那么当我要求αmGm的时候,实际上从α1G1到αm-1Gm-1都是知道的,那么损失函数技术分享图片中的f(x)就可以写成f(m-1)(x)+αmGm,得到技术分享图片

化简后得到

技术分享图片

 那么实际过程中,假设Gm这个分类器我们已知了,那么最后的式子就只有一个αm是未知参数,要错误率最小,即求loss函数的最小值,即求导=0即可,对谁求导?一个未知参数,αm。求导过程如下,手推了一遍,有些乱,但是易懂,嫌乱的后面有官解过程

技术分享图片

技术分享图片

 Adaboost第二种修改数据集的方式其实就是修改样本的权重,即wi

如下图

技术分享图片

 技术分享图片

权重更新用的就是技术分享图片公式

每搭建一个弱分类器,就和之前的弱分类器集成一下,集成完之后看看结合成的强学习器的结果,达到要求不再往下进行,达不到继续搭建弱分类器,要求就是准确率。

结束。

机器学习算法概述第六章——集成学习

原文:https://www.cnblogs.com/qianchaomoon/p/12107552.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!