文章目录
  1. 1. 什么是模型组合
  2. 2. 组合方法
    1. 2.1. Bagging
    2. 2.2. Boosting
    3. 2.3. Bagging和Boosting的对比
  3. 3. 应用

在机器学习应用中,我们往往会碰到单个模型效果并不够理想的情况,这个时候就需要一些模型组合的技巧了。本文主要讲解两种常见的模型组合方法即Bagging和Boosting,并对应用这两种思想的相关模型作了介绍。

什么是模型组合


如果我们已经训练好了多个模型,并且希望通过已有的这些模型组合成一个更强的模型,那么我们可能会有以下选择:

  • 通过验证集找到在验证集表现最好的那个
  • 多个模型投票或者取均值
  • 多个模型做加权平均

可以看到这些都是我们做模型组合的一些思路,所谓模型组合即组合多个模型以获得更好的效果,使组合的模型具有更强的泛化能力。这里所说更强的泛化能力在机器学习无非两种即降低Bias或降低Variance。Bias度量了某种学习算法的平均估计结果所能逼近学习目标(目标输出)的程度,即Bias越低,模型的误差越低;Variance则度量了模型对于不同的数据集模型估计结果发生变动的程度,可以理解为模型稳定性的一个度量方式,Variance越低说明模型越健壮,越稳定,反之说明模型不稳定,对于不同的数据集表现差别很大,也就是很有可能发生过拟合了,所以说一个好的模型不仅要有很低的误差(Bias),还需要对不同的数据集表现稳定(低的Variance)。下面我们去看看两种降低Bias和Variance的方法。

组合方法


Bagging

Bagging全名Boostrap Aggregration,在这里并不是书包的意思,其中Bootstrap是一种有有放回的抽样方法,其抽样策略就是简单随机抽样。Bagging的思路就是让学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练样本组成,初始训练例在某轮训练集中可以出现多次或根本不出现训练之后可得到一个预测函数序列$h_1$,$h_2$⋯ ⋯$h_n$ 最终的预测函数H对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。这种方法可以说是再简单不过了,但是在应用中却往往特别高效,基于Bagging思想的随机森林模型一直都是公认泛化能力很强的分类器之一。

Boosting

Boosting顾名思义,提升方法,将多个弱学习模型提升为强学习模型。初始化时对每一个训练例赋相等的权重1/n,然后用该学算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在后续的学习中集中对比较难的训练铡进行学习,从而得到一个预测函数序列$h_1$,$h_2$⋯ ⋯$h_n$其中每一个$h_i$都有一定的权重,预测效果好的预测函数权重较大,反之较小。最终的预测函数H对分类问题采用有权重的投票方式,对回归问题采用加权平均的方法对新示例进行判别。基于Boosting的方法主要有Adaboost和梯度提升决策树(Gradient Boosted Decision Tree, GBDT)。

Bagging和Boosting的对比

从Bagging和Boosting的定义中很容易看到,Bagging的特点在于其抽样的随机化,每一轮的训练是独立的。而Boosting每一轮训练取决于其上一轮的结果,每一轮的训练是相互关联的,因此Bagging很容易实现并行化而Boosting却无法做到并行化。另外Bagging采用的是投票机制,Boosting采用的是加权方式。Boosting通过反复迭代将弱学习模型提升为强学习模型,因此通过Boosting方法可以降低模型的Bias;而Bagging通过反复的抽样训练新的模型,实际上是对已有强学习模型取平均,并不能起到降低Bias的效果,而是使得模型稳定性加强,降低了Variance。因此基于Bagging和Boosting的方法都可以起到增加模型泛化能力的作用。

应用


有了这两种思路,要进行应用就不难了。首先我们需要一个基分类器,我们称之为Base Learner,通过Bagging或者Boosting便可以训练到了一个更加强大的分类器了。而当Bagging,Boosting碰到了决策树,则可以迸发出激情的火花,那么这是什么样的火花呢?我们下文分解。

文章目录
  1. 1. 什么是模型组合
  2. 2. 组合方法
    1. 2.1. Bagging
    2. 2.2. Boosting
    3. 2.3. Bagging和Boosting的对比
  3. 3. 应用