机器学习(五)——集成学习

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(输出–>输入)
不一定,好而不同
模型有差异、体现不同表达能力

本文转自:博客园 - 深度机器学习 ,转载此文目的在于传递更多信息,版权归原作者所有。

--电子创新网--
粤ICP备12070055号