AdaBoost Bagging 随机森林-学习笔记

笔记摘自:机器学习-周志华  统计学习方法-李航  

Boosting & AdaBoost

Boosting 是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本的概率分布(训练数据的权值分布)进行调整,针对不同的训练数据分布调用弱学习算法学习一系列若弱分类器。

对于提升方法来说,有两个问题:

1. 在每一轮如何改变训练数据的权值或概率分布

2. 如何将弱分类器组合成一个强分类器。

AdaBoost做法是,提高那些在前一轮弱分类器中被错误分类的样本的权值,而降低那些被正确分类样本的权值,这样一来,那些没有得到正确分类的数据由于其权值的加大而受到后一轮弱分类器的更大关注,于是分类问题被一系列弱分类器“分而治之”。

对于第二个问题,AdaBost是采取多数表决的方法,具体的,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减少分类误差率打的弱分类器的权值,使其在表决中起较小的作用。

AdaBoost的特点:不改变所给的训练数据,而不断改变训练数据权重的分布,使得训练数据在基本分类器中起不同的租用。

标准AdaBoost只适用于二分类任务,

Bagging能不经修改的用于多分类、回归等任务;

Bagging:

Bagging是并行式集成学习方法最著名的代表。直接基于自助采样法。

自助采样法:给定包含m个样本的数据集,先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现。计算可知,初始训练集中约有63.2%的样本出现在采样集中。

Bagging的基本流程:

采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合。

在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。若分类预测是出现两个类收到同样票数的情形,简单做法是随机选一个,或者进一步考察学习器投票的置信度来确定最终胜者。

随机森林

随机森林(Random Forest) 是Bagging的一个变体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体来说,传统的决策树在选择划分属性时是在当前结点的所有属性(假设有d个属性)中选择一个最优属性,而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后从该子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度:若令k=d,则基决策树的构建与传统决策树相同;若令k=1,则是随机选择一个属性用于划分;一般情况下,推荐值k=log2d.

随机森铃对Bagging只是做了小改动,Bagging中的基学习器的“多样性”仅通过样本扰动(即通过对初始训练集采样)而来,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升。

多样性:指学习器之间具有差异。

Bagging的学习器之间的多样性通过样本采样来实现,随机森林多了一个属性的随机选择机制来保证多样性,而Adaboost则通过改变训练数据的分布来保证学习器的多样性。

多样性增强方式:

数据样本扰动、输入属性扰动、输出表示扰动、算法参数扰动

随机森林的训练效率常优于Bagging,因为在个体决策树的构建过程中,Bagging使用的是“确定型”决策树,在选择划分属性时是对所有的属性进行计算,而随机森林使用的“随机性”决策树只需要考察一个属性子集。

猜你喜欢

转载自my.oschina.net/amui/blog/1648148