集成学习

集成学习

集成学习通过构建并结合多个学习器来完成学习任务。集成学习一般结构:先产生一组“个体学习器”,再用某种策略将它们结合起来。而个体学习器通常由现有的学习算法从训练数据产生,比如C4.5决策树算法,BP神经网络算法等。

集成学习把多个学习器结合起来,如何能获得比最好的单一学习器更好的性能呢?
好而不同,即个体学习器要有一定的准确性,不能“太坏”,并且要有“多样性”,也就是学习器间的差异。(可以参考西瓜书集成学习P172例子理解)。

目前集成学习方法大致可以分为两大类,即个体学习器间存在强依赖关系,必须串行生成序列化方法,以及个体学习器间不存在强依赖关系,可同时生成并行化方法;前者的代表是Boosting,后者代表是Bagging和“随机森林”。

Boosting

Boosting是一族可将弱学习器提升为强学习器的算法。工作机制类似:从初始训练集训练出一个基学习器(这个学习器不能太坏,要有一定的准确性),再根据基学习器的表现对样本分布进行调整,使得先前基学习器做错的训练样本在后续得到更多的关注(也就是提高前一轮弱分类器错误分类样本的权值,而降低那些被正确分类的样本权值),然后基于调整后的样本分布来训练下一个基学习器,如此重复进行,直到基学习器数目达到事先指定的值T,最终将T个学习器进行加权结合。
而Boosting算法族中最具代表性的是AdaBoost。

AdaBoost
AdaBoost算法解释

AdaBoost算法还有另一种解释,即可认为AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的二类分类学习方法。

前向分步算法求解的想法是:因为学习的是加法模型,如果能够从前往后,每一步只学习一个基函数,逐步逼近优化目标函数式,那么就可以简化优化的复杂度。


集成学习_第1张图片

前向分步算法与AdaBoost
用前向分步算法可以推导出AdaBoost。
AdaBoost算法是前向分步算法的特例,这时,模型是有基本分类器组成的加法模型,损失函数是指数函数。这里不做证明,详细查看李航统计学习方法一书。

提升树模型

以决策树为基函数的提升方法称为提升树,对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。


梯度提升

提升树利用加法模型与前向分步算法实现学习的优化过程,当损失函数是平方损失和指数损失函数时,每一步优化是很简单的。当对一般损失函数而言,往往每一步不是那么容易,因此提出了梯度提升算法,这是利用最速下降的近似方法,其关键是利用损失函数的负梯度在当前模型的值。


集成学习_第2张图片
Bagging和随机森林

Bagging
Bagging是并行式集成学习方法最著名的代表。从给定的m个样本的数据集,先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m个样本的采样集,对于初始训练集有的样本在采样集中多次出现,有的从未出现,可以算得初始训练集中约有63.2%的样本出现在采样集中。
这样,我们可采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些学习器结合。这就是Bagging的基本流程。在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。若分类预测时出现两个类收到同样票数情形,则最简单做法是随机选择一个,也可以考察学习器投票的置信度来确定最终胜利者。

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

你可能感兴趣的:(集成学习)