集成学习之如何由弱变强

写在前面

在所有的机器学习算法中,集成学习算是最“励志”的典型了,因为它是把一系列的很简单的模型集成起来,最终组成强大的模型。

也就是说,纵然不是天才,而是普通如我们,也有机会去取得卓越的成就。本文将会对集成学习进行详细介绍,并探讨其将学习器由弱变强的原理。

以下的正文会从介绍弱学习器的概念开始,然后针对集成学习的三种策略bagging、boosting和stacking,分别介绍其原理,并各自举例说明,最后对三者进行比较总结。

正文:

Part 0

弱学习器

学习器是一个机器学习领域的概念,可以理解为一个用来进行预测判断的模型。那么,弱学习器就是一个比随机猜测稍微好那么一点的模型。

打个比方,如果让一个模型做有4个选项的选择题,正确率稍大于25%,比随机猜测好但也好不了多少,那它就是一个弱学习器。

 

其中,值得注意的几点是:

  • 弱学习器的正确率要大于随机猜测的正确率,如果两者相等则称之为无效学习器,如果前者小于后者称之为坏学习器(俗称的“猪队友”)。

  • 弱学习器的正确率只稍大于随机猜测的正确率,这里的“稍大于”只是一个定性的概念。

  • 弱学习器的正确率不能太高,否则就算是强学习器了。

Part 1

Bagging

Bagging全称Bootstrap aggregation,是在原训练集Z的基础上通过Bootstrap抽样,产生B个新的训练集,在每个新的训练集上训练一个模型,最后对这些模型进行平均得到最终模型。

其流程示意图如下:

 

 

(1)Bootstrap sampling 

(2)Single model fitting 

这个过程比较简单,只需要在各个新产生的数据集上拟合模型即可。这些拟合的模型结构是一样的,有差别的仅仅是训练数据不同导致的模型参数差异。

 (3) Models aggregation 

模型集成过程也非常简单,将所有的模型预测结果进行平均即可。

 (4) Bagging由弱变强的原因 

我们在此举个例子,来说明Bagging可以让弱学习器集成强学习器的原因。还是一群很弱的学生做选择题的例子,我们简化一下。

Part 2

Boosting

Boosting是每次从基模型集合中选择一个,对现有模型逐步做加法扩展,从而得到最终的强学习器的。

(1)模型形式 

(2)模型求解 

 

(3)流程示意图 

(4)Boosting由弱变强的原因 

Boosting将弱学习器集成变强的原因非常直观。从上面的流程图可以看出,其实前向分步算法的每次迭代过程,都是在拟合当前模型在训练集上的残差。每次将残差减小一点点,最终会达到完美。

Boosting很像一个产品迭代的过程,虽然不能一下子做到完美,但坚持不懈的迭代优化,最终必定能惊艳到用户的。

Part 3

Stacking

Stacking 顾名思义,是模型堆叠的意思,即在模型的基础之上建立模型。

模型可以多次堆叠,但实际应用中考虑到计算量可能过大和过拟合问题,一般堆叠不超过3次。以下以2次堆叠为例,进行说明。

(1)模型形式  

(2)流程示意图 

(3)模型求解 

Stacking的过程,可以对各个模型进行分别求解。显然,模型堆叠提升最终的模型容量,让最终模型可以刻画非常复杂的模式,但同时也增加了很多的计算量。

(4)Stacking由弱变强的原因 

从stacking的流程图可以看出,其结构和神经网络很相似,stacking每一层堆叠的模型相当于神经网络的激活函数;

如果从特征抽取的角度看神经网络,因为神经网络的上层会共享下层的网络结构和参数,因此神经网络的特征相关性会更强一些,而stacking使用的特征差异性更大。

因此,stacking的过程扩充了特征空间的范围,强化了最终模型的表达能力。

上面,我们回顾了集成学习的3种基本策略,现在做一个简短总结

 

相同点

Bagging、Boosting和Stacking都是集成策略,是通过将弱学习器按照某种方式集成起来,来最终提升模型预测能力。

 

不同点

1.  Bagging通过模型平均,降低了预测方差,提升了模型的稳定性,从而提升模型能力。

Bagging的关键是各个模型之间要尽量独立,并且不能引入坏的学习器。用树模型做Bagging,就得到了随机森林

2.   Boosting通过前向分步的方式建模,每次在现有模型的基础上进行拟合,从而提升模型能力。

Boosting的关键有两点,一个是准确找到残差,第二是要迭代够快。Boosting的过程,如果是在分类问题中使用指数损失函数,就得到AdaBoost;而如果用可导的损失函数,并用梯度来代替残差,就得到GradientBoost。

3.  Stacking则是通过对不同模型进行堆叠,通过提取多样化的特征,来提升模型能力。Stacking则更像一个DIY过程,可以根据需要自己组合。

Stacking的关键是模型之间差异要尽量的大(不要是同种类型的模型只是参数不同),这样才能更好地提取特征。

 

打个比方,可以把Bagging当成是委员会,通过集体决策来提升稳定性,降低风险;Boosting类似于产品迭代的过程,一步步的完善,越做越好;而Stacking则是像汽车生产一样,各个部件有自己的流水线,最后统一简单组装。

 

天下没有免费的午餐,虽然无论多弱的学习器集成学习都可以使之变强,但变强本身并非毫无代价,其难度和艺术统统都在“集成”的过程中。

看到这里,不妨往生活中延伸一下:

1.  如果你是一个leader,你是更多的是在抱怨自己的下属太弱鸡,还是将他们集成了一个强大的团队?

2.  从个人角度来看,你有没有准确地找到自己当前的不足之处,让今天的你有没有比昨天的你进步一点点,经过若干次的迭代之后彻底变强?

3.  你想做一件事情的时候,比如做一个产品或开一家公司,有没有很好地利用现有的产业成果,最大程度地提高效率?

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值