集成学习的概念
集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统(multi-classifier system) 集成学习的一般结构:先产生一组“个体学习器”(individual learner),再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训练数据产生,例如C4.5决策树算法、BP神经网络算法等,此时集成中只包含同种类型的个体学习器,例如“决策树集成” 中全是决策树,“神经网络集成”中全是神经网络,这样的集成是“同质” 的。同质集成中的个体学习器亦称“基学习器” 。集成也可包含不同类型的个体学习器,例如同时包含决策树和神经网络,这样的集成是“异质”的。集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。这对“弱学习器”尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器。 集成学习发展到今天,主要形成了两大流派,分别是以AdaBoost、GBDT为代表的Boosting流派和以随机森林为代表的Bagging流派,下面对这两个流派进行详解。
Boosting
Boosting是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注, 然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合.
AdaBoost
adaboost算法的核心思想是:对于所有的样本我们先初始化一个权重,在算法的一开始,每个样本的权重是一样的,即每个样本被选到的概率相同。然后我们选择一个特征,只用这一个特征进行分类,得到一个弱分类器(通常,这个弱分类器的效果会比较差,会有很多的样本被识别错误)。接下来,我们对样本的权重进行重新分配,对于那些被识别错误的样本,我们给它更高的权重,对于那些识别正确的样本,我们给与更低的权重。然后在此基础上,我们再选择另外的一个特征(这个特征应该对那些之前被识别错误的样本有较好区分作用),得到一个新的弱分类器,然后再对样本进行分类,如此循环往复。最后,我们对所有的弱分类器进行加权平均,得到最终的分类器G(x)。我们可以发现,随着弱分类器的增加,Adaboost最终分类器G(x)在训练集上的错误率会越来越小。 关于AdaBoost算法,在统计学习方法一书中写的十分清楚,这里附上李航老师的解读。
GBDT
GBDT 的全称是 Gradient Boosting Decision Tree,梯度提升树。想要理解GBDT的真正意义,那就必须理解GBDT中的Gradient Boosting 和Decision Tree分别是什么?
GB(Gradient Boosting )
梯度提升树(Grandient Boosting)是提升树(Boosting Tree)的一种改进算法,所以在讲梯度提升树之前先来说一下提升树
Bagging
Bagging 是并行式集成学习方法最著名的代表.从名字即可看出,它直接基于自助采样法。给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现 的样本出现在采样集中。照这样,我们可采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合.这就是Bagging的基本流程.在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法.若分类预测时出现两个类收到同样票数的情形,则最简单的做法是随机选择一个,也可进一步考察学习器投票的置信度来确定最终胜者。
随机森林
如果读者接触过决策树的话,那么会很容易理解什么是随机森林。随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树。随机森林的名称中有两个关键词,一个是“随机”,一个就是“森林”。“森林”我们很好理解,一棵叫做树,那么成百上千棵就可以叫做森林了。“随机”的含义是:对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本(这种采样方式称为bootstrap sample方法),作为该树的训练集; 其实从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的 Bagging 思想。
|