版权声明: 本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/u011467621/article/details/48267247
By joey周琦
Bagging predictor可以产生多个版本的predictor, 并把这些predictor聚集(aggregate)为一个。这种策略对于不稳定的系统可以提高其精度。
有一个学习数据集
L
,包含数据
(yn,xn),n=1,…,N
,其中
x
为输入向量,
y
或者为一个类(分类问题)或者数值(回归问题)。我们可以从数据集
L
中学到一个predictor
φ(x,L)
.
假设现在我们有一系列数据集合
Lk
, 每个集合都有
N
个训练数据,并且都来自与数据集
L
相同的概率分布。那么明显我们可以得到一系列的predictor
φ(x,Lk)
. 如何利用
Lk
来得到一个比”单一数据集
L
得到的predictor”更好的predictor呢?
对于回归问题:
φA(x)=ELkφ(x,Lk)
对于分类问题,通过投票选择出初测最多的那个。
但是一般情况下,我们只有一个数据集
L
, 如何得到一些列的数据集
Lk
并且和
L
服从相同分布呢?利用bootstrap 从
L
进行有放回的采样(random sampling with replace ment)的到一些列数据集
LB
,再通过上面的方法聚集出一个预测器. 我们称这个过程为”bootstrap aggregating”,组合起来就称为”bagging”
- bagging可以提高“不稳定的算法”精度
- 这里的不稳定表示,数据集
L
小幅度的改变,就可能大幅度改变predictor
φ(x,L)
.(详见Breiman[1994])
- 不稳定的算法有 神经网络,分类树,回归树等
- 稳定的算法有KNN
- bagging可能会降低“稳定算法”的精度
- bagging可以减少variance, 但是会小幅度提高bias