学习借鉴来自于:
文章目录
当我们试图用任何机器学习技术来预测目标变量时,实际值和预测值的主要差异是噪声,方差和偏差。集成有助于减少这些因素。集成技术进一步分为Bagging和Boosting。
Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法。即将弱分类器组装成强分类器的方法。
1 Bagging (bootstrap aggregating)
首先介绍Bootstraping(自助法,拔靴法),它是一种逐一有放回的抽样方法(可能抽到重复的样本)。简单的说,假设数据集 D D D 的样本数为 n n n,每次有放回的逐一抽取样本,抽一个样本数也为 n n n 的数据子集 D ′ {D}' D′ (会抽到重复的样本),以 D ′ {D}' D′ 作为训练集, D / D ′ D /\ {D}' D/ D′ 为测试集。
样本在
n
n
n次采样中始终不被采到的概率是,
(
1
−
1
n
)
n
(1-\frac{1}{n})^{n}
(1−n1)n,取极限得到
lim
n
→
∞
(
1
−
1
n
)
n
=
1
e
≈
0.368
\lim_{n\rightarrow \infty }(1-\frac{1}{n})^{n}= \frac{1}{e}\approx 0.368
n→∞lim(1−n1)n=e1≈0.368
从偏差-方差分解角度看,Bagging主要关注降低方差。
Bagging即套袋法,是一个简单的集成技术,我们建立许多独立的预测变量/模型/学习者,并使用一些模型平均技术将它们结合起来。(例如加权平均数,多数票或正态平均数)。其算法过程如下:
A)从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
B)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
C)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
2 Boosting
其主要思想是将弱分类器组装成一个强分类器。在PAC(概率近似正确)学习框架下,则一定可以将弱分类器组装成一个强分类器。
关于Boosting的两个核心问题:
1)在每一轮如何改变训练数据的权值或概率分布?
通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。
2)通过什么方式来组合弱分类器?
通过加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。
而提升树通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。
3 Bagging,Boosting二者之间的区别
1)样本选择上:
-
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
-
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
-
Bagging:使用均匀取样,每个样例的权重相等
-
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
-
Bagging:所有预测函数的权重相等。
-
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
-
Bagging:各个预测函数可以并行生成
-
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
4 总结
从算法来看,Bagging关注的是多个基模型的投票组合,保证了模型的稳定,因而每一个基模型就要相对复杂一些以降低偏差(比如每一棵决策树都很深);而Boosting采用的策略是在每一次学习中都减少上一轮的偏差,因而在保证了偏差的基础上就要将每一个基分类器简化使得方差更小。
这两种方法都是把若干个分类器整合为一个分类器的方法,只是整合的方式不一样,最终得到不一样的效果,将不同的分类算法套入到此类算法框架中一定程度上会提高了原单一分类器的分类效果,但是也增大了计算量。下面是将决策树与这些算法框架进行结合所得到的新的算法:
1)Bagging + 决策树(CART) = 随机森林
2)AdaBoost + 决策树 = 提升树
3)Gradient Boosting + 决策树(CART) = GBDT
附录
分类任务:类别投票 & 概率值加权
回归任务:预测值加权
排序任务:排序次序加权
目标检测任务:预测结果NMS
语义分割任务:像素类别投票 & 加权
在对结果进行集成时需要考虑如下两点:
- 模型的多样性(多样性不足也利于集成)
- 模型的精度差异(差异过大不利于集成)
- 均值加权(会受到模型原始精度差异的影响)
- 权重加权(权重需人工设置,更容易过拟合)
- 排序加权(会受到模型原始精度差异的影响)
- 排序权重加权(权重需人工设置,更容易过拟合)
- 爬山法加权(更容易过拟合)
权重进行搜索,保留最优的权重; - 线性回归加权(需要额外训练,容易过拟合)
使用线性回归确定权重,learning 加权系数 - 参数优化加权(需要额外训练,容易过拟合)
使用优化方法搜索