0%

实用ML_6.集成学习

集成学习(Ensemble Learning)

In statistics and machine learning, ensemble methods use multiple learning algorithms to obtain better predictive performance than could be obtained from any of the constituent learning algorithms alone.

Bagging-Bootstrap Aggregating

Bagging主要思路是通过结合几个模型(多个相同模型)降低总体的泛化误差(bias+viariance),实际上降低的是方差

  1. 同时训练多个模型(parallel)
  2. 输出取模型平均值(回归模型)或投票(分类模型)

其中每个模型训练数据通过bootstrap sampling方式采样

  1. 有放回采样,m个训练数据,进行m次又放回采样
  2. 大概有 $1- \frac{1}e$ 63%的数据在一次bootstrap采样中未被采样到(out of bag),可以作为模型的验证集

Random Forest-特殊的bagging

  • 基学习器为决策树
  • bootstrap采样过程中,不仅对样本进行随机采样,同样对属性列进行采样,增加决策树的多样性

Unstable Learners

对于不稳定(方差较大)模型效果提升较好

  • 当 $h(x)$ 即模型预测值,方差较小,上述不等式趋向于等号
  • 极端情况,当 $h(x)$ 恒相等时, $E(h(x))^2 = E(h(x)^2)$ , 使用bagging对模型效果没有提升
  • 由上公式易得,bagging能够通过较少viarance,降低模型泛化误差,模型方差越大,提升效果越好

决策树就是一种 unstable learner,而线性回归是稳定的

总结

Boosting

将一系列的弱模型(多个相同模型)结合组成一个强模型,以降低模型的偏差(bias)

  • 按照顺序学习n个弱模型,每次模型训练完成后,根据该模型预测错误部分对数据重新采样,训练下一个模型
  • 不断的迭代,“在bias上不断地boosting”

Gradient Boosting

每次模型训练目标为拟合残差(有点类似于梯度拟合)

  1. 训练新模型 $h_t$ 时,其训练目标预测真实值$y_i$已训练模型预测值和 $H_{t}(x_i)$的差
  2. 累积得到新的预测值和 $H_{t+1}(x) = H{t}(x) + \eta h_t(x)$, 其中 $\eta$ 为正则项系数,为了避免模型过度拟合

当损失函数为MSE,即均方误差损失时,实际上残差即为负梯度,Gradient 名字的由来

Gradient Boosting Decision Tree(GBDT)

使用决策树作为弱学习模型,问题就是构建、训练时间较长

  • 使用强模型,Gradient Boosting容易出现过拟合现象
  • 通过限制决策树的层数(2-3)层,控制过拟合

Boosting VS 随机森林

总结

降低 偏差 偏差 偏差 !!!

Stacking

类似于bagging,将不同的基模型连接起来,共同预测结果以降低方差(variance)

  • 基模型可以是不同的类别

  • 最后由一个线性全连接层,输入各个模型的输出,输出目标结果

Multi-layer Stacking

多层堆叠模型,降低模型偏差(bias)

  • 容易过拟合

如何降低过拟合问题

  1. 将数据划分A和B两部分,其中A部分用来训练第一层,并用第一层预测B,预测结果作为第二层输入训练第二层(避免了原来多层堆叠出现的一个在不同层重复训练的情况)
  2. 重复 k-fold bagging
    • 使用k-fold训练k个模型(在多层堆叠中特指第一层的所有模型
    • 将每个模型在k-fold训练中作为验证集部分数据的输出拼接成一个份完整的第一层输出,输入到第二层训练
    • 进一步降低方差:重复n次k折交叉验证,每个数据均有n个输出,对n个输出做平均,获得一个完整的第一层输出,输入到第二层训练

总结

集成学习总结

简单理解就是

  • 增加模型数量,学习相同内容,可以降低 Variance
  • 增加模型,不断学习误差,可以降低Bias
  • K-fold multi-level stacking 通过横向增加模型数量,纵向增加层数,可以既降低Bias,又降低 Variance
  • 由于多个模型容易出现过拟合现象
    • 多模型降低Variance,通过 特殊采样方法(bagging的bootstrap,staking的k-fold)避免过拟合
    • 降低Bias,通过 正则项 避免过拟合