集成学习

来源:互联网 发布:linux网络运维 编辑:程序博客网 时间:2024/05/29 11:44

集成学习

  • 集成学习
    • 基本概念
    • 串行方法
      • Adaboosting
      • GBDT
    • 并行方法
      • Bagging
      • Random Forest
    • 结合策略
    • 多样性

基本概念

集成学习是通过多个学习器来完成学习任务。就是结合多个学习器对样本进行学习,然后综合最后的结果做出一个决策。按照学习器的种类可以分为同质和异质集成。所谓的同质集成是指所有的学习器是同一种类,比如都是决策树、神经网络等;那么与之对应的异质集成就是不同种类的集合了,比如神经网络和决策树的组合等。目前的集成学习方法大致可以分为两大类:串行方法和并行方法。


串行方法

个体学习器之间存在强依赖关系的话必须串行生成相应的序列。代表的方法有boosting。

Adaboosting

boosting是一族可以将弱学习器提升为强学习器的算法。其机制大概为:先从初始训练集训练出一个基学习器,然后依据基学习器的表现对训练样本分布进行调整,使得先前基学习器判断错误的训练样本在后续中得到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至训练完所有的基学习器。Adaboosting是boosting算法族中比较有代表性的算法。

一、算法流程
假设给出样本的形式为X=(x1,x2,,xd),每个样本对应一个决策值Y=y。那么可以定义一个实例(X,Y)=(x1,x2,,xd,y),现在有数据集D={(x(1),y(1)),(x(2),y(2)),,(x(m),y(m))}。假设使用K个基学习器,那么Adaboosting算法的主要学习步骤分为三部分:
1、初始化训练样本的权值W1。假设训练样本集中样本个数为m,那么每个样本的权值W1,i=1m

Wk={Wk,1,Wk,2,,Wk,m},k,i=1,2,,m

2、训练基学习器hk(x)。用带权值DK的样本去训练基学习器,如果样本被准备的分类,那么在降低其权值,反之加大其权值。用权值更新后的样本Dk+1去训练下一个基学习器。

定义第k个基学习器的分类误差率为被错分样本的权值之和,即:

ek=P(hk(x(i))y(i))=i=1mWk,iI{hk(x(i))y(i)}
定义第K个基学习器在最终组合分类器中的权重为:
αk=12log1ekek
那么,训练样本新的权重更新规则,并使其满足概率分布。即:
Wk+1,i=Wk,iexp(αky(i)hk(x(i)))mi=1Wk,iexp(αky(i)hk(x(i)))

3、组合各个基学习器。错误率低的基学习器在组合中权重大;错误率高的基学习器在组合中权重小。

H(x)=k=1Kαkhk(x)

小结:每个基学习器的过程中使用的都是相同的样本,但根据误差率(损失函数)来优化的。而误差率的计算带有样本的分布权值且误差率会更新样本权重。因此虽然每次使用的是同一个训练集但训练出来的基学习器是不一样的,可以认为每个基学习的训练过程中优化的损失函数(经验风险)是不同的。


二、推导
一种对Adaboosting算法比较好的理解方式将其看成是基学习器的线性组合方式:

H(x)=i=1Tαihi(x)(1)
假设样本的标签为 yi={+1,1},f(x)为真实函数。 损失函数定义为:
exp(H|D)=ExD[ef(x)H(x)](2)
假设对于组合学习器中的每个基学习器成分αihi(x),都应使其最小化损失函数:
(αihi|Di)ϵ=ExDi[ef(x)αihi(x)]=ExDi[eαiI{f(x)=hi(x)}+eαiI{f(x)hi(x)}](3)=eαiPxDi(f(x)=hi(x))+eαiPxDi(f(x)hi(x))=eαi(1ϵi)+eαiϵi=PxDi(f(x)hi(x))(4)
(4)
那么(3)式对αi求导得:
αi=eαi(1ϵi)+eαiϵi(5)

令上式等于0,可得:
αi=12ln1ϵiϵ(6)
(6)
Adaboosting算法是可以看成是学习器的级联,那么:
(Hi|Di)=(Hi1+hi|Di)

(待续……)


GBDT

GBDT(gradient boost decision tree),可以用来作分类、回归。相比于Adaboosting通过提高错误分类样本的权重来定位模型的不足,gradient boosting是通过计算梯度来定位模型的不足。它主要的思想是,每一次建立模型是在之前建立模型损失函数的梯度下降方向。而让损失函数持续下降,就能使得模型不断改性提升性能,其最好的方法就是使损失函数沿着梯度方向下降。


并行方法

个体学习之间不存在强依赖关系,可以同时生成并行的方法。要想得到较好泛化能力的集成学习组合,需要其中的个体学习器尽可能的相互独立。为了尽可能的达成这个目的,对训练样本进行采样形成子样本,然后使用子样本去训练不同的个体学习器以提升个体学习器之间的差异。但训练这些学习器时只采用了部分样本,不足以进行有效的学习,可以改进的是可以使用相互有交叠的采样子集。并行集成学习的代表方法有:bagging和随机森林。

Bagging

采样方法使用的自助采用法:在给定的样本集中有放回的进行采样,也就是采样子集中有可能出现同一个样本。重复m次便可以得到一个含有m个样本的子样本。同样的操作执行T次便可以得到T个子样本用于训练T个个体学习器。 基学习器的结合方法是对于分类任务采用简投票原则或者对于回归任务采用平均原则。

Random Forest

随机森林是在以决策树为基学习器构建bagging集成的基础上进一步在决策树的训练过程中引入随机属性的选择。传统的决策树通过最优划分属性来生成树,决策树中使用信息增益(ID3算法)、信息增益率(C4.5算法)、基尼指数(CART算法)作为划分属性的选择依据。;而RF是在每个基决策树的结点中先从节点的属性集合中选出一个子属性集,然后再子属性集中选择最优划分属性。

随机森林并不限制于线性问题,对非线性问题也有很好的效果。可以用于特征选择(如何实现的?)、分类、回归。随机森林不容易产生过拟合,但也会产生过拟合特别是在数据集较小的情况下,应避免在模型中只使用相关性的特征。随机森林擅长于离散变量或者离散变量与连续变量混合的情况。

优点:
1)能够处理很高维的数据,并且不用作特征选择;
2)训练完成后,能够给出哪些特征比较重要(特征选择);
3)在创建随机森林的时候,对一般误差使用的是无偏估计;
4)实现简单、易做成并行化、训练速度快。

关于随机森林降维(特征选择):对目标属性产生许多巨大的树,然后根据对每个属性的统计结果找到信息量最大的特征子集。例如,我们能够对一个非常巨大的数据集生成非常层次非常浅的树,每颗树只训练一小部分属性。如果一个属性经常成为最佳分裂属性,那么它很有可能是需要保留的信息特征。


结合策略

学习器结合的优点:
1. 减小了学习器误选而泛化不佳的概率;
2. 减小了学习器陷入局部最优的可能性;
3. 扩大算法的假设空间。
平均法
简单平均法

H(x)=1Ti=1Thi(x)
加权平均法
H(x)=i=1Tωihi(x),(ωi0,i=1Tωi=1)

投票法
绝对多数投票法:若某标记投票过半数则预测该标记,否则拒绝。
H(x)=cj,if i=1Thji(x)>0.5k=1Ni=1Thki(x)reject,otherwise

相对多数投票法:预测投票最多的标记,投票相同随机选。
H(x)=carg maxjTi=1ωihji(x),(ωi0,i=1Tωi=1)

学习法
使用一个学习器来作为结合模块进行训练。stacking是学习法的代表。利用初级学习器的输出构成数据集来训练次级学习器。


多样性

多样性度量
用于度量集成中个体学习器的多样性,也就是用来衡量个体学习器的多样化程度。
<1>不合度量
<2>相关系数
<3>Q-统计量
<4>κ-统计量

多样性增强
<1>输入属性扰动
<2>数据样本扰动
<3>输出表示扰动
<4>算法参数扰动


References:
[1]周志华:机器学习
[2]Adaboost 算法的原理与推导
[3]GBDT原理-Gradient Boosting Decision Tree

原创粉丝点击