集成学习(Ensemble Learning)

集成学习是使用一序列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。集成学习中多个学习器被称为“弱学习器”,若这些弱学习器都是一个种类的,则被称为是同质的;若这些弱学习器不全是一个种类的,则被称为异质的。一般情况下,集成学习中的多个学习器都是同质的“弱学习器”。

集成学习的理论基础来自Kearns和Valiant提出的PAC(Probably approximately correct)的可学习理论,PAC定义了算法的强弱,识别错误率小于1/2,也即准确率仅比随机猜测略高的学习算法称为弱学习算法;识别准确率很高并能在多项式时间内完成的学习算法称为强学习算法。强可学习与弱可学习是等价的,因此可以寻找方法将弱可学习器‘提升’为强可学习器,而不必去直接寻找较难发现的强可学习器。目前,具有代表性的集成学习方法有Boosting,Bagging和随机森林。

Boosting

Boosting是个体学习器之间存在强依赖关系,必须串行生成的序列化方法。Boosting是一种框架算法,主要通过对样本集的操作获得样本子集,然后用弱分类器算法在样本子集上训练生成一系列的基分类器。经过T轮的迭代之后,就可以产生T个基分类器,然后Boosting框架算法将这T个基分类器进行加权融合,产生一个最后的结果分类器。Boosting族算法中最著名的代表AdaBoost算法。

AdaBoost算法主要是在整个训练集上维护一个分布权值向量D_{t}\left ( X \right )(初始的分布为等概率分布,也就是说如果有m个样本,每个样本的分布概率为1/m),用赋予权重的训练集通过弱分类算法产生假设H_{t}\left ( X \right ),然后计算它的错误率,用得到的错误率去更新分布权重向量D_{t+1}\left ( X \right ),对错误分类的样本分配更大的权重,正确分类的则被赋予更小的权重。每次更新后用相同的弱分类算法产生新的分类假设,以此类推,直到迭代T次之后。最后对这些分类器用加权的方法进行联合,得到决策结果。算法流程图如下图所示:

算法的伪代码如下图所示,由于不要求产生的单个分类器有较高的识别率,只要产生的基分类器的识别率大于0.5,就可以作为该分类序列中的一员,所以如果有错误率大于0.5的基分类器,就跳出循环,停止学习过程。

从偏差-方差分解的角度,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成。

举个小例子,考虑一个2-D的特征空间,包括正样本和负样本,要求每一个弱分类器的准确率至少为50%,上一次被弱分类器分类错误的样本在下面循环中给予更多的重视,就譬如下图中,第一个弱分类器划分之后,蓝色小球有两个被错误分类,红色小球有一个被错误分类,所以生成第二个弱分类器时,这三个被错误分类的样本被特别关注,在图中表现为面积变大,以此类推,最后这三个弱分类器组合就是最后的强分类器。

Bagging

Bagging算法基于bootstrap sampling。bootstrap sampling是使用有放回重复采样的方式进行数据采样,即每次从总数据集D中随机取出一个样本作为子训练集中的元素,然后将样本放回到D中,重复m次之后,就可以得到一个大小为m的子训练集。于是我们可以采样出T个m大小的子训练集,然后在每一个子训练集中训练一个基学习器,再集成。如下图所示,为算法流程。不同于上述Boosting方法,基于每个子训练集生成的各个弱分类器之间没有关联,因此可以彻底实现数据并行训练。

从偏差-方差分解的角度看,Bagging主要关注方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效果更为明显。 

随机森林(Random Forest)

随机森林 = Bagging + 决策树,意思是说,随机森林是一种基于Bagging的集成学习方法,其弱分类器是决策树。在随机森林算法中,有两个随机过程,一是输入数据是随机的,随机有放回的选择数据(见上述Bootstrap sampling),二是每棵决策树构建时所需要的特征是从全体特征中选择的。这两个随机过程使得随机 森林在很大程度上避免了过拟合的出现。

结合性

假定集成包含T个基学习器\left \{ h_{1}, h_{2}, \cdots , h_{T} \right \},其中h_{i}在实例x 上的输出为h_{i}\left ( x \right )

平均法

对数值型输出,最常见的结合策略是平均法

简单平均法H\left ( x \right )=\frac{1}{T}\sum_{i=1}^{T}h_{i}\left ( x \right )

加权平均法H\left ( x \right )=\sum_{i=1}^{T}\omega_{i}\cdot h_{i}\left ( x \right ),其中\omega_{i}是个体学习器h_{i}的权重,通常要求\omega_{i}\geq 0, \sum_{i=1}^{T}\omega _{i}=1

简单平均法是加权平均法的特例,各个基学习器的权重均取\frac{1}{T}。加权平均法的权重一般是从训练数据中学习得到的。一般来说,在个体学习器性能相差比较大时适合用加权平均法,而在个体学习器性能接近时宜使用简单平均法

投票法

对分类任务来说,学习器h_{i}将从多类别标记集合\left \{ c_{1},c_{2}, ... , c_{N} \right \}预测出一个标记,最常见的结合策略是投票法

绝对多数投票法:即若某标记得票超过半数,则预测为该标记,否则拒绝

相对多数投票法:即预测得票最多的标记,若同时有多个标记获得最高票,则从中随机选择一个

加权投票法:每个弱学习器的分类票数乘以一个权重,然后各个类别的加权票数求和,选择最大值的类别

学习法

当训练数据很多时,一种更强大的集合策略是使用“学习法”,即通过使用另一个学习器来进行结合。Stacking本身也是一种著名的集成学习方法。Stacking先从初始数据集训练出初级学习器(即上述的弱学习器),然后“生成”一个新数据集用来训练次级生成器(用于结合的生成器),在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马鹤宁

谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值