1. 概念
集成学习(ensamble learning)通过构建并结合多个学习器来完成学习任务。集成中只包含同种类型的个体学习期称为“同质”的(homogeneous),同质集成中的个体学校称为“基学习器”,相应的学习算法称为“基学习算法”。集成也可包含不同类型的个体学习期,这样的集成是“异质”的(heterogenous),异质集成的个体学习器称为“组件学习器”(component leader)或直接称为个体学习器。要想获得好的集成,个体学习器应该“好而不同”,即个体学习器要有一定的“准确性”,并且要有“多样性”,即学习器间具有差异。目前集成学习分为两大类,即个体学习器间存在强依赖关系、必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系、可同时生成的并行化方法,前者代表是Boosting,后者代表是Bagging和随机森林(Random Forest)。
2. Boosting
Boosting是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练处一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直到基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。Boosting的代表算法是AdaBoost(Adaptive Boosting)
Adaboost算法:
假设给定一个二分类的训练数据
(sign(x)为符号函数,x>0输出1,x<0输出-1)
(代表个体学习器,表示该个体学习器的重要性)
例 给定如下表所示训练数据。假设个体学习器由x(输入)和y(输出)产生,其阈值v(判定正反例的分界线)使该分类器在训练数据集上分类误差率最低。(y=1为正例,y=-1为反例)
第一个个体学习器:
我们首先认为(i=1,2,…,10)的权重是一样的,即每一个数据同等重要。(权重是用来计算误差的)
(a)在权值分布为的训练数据上,阈值v取2.5(红线)时分类误差率最低(此时x=6,7,8的数据被错分为反例,误差为它们的权重之和=0.1+0.1+0.1=0.3,误差率小于才有意义),故个体学习器为
(b)根据误差计算系数=0.4236(公式:,可以发现只有当<时,>0,这样个体学习器才是有意义的)
(c)更新训练数据的权值分布(公式:,,是为了保证每次权值总和为1)
(通过指数损失函数调整权重,分类正确的降低权重(和同号则,),分类错误的增加权重):
(权重之和始终为1)
可以看到x=6,7,8的数据的权重变大了,而其他数据的权重降低了,这是希望能把之前经常分类错误(经常分类错误会出现权重不断变大)的数据能在下一个个体学习器分类正确(记住:权重是用来计算误差的,为了降低误差,选择阈值时会倾向把权重大的分类正确)
集成学习器(第一次集成,只有一个个体学习器)在训练数据集上有3个误分类点
第二个个体学习器:
(a)在权值分布为的训练数据上,阈值v取8.5时分类误差率最低(此时x=3,4,5的数据被错分为正例,误差为它们的权重之和=0.07143+0.07143+0.07143=0.2143,误差率降低了!),故个体学习器为
(b)根据误差计算系数
(c)更新训练数据的权值分布(在的基础上调整,分类正确的降低权重,分类错误的增加权重):
对比可以看到x=3,4,5的数据的权重变大了,而其他权重降低了。
,
(注意:x<2.5时,也<8.5)
分类器在训练数据集上有3个误分类点
第三个个体学习器:
(a)在权值分布为的训练数据上,阈值v取5.5时分类误差率最低(=0.1820,误差率又降低了!x=0,1,2,9被分类错误),故个体学习器为
(b)根据误差计算系数
(c)更新训练数据的权值分布:
(自己算一算吧)
最终结果:
分类器在训练数据集上有0个误分类点
3. Bagging
欲得到泛化能力强的集成,集成中的个体学习器应尽可能具有较大的差异。Bagging是并行集成学习方法最著名的代表。假设给定m个样本的数据集,我们先随机取一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,经过m次采样得到m个样本的采样集,约有初始训练集63.2%的样本,初始训练集的样本有的多次出现,有的则从未出现。照这样,我们可采样出T个包含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些学习器进行结合。这就是Bagging的基本流程。
在对预测输出进行结合时,Bagging通常对分类任务进行简单投票法,对回归任务进行简单平均法。
Bagging的优点:每个基学习器值使用了训练集中63.2%的样本,剩下的36.8%的样本可用作验证集。
Bagging主要关注降低方差,因此在决策树、神经网络等易受样本扰动的学习器上效用更为明显
4.随机森林
随机森林(Random Forest,简称RF)是Bagging的一个扩展变体。RF在以决策树为基学习器构建Bagging集成的基础上引入了随机属性选择。在RF中,对基决策树的每个结点先随机选择k个属性,然后从k个属性中选择最优属性划分,一般推荐d为所有属性个数。随机森林不需要特征处理,不用剪枝,每棵树都生长到不能生长了(即每个叶子节点的纯度为1),对特征比较多的适用.输出采用投票法(分类问题)、加和平均值法(回归问题)。
本文参考 西瓜书-周志华 统计学习方法-李航