机器学习技法第七课——Blending and Bagging

此文是本人学习林轩田老师的机器学习技法第七课——Blending and Bagging。第七至第十一课学习 ML 中的各种集成学习(Ensemble Learning)算法。简单地讲,Ensemble 集成各种模型为一个最终模型。

参考

误差的 bias 和 variance

在此文——Understanding the Bias-Variance Tradeoff——中有介绍,同种模型训练由于参数、抽样等不同,得到的模型的误差会有一定的随机性,所以有了模型误差的 bias 与 variance 的概念。

简单地讲,bias 指误差的期望,即模型的预测偏离正确值的期望。而 variance 即误差的方差,衡量模型误差的分散程度。这两个值当然是越小越好。

Blending

Blending 是十分自然的集成方法。简单地讲,就是将各模型的预测作为数据进行回归或分类训练将其结合。训练过程如下:

  1. 将训练集 $D{train}$ 分为 $D{train}^-$ 和 $D_{val}$,每条数据可表示为 $(x_1, x_2,…,y)$
  2. 在 $D_{train}^-$ 上,训练出各模型 $G^-=(g_1^-(\mathbf{x}), g_2^-(\mathbf{x}), g_3^-(\mathbf{x}),…)$
  3. 在 $D{val}$,各模型分别做出预测,组合成新的数据集 $D{pred}$,每条数据可表示为 $\Phi(\mathbf{x}) = (g_1(\mathbf{x}),g_2(\mathbf{x}),g_3(\mathbf{x}),…,y)$
  4. 在 $D_{train}$ 上,训练出各模型 $G=(g_1(\mathbf{x}), g_2(\mathbf{x}), g_3(\mathbf{x}),…)$
  5. 在 $D_{pred}$ 上,进行分类或回归训练,得到 Blending 模型参数,结合 $G$ 得到最终模型

(注:$x_i$ 表示数值,加粗 $\mathbf{x}$ 表示一个向量,$\mathbf{x}=(x_1, x_2,…,x_n)$) 进行测试时,先用 $G$ 做出预测作为输入代入 Blending 模型得到最终预测值。这里有2个问题。

为什么要把 $D{train}$ 分为 $D{train}^-$ 和 $D_{val}$,而不直接在训练集上做训练同时做预测,然后作为 Blending 的训练数据?因为训练得到的模型已经“知道了”其训练数据,在其训练数据上做预测不能反映其预测能力的真实情况,会付出复杂度方面的代价。所以,跟模型选择中所做的验证一样,需要使用模型未知的数据做验证。

为什么使用 $G$ 而非 $G^-$ 得到最终模型?$G$ 在 $D{train}$ 上训练得到,比在更小的训练集 $D{train}^-$ 得到的 $G^-$ 更优。

在课上,老师证明了各模型 $E{out}$ 的期望大于 Blending 模型 $E{out}$ 的期望,也就是说,Blending 模型的预测优于各模型的“平均水平”。(实际上只证明了 uniform blending,在此不细究)

Stacking

根据博文 Kaggle Ensembling Guide,Blending 可视为 Stacking 的简化。(Stacking 远早于 Blending 被提出)现在很多研究者视两者等同。

可以很容易发现,Blending 的一至三步与 Hold-out Validation 的步骤是相同的。存在多个模型时,常使用验证来选择模型,而 Hold-out 就是其中最基本的一种。而 Stacking 使用 Cross-Validation

模型验证 中, Cross-Validation 虽然比使用 Hold-out Validation 复杂,但是 Stacking 得到的 $D{pred}$ 与 $D{train}$ 数据量相等,而 Blending 得到的 $D{pred}$ 与 $D{val}$ (一般取 $D_{train}$ 的10%)等量,较小。

Bagging

又称 Bootstrap Aggregation, 基于统计学上的 Bootstrapping 方法。简单地讲,就是从一个样本集中有放回地抽样得到多个样本集。

Bagging 利用 Bootstrapping 的原理,在训练集 $D_{train}$ 上有放回地抽样得到多个训练集 $D_1^-$, $D_2^-$, $D_3^-$,…,然后用抽取的训练集训练模型,由于抽取得到的训练集各不相同,得到的模型也各不相同(除非训练不受训练集影响,那还训练干嘛)。在预测时,取所有模型预测的均值。

Bagging 能够降低模型预测的 varaince 误差,特别适用于对样本敏感的波动比较大的模型。