集成学习
- 不是一个单独机器学习算法,而是构建多个并结合多个弱学习器来完成学习任务
- 通过训练若干个个体学习器,用一定结合策略,就可形成一个强学习器
- 主要分为Bagging和Boosting两种类型的算法
BaggIng(有放回的抽取样本)
- Bagging算法的弱学习器(基学习器)之间无依赖关系,可并行生成;
- 典型算法有随机森林
Boosting(提升树)
- 一般是串行学习,一轮学完,学错的在下一轮多学
- 典型算法有AdaBoosting, XGBoosting, LightGBM,GBDT
在我们训练一个模型时,偏差和方差都要得到照顾。
对于Bagging类型算法来说,由于我们在取样时就考虑的是每次有放回的抽样,且会并行地训练很多不同分类器(并行学习),其主要目的就是降低方差(variance),故当选取了相互独立的基学习器多了以后,方差就很小,但是该算法会导致偏差(bias)比较高,因此我们对于每个基学习器的目标就是降低它们 的偏差,所以我们采用深度很深甚至不剪枝的决策树(增加拟合度)。
对于Boosting类型算法来说,它每轮训练集都不变且一般是对所有样本进行学习,每一步都是在上一轮基础上为了更加拟合原数据(串行学习,学错了在下一轮增加权重,进行多学),所以该类型算法一般可以有较低的偏差,但同样会导致有较高的方差,另外也容易产生过拟合;因此,我们对于Boosting类型的算法,需要考虑如何选择方差更小的分类器,即更简单的分类器(简单的分类器学习少,方差小,不容易过拟合),所以一般选择深度很浅的决策树。
所以,根据应用场景和业务需求不同,我们需要判断使用何种类型算法。比如,对于银行对账这类需求,对于模型精度要求高,那么多考虑使用Boosting算法;而对于一般比较宽泛的需求预测,但是要求方差波动较小的,可以考虑使用Bagging类型的算法。
Boosting与Bagging比较
- 样本选择
Boosting:每轮训练集不变,只是训练集中每个样例在分类器中权重发生变化,而权值为根据上一轮分类结果进行调整
Bagging:训练集是在原始集中进行有放回选取,从原始集中选出的各轮训练集之间为独立 - 样例权重
Boosting:根据错误率不断调整样例权值,错误率越大,则权重越大,因此Boosting分类精度要优于Bagging(学习错了,多学点,故权重越大,精度也越高)
Bagging:用均匀取样,每个样例权重相等 - 预测函数
Boosting:每个弱分类器都有相应权重,对于分类误差小的分类器有更大的权重
Bagging:所有预测函数权重相等 - 并行计算
Boosting:各函数顺序生成,因为后一个模型参数要考虑前一轮模型结果
Bagging:各函数可并行生成,对神经网络这样极为耗时的学习方法,Bagging可用并行训练节省大量时间
二者区别与联系:
- Bagging和Boosting都可有效提高分类准确性,在大多数数据集中,Boosting准确性比Bagging要高
- 在有些数据集中,boosting由于过拟合,会引起退化
集成学习结合策略:
- 投票法
- 平均法
- 学习法:stacking(堆叠),即将训练集弱学习器结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果
参考文献
https://zhuanlan.zhihu.com/p/33700459