一、什么是集成学习
集成学习通过构建并结合多个学习器来完成学习任务。要获得好的集成,学习器之间要具有差异性。
一. 集成学习的三大类:
- 个体学习器间不存在强依赖关系、可同时生成的,用于减少方差的 bagging,如 Random Forest
- 个体学习器间存在强依赖关系、必须串行生成的,用于减少偏差的 boosting, 如 Adaboosting
- 用于提升预测结果的stacking,投票机制
1. Bagging – 降低方差
Bagging使用装袋采样来获取数据子集训练基础学习器。最常用的集成算法原模型是随机森林。
算法过程如下:
- 从原始样本集中抽取训练集。每轮从原始样本集中
有放回的抽样(可能抽到重复的样本),抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中).共进行k轮抽取,得到k个训练集.(k个训练集相互独立) - 每次使用一个训练集得到一个模型,k个训练集共得到k个模型,
所有弱分类器的权重相等 - 对分类任务使用投票的方式集成,而回归任务通过平均的方式集成。
在随机森林中,每个树模型都是装袋采样训练的。另外,特征也是随机选择的,最后对于训练好的树也是随机选择的。这种处理的结果是随机森林的偏差增加的很少,而由于弱相关树模型的平均,方差也得以降低,最终得到一个方差小,偏差也小的模型。
2. boosting – 降低偏差
- Boosting指的是通过算法集合将弱学习器转换为强学习器。主要原则是训练一系列的弱学习器,训练的方式是利用加权的数据。
对于错分数据给予较大的权重。每一轮的训练集不变 - 加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即
增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值
对于训练好的弱分类器,如果是分类任务按照权重进行投票,而对于回归任务进行加权,然后再进行预测。
3. stacking
Stacking是通过一个元分类器或者元回归器来整合多个分类模型或回归模型的集成学习技术。
基础模型利用整个训练集做训练,元模型将基础模型的特征作为特征进行训练。