集成学习V1

outline

  • 集成学习
  • Boosting
  • Bagging
  • 随机森林
  • 结合策略
  • Stacking

集成学习(ensemble learning)

集成学习的一般结构


集成学习的一般结构.png

集成学习的主要思想是利用一定的手段学习出多个分类器,而且这多个分类器要求是弱分类器,然后将多个分类器进行组合公共预测。
核心思想就是如何训练处多个弱分类器以及如何将这些弱分类器进行组合。

要获得好的集成,个体学习器应“好而不同”

两大类集成学习方法:
  • 串行
    个体学习器存在强依赖关系
    Boosting
  • 并行
    个体学习器间不存在强依赖关系
    Bagging
    随机森林(Random Forest,RF)

Boosting

image.png
  • 如何计算学习误差率e?
  • 如何得到弱学习器权重系数α?
  • 如何更新样本权重D?
  • 使用何种结合策略?
AdaBoost
adaboost_流程图_by_刘建平.png

Adaboost是模型为加法模型(结合策略),学习算法为前向分步学习算法,损失函数为指数函数的分类问题。

一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络。对于决策树,Adaboost分类用了CART分类树,而Adaboost回归用了CART回归树。


image.png

Adaboost分类采用的是加权表决法,最终的强分类器为上图中的H(x)

由图中过程6可得,分类误差率和弱分类器权重系数成反比。
由过程7可得,如果样本分类错误,则样本权重会增加,反之则减小
所以下一个弱分类器学习的是样本权重更新后的样本分布

Bagging

image.png

可用于多分类,回归等任务
从偏差-方差分解的角度看,Bagging主要降低方差,因此在不剪枝决策树,神经网络等易受样本扰动的学习器上效果更为明显。

随机森林

RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练工程中引入随机属性选择。
假设由d个属性,在RF中,对决策树的每个结点,先从该结点的属性集合中选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。


image.png

结合策略

  • 平均法
  • 加权平均法
  • 投票法
  • 学习法
    通过一个学习器来进行结合,Stacking是学习法的典型代表
    用于结合的学习器被称为meta-learner

Stacking

Model averaging can be improved by weighting the contributions of each sub-model to the combined prediction by the expected performance of the submodel. This can be extended further by training an entirely new model to learn how to best combine the contributions from each submodel. This approach is called stacked generalization, or stacking for short, and can result in better predictive performance than any single contributing model.


image.png
基于神经网络模型的Stacking算法
微信截图_20190226141542.png
# define multi-headed input
ensemble_visible = [model.input for model in members]
# concatenate merge output from each model
ensemble_outputs = [model.output for model in members]
merge = concatenate(ensemble_outputs)
hidden = Dense(10, activation='relu')(merge)
output = Dense(3, activation='softmax')(hidden)

model = Model(inputs=ensemble_visible, outputs=output)   # meta learner

<机器学习>第8章集成学习-周志华
How to Develop a Stacking Ensemble for Deep Learning Neural Networks in Python With Keras
集成学习之Adaboost算法原理小结

你可能感兴趣的:(集成学习V1)