参考链接:
什么是集成学习?
简单来说,就是组合多种模型来改善机器学习的结果。
具体来说,即结合数个“好而不同”的机器学习技术,形成一个预测模型,以此来降方差(bagging),减偏差(boosting),提升预测准确性(stacking)。
集成学习是一种「训练思路」,并不是某种具体的方法或者算法。
集成学习分类
- 串行集成学习:基学习器串行产生(如Adaboost)
在训练当前学习器之前通过给予被先前学习器错误标记的样本更高的权值,让当前学习器在先前学习器的错误样本上有更好的表现。 - 并行集成学习:基学习器并行产生(如随机森林)
利用基学习器的独立性,通过平均化减少错误。
包括同质基学习器(使用单一的基学习算法产生相同类型的基学习器,产生同质的集成系统)以及异质的学习器。
集成学习思路
bagging(bootstrap aggregating)
- 思路
随机抽取(有放回)数据集里的样本,训练一个学习器,重复抽取M次,训练得到M个baselearner;
对于分类任务用投票的方法集成,对于回归任务用取平均的方法。 - 理解
所有基础模型都一致对待,每个基础模型手里都只有一票。然后使用民主投票的方式得到最终的结果。
因此,大部分情况下,经过 bagging 得到的结果方差(variance)更小。 - 分类
并行集成学习 - 典型
随机森林(bagging + 决策树)
Boosting
- 思路
改变训练数据的权值或概率分布,通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。
通过加权多数表决(分类任务)或加权求和和(回归任务)来产生最终预测。 - 理解
对基础模型不是一致对待的,而是经过不停的考验和筛选来挑选出「精英」,然后给精英更多的投票权,表现不好的基础模型则给较少的投票权,然后综合所有人的投票得到最终结果。
因此,大部分情况下,经过 boosting 得到的结果偏差(bias)更小。 - 分类
串行集成学习 - 典型
Adaboost
Gradient boosting
Stacking
- 思路
将元分类器或元回归器串行叠在一起,基础层模型在完整的训练数据集上训练,然后其输出特征再训练新的数据。
集成学习方法选择
- 数据集
数据集大:划分成多个小数据集,学习多个模型进行组合
数据集小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合