1、boosting与bagging的概念:
(1)bagging:从原始数据中随机抽样得到S个同样大小的数据集,来训练S个基学习器,各学习器之间互不依赖。是一种并行的方法。
各分类器的权重都是相等的。分类结果是用这S个分类器进行分类,选择分类器投票结果中最多的类别作为最后的分类结果。
(抽样方法为有放回的抽样:允许每个小数据集中可以有重复的值。)
bagging对于弱学习器没有限制,这和Adaboost一样。但是最常用的一般也是决策树和神经网络。
bagging的集合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。
优点:
a.算法每次都进行采样来训练模型,泛化能力很强,对于降低模型的方差很有作用,当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些;
b.训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶,高效;
c.标准的AdaBoost只适用于二分类,Bagging能直接用于多分类,回归等任务;
d.因为自助采样,每个基学习器只使用了出事训练集中约63.2%的样本,剩下的样本(36.8%称为OOB)可以用作验证集等等。
(2)boosting:用所有的数据去训练基学习器,个体学习器之间存在依赖关系,每一个学习器都是基于之前训练的学习器的结果,串行训练,集中关注被错分的数据,来获得新的学习器,达到提升的效果。(通俗来说,就是每次都只学习一点,然后一步步的接近最终要预测的值。)
分类的结果是基于所有分类器的加权求和结果的,分类器的权重并不相等,每个权重代表的是其对应分类器在上一轮迭代中的成功度。
优点:泛化误差低,易实现,分类准确率较高,可调参数少;
缺点:对离群点比较敏感。
两者相同点:所使用的分类器的类型都是一致的。
2、为什么说bagging是减少方差variance,而boosting是减少偏差bias?
(1)Bagging对样本重采样,对每一重采样得到的子样本集训练一个模型,最后取平均。由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的bias和variance(事实上,各模型的分布也近似相同,但不独立)。bagging方法得到的各子模型是有一定相关性的,属于上面两个极端状况的中间态,因此可以一定程度降低variance。(降低variance,预测更集中)
(2)因此boosting是在sequential(串联)地最小化损失函数,其bias自然逐步下降。但由于是采取这种sequential、adaptive的策略,各子模型之间是强相关的,于是子模型之和并不能显著降低variance。所以说boosting主要还是靠降低bias来提升预测精度。(降低bias,预测更准)
(3)直观解释
boosting是把许多弱的分类器组合成一个强的分类器。弱的分类器bias高,而强的分类器bias低,所以说boosting起到了降低bias的作用。variance不是boosting的主要考虑因素。
bagging是对许多强(甚至过强)的分类器求平均。在这里,每个单独的分类器的bias都是低的,平均之后bias依然低;而每个单独的分类器都强到可能产生overfitting的程度,也就是variance高,求平均的操作起到的作用就是降低这个variance。
3、二者主要区别
- 样本选择上:Bagging采用的是Bootstrap随机有放回抽样;而Boosting每一轮的训练集是不变的,改变的只是每一个样本的权重。
- 样本权重:Bagging使用的是均匀取样,每个样本权重相等;Boosting根据错误率调整样本权重,错误率越大的样本权重越大。
- 预测函数:Bagging所有的预测函数的权重相等;Boosting中误差越小的预测函数其权重越大。
- 并行计算:Bagging各个预测函数可以并行生成;Boosting各个预测函数必须按顺序迭代生成。
4、下面是将决策树与这些算法框架进行结合所得到的新的算法:
1)Bagging + 决策树(CART) = 随机森林
2)AdaBoost + 决策树 = 提升树
3)Gradient Boosting + 决策树 = GBDT
5、学习器结合可能带来的好处
(1)提高泛化能力 (2)减低局部最优风险 (3)假设空间扩大,更好相似。
6、模型融合的方法/策略
(1)平均法:对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。
(2)投票法:最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数。
(3)学习法:stacking(这一层的输出作为下一层的输入数据的一部分)
当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。
7、常见融合框架的原理;优缺点;融合一定会提升性能么?为什么融合可能会提高预测效果?
原理:多个比一个好+保证准确度、防止过拟合+弱学习器明显+好而不同
常见:bagging(并行+少方差),boosting(串行+少偏差),stacking(输出–>输入)
不一定,好而不同
模型有差异、体现不同表达能力