集成学习2

来源:互联网 发布:sql in exists 效率 编辑:程序博客网 时间:2024/05/29 12:37

上一篇文章http://blog.csdn.net/lvhao92/article/details/51079018主要讲的是集成学习中的boosting。这篇从它的基友bagging和随机森林开始扯。

2.Bagging

如果说Boosting是专家提议制,那么Bagging就是民主投票制。首先,我们需要集成学习中的个体学习器尽可能相互“独立”,但是要想得到“独立”谈何容易,所以尽可能使得基学习器具有较大的差异。一种做法就是通过不同的训练样本从而产生不同的个体学习器。但是如果这种追求样本不同的结果就会导致有的个体学习器因为样本过于少而不足以进行有效学习。所以,采用的是有放回随机采样的操作来构成他们的样本集,这也叫做“自助采样过程”。结合的时候呢,一般对分类任务使用简单投票法,而对于回归任务使用简单平均法。上一篇文章所提的标准AdaBoost只适用于二分类任务,而Bagging却可以不经修改的用于多分类,回归。“自助采样过程”不一定能采样到样本集中的所有样本,那些没有被采样到的样本可以用作验证集对泛化性能进行“包外估计”,这些样本也叫作包外样本。包外样本还有很多其他用途,比如如果基学习器是决策树时,可以利用包外样本来辅助剪枝。或者若基学习器是神经网络时,可用包外样本辅助早已停止以减小过拟合风险。从偏差-方差分解的角度看,Bagging主要关注降低方差,因此它在不剪枝决策树,神经网络这些易受样本扰动的学习器上效果明显。

3.随机森林

久仰随机森林大名,它是Bagging的一种变体。但是它不像Bagging仅通过样本扰动而产生“多样性”的基学习器不同,随机森林中的基学习器的多样性不仅来自样本扰动,还有属性扰动。这就使得个体学习器之间的差异度更加的大,最终集成的泛化性能更加的好。下面重点说下属性扰动,传统的决策树(以后会提到)是在当前结点的属性(假定有d个属性)中选择一个最优属性来划分样本,但是随机森林中的基决策树却会先从该结点属性集合中随机的选择一个包含k个属性的子集,然后从这个子集中选择一个最优属性用于划分。k若为d,则基决策树与传统决策树相同,若k=1,那么就是随机选择一个属性用于划分。一般情况下,推荐值k=log2d。这就导致了随机森林的训练效率是优于Bagging的,因为在个体决策树构建的过程中,Bagging使用的是“确定型”决策树,在选择划分属性时要对结点的所有属性进行考察,而随机森林却使用“随机型”决策树对一个属性子集进行考察,毕竟k是小于d的嘛~

4.结合策略

前面主要讲怎么生成各种基学习器,这一章节所提的就是如何很好的将各个基学习器的结果结合起来。主要有三种:1)平均法;2)投票法;3)学习法。关于前两种,不多论述,比如Bagging来说,分类投票,回归平均。主要详细介绍下学习法,举一种著名的集成学习方法Stacking为例,Stacking先从初始数据集中训练出初级学习器,然后生成一个新数据集用于训练次级学习器。初级学习器的输出被当做样例输入特征,而初始样本的标记仍然作为样本标记。比如原来的样例xi,给定T个初级学习算法,根据,可得。标记为yi,这样,从这T个初级学习器产生的次级训练集就是,然后通过D来训练次级学习器。学习法相当于是对于基学习器的有机组合,如何有机,就是通过二次训练生成的学习器来组合。


0 0
原创粉丝点击