集成学习思想总结-bagging,boosting,stacking
基本理论
Bagging(套袋法)
bagging的算法过程如下:
- 从原始样本集中使用Bootstraping方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)
- 对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)
- 对于分类问题:由投票表决产生分类结果;对于回归问题:由k个模型预测结果的均值作为最后预测结果。(所有模型的重要性相同)
Boosting(提升法)
boosting的算法过程如下:
- 对于训练集中的每个样本建立权值wi,表示对每个样本的关注度。当某个样本被误分类的概率很高时,需要加大对该样本的权值。
- 进行迭代的过程中,每一步迭代都是一个弱分类器。我们需要用某种策略将其组合,作为最终模型。(例如AdaBoost给每个弱分类器一个权值,将其线性组合最为最终分类器。误差越小的弱分类器,权值越大)
- 开始样本 和 模型(最好是弱模型)权重相同。经过第一个分类后。错误的样本会被增加权重。被后续的分类器重点关注。这样,后续模型就会对这些错误数据分类准确度好。然后依次下去。最后投票的时候,也有权重。错误率越高,权重越低。
下面是将决策树与这些算法框架进行结合所得到的新的算法:
1)Bagging + 决策树 = 随机森林
2)AdaBoost + 决策树 = 提升树
3)Gradient Boosting + 决策树 = GBDT
stacking的介绍可以参考,写的很好。
https://blog.****.net/qq_18916311/article/details/78557722
应用场景
一般来说,不管是在产业界还是数据挖掘比赛中,单模型做到一定程度后,如果单模型多样 性比较大的话(相互独立),尝试模型融合极有可能取得令人喜悦的效果提升。