集成学习与随机森林

集成学习

创建日期 星期二 18 十二月 2018

首先有个概念,个体学习器,一般是弱学习器,当然强学习器也是可以的;集成学习就是把个体学习器做一次集成,然后对结果进行一次决策,就叫集成学习,举个简单的例子就是,100个人中来吃一包口味一样的糖,然后其中有98个人说是甜的,做个投票,然后就说这包糖是甜的;

然后个体学习器中分为强关联的学习器和弱关联学习器,两个不一样,强关联也叫强依赖,意思是个体学习器之间存在强的依赖关系,一般这些学习器集成都是串行集成,而另一种弱关联学习器就是依赖关系不是很大,一般是并行集成;

强依赖的一般是boosting,什么GDBT,xGBOOST之类的串行,弱依赖的一般就是随机森林,bagging之类的;

boosting原理就是这个图


 

Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。

简单的理解

初始对每个样本分配相同的权重,每次经过分类,把对的结果的权重降低,错的结果权重增高,如此往复,直到阈值或者循环次数。

梯度提升算法首先给定一个目标损失函数,它的定义域是所有可行的弱函数集合(基函数);提升算法通过迭代的选择一个负梯度方向上的基函数来逐渐逼近局部极小值。这种在函数域的梯度提升观点对机器学习的很多领域有深刻影响。

提升的理论意义:如果一个问题存在弱分类器,则可以通过提升的办法得到强分类器。

简单理解GBDT:假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。GBDT是boosting思想的一种实现;

推导就不写了,网上一搜一大堆,基本上都是残差的拟合和损失函数的减小来提升;

然后bagging就是赌博机类似,就是我上面举得那个例子差不多就是将对同一个x做训练的值做一次汇总然后用某种决策策略来决定结果;最常用的决策策略是投票法,就是取众数,还有平均法,取平均值,还有再给这一堆值做一次拟合,建一个模型,将预测的值作为x再预测一遍;
然后就是随机森林,就是多棵决策树做的森林;决策树前面讲过,在这不细讲了;这个就是并行的使用决策树;
下面是弱依赖模型




 





 

个体学习和集成

集成学习(ensermble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统(multi-classifier system) ,基于委员会的学习(committee-based learning)等
一般是先产生一组个体学习器,然后通过某种策略来把他们结合起来;个体学习器通常由一个现有的学习算法从训练数据中产生,例如如C4.5决策树算法,BP神经网络算法等,此时集成中值包含相同类型的个体学习器,比如决策树集成中全是决策树;
神经网络集成中全部都是神经网络,这样的集成是同质的(homogeneous);同质集成中的个体学习器也叫作基学习器,相应的学习算法也称为基学习算法;集成包括不同的叫异质的,异质集成中的个体学习器由不同学习算法生成,这里面的个体学习器就不叫基学习器,而叫做组件学习器或者直接称为个体学习器;当然个体学习器要有一定的准确性,就是不能太次,要好而不同,就是学习效果不能太坏,并且有多样性,学习器之间要有差异;

然后通过式子可以证明随着个体分类器的个数增多,你想让其分类分错的可能性会呈指数级下降,因为那是个多项式的类似于多项式概率分布,最后结果会越变小,这里就不谢那个公式了,我感觉一般人都可以理解;
根据个体学习器的生成方式,目前的集成学习方法大致可以分为两大类,即个体学习器间存在强依赖关系,必须串行化生成序列化方法,以及个体学习器之间不存在强依赖关系,可以同时生成的并行化方法;前者的代表是Boosting,后者的代表是Bagging和随机森林(Random Forest)

Boosting

Boosting 是一种可将弱学习算法提升为强学习器的算法,这种算法的工作机制类似,先从初始的训练集训练出一个基学习器,然后根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续得到更多的关注;

关于Adaboost的两种权重
Adaboost算法中有两种权重,一种是数据的权重,另一种是弱分类器的权重。其中,数据的权重主要用于弱分类器寻找其分类误差最小的决策点,找到之后用这个最小误差计算出该弱分类器的权重(发言权),分类器权重越大说明该弱分类器在最终决策时拥有更大的发言权。

Adaboost数据权重与弱分类器
刚刚已经介绍了单层决策树的原理,这里有一个问题,如果训练数据保持不变,那么在数据的某个特定维度上单层决策树找到的最佳决策点每一次必然都是一样的,为什么呢?因为单层决策树是把所有可能的决策点都找了一遍然后选择了最好的,如果训练数据不变,那么每次找到的最好的点当然都是同一个点了。

所以,这里Adaboost数据权重就派上用场了,所谓“数据的权重主要用于弱分类器寻找其分类误差最小的点”,其实,在单层决策树计算误差时,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。这样,在选择决策点的时候自然是要尽量把权重大的点(本例中是最后一个点)分对才能降低误差率。由此可见,权重分布影响着单层决策树决策点的选择,权重大的点得到更多的关注,权重小的点得到更少的关注。

在Adaboost算法中,每训练完一个弱分类器都就会调整权重,上一轮训练中被误分类的点的权重会增加,在本轮训练中,由于权重影响&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值