集成学习(Ensemble Learning)
在传统机器学习算法当中,单个的学习器可能并不能达到非常好的效果,但如果结合多个弱学习器的结果,模型的表现可能会有一定程度的提升。
因此集成学习所做的就是将一系列具有差异的个体学习器,通过某种策略结合起来,从而达到更好的学习效果。下面介绍常见的集成学习方法。
1.Boosting
Boosting是将弱学习器逐步提升为强学习器的一个方法。每次训练完之后会,都会对训练数据的比重进行调节,出错的数据在下次训练时的比重会增加,这样学习器每一轮的训练都会对之前发生错误的样本重点关注,直到达到规定的学习器数目停止。
Boosting是防止数据欠拟合的一种方法,因此可以将弱学习器提升为强学习器。代表算法有AdaBoost,其伪代码如下:
2.Bagging
Bagging通过自主采样法,从给定数据集中采样含有m个样本的集合共T个,即训练T个弱分类器。根据此方法,在某一个子集中,给定数据集中有的样本会不止一次出现,而约有36.8%的数据未出现在采样集当中,这样可以较好的防止过拟合。
在对预测输出进行结合时,Bagging通常对分类任务采用Voting,对回归任务使用Averaging。其伪代码如下:
3.结合策略
当仅使用单个模型时,可能会导致模型泛化能力不强,从而得不到好的效果。通过结合多个模型的结果,很可能会使得模型的表现更好。
3.1Averaging
对于数值型的输出,往往采用averaging的方法。常见的有简单平均法和加权平均法。
3.2Voting
对于分类任务来说,往往采用voting的方法。常见的投票方法有:绝对多数投票法、相对多数投票法、加权投票法。
3.3stacking
当数据量很大时,stacking是更好的一种策略。
假设初级学习器由不同的弱学习器构成,然后将各弱学习器的输出作为次级学习器的输入,取次级学习器的输出作为最终的输出结果。其伪代码如下:
研究表明,stacking算法的最终表现与次级学习器的输入属性表示有很大关系,把初级学习器的输出类概率作为次级学习器的输入属性是一种较好的选择。此外,算法的表现还与次级学习器的类型有很大的关系,多响应线性回归(MLR)作为次级学习器的效果较好。
参考书目:
周志华 《机器学习》