机器学习中的bagging技巧

bagging的作用

bagging是增强原算法的一种手段。

神经网络、分类问题、回归问题、线性回归中的子集选择问题、k最近邻算法都可以使用bagging来加强。

使用bagging加强后的算法的性能会出现一些有规律的变化。一般而言,若原来的算法的稳定性差,使用bagging后,算法的准确率会得到较大程度的提高。若原来的算法的稳定性高,则使用bagging后,算法的准确率会略微降低。因此,在考虑使用bagging之前,要先知道原算法的稳定性。

研究表明,神经网络、分类问题、回归问题、线性回归中的子集选择问题都是不稳定的,而k最近邻算法是稳定的Breiman [1994]。

bagging简介

设有数据集L={(y_n,x_n), n = 1,…,N},其中y是数值或者类别。记phi(x,L)是一个预测器,其中输入是x,输出的y是算法由x得到的预测值。

如果我们有一组数据集{L_k},其中每个数据集由N个来自数据集L相同分布的观测值组成,那么我们可以基于数据集{L_k}得到比基于数据集L更好的预测器。基于数据集{L_k},可以得到预测器组合{phi(x,L_k)},将分两种情况得到一个{L_k}整体的预测器。

  • y是数值

    整体的预测器是预测器组合{phi(x,L_k)}的平均

  • y是类别

    采用提票机制,预测器组合{phi(x,L_k)}预测出的类别最多的类别作为整体预测器输出的预测类别

如果没有数据集{L_k},可以通过bootstrap sample的方法来产生一组近似的数据集。

Bootstrapping算法

所谓的Bootstrapping法就是利用有限的样本资料经由多次重复抽样,重新建立起足以代表母体样本分布之新样本。
对于一个采样,我们只能计算出某个统计量(例如均值)的一个取值,无法知道均值统计量的分布情况。但是通过自助法(自举法)我们可以模拟出均值统计量的近似分布。有了分布很多事情就可以做了(比如说有你推出的结果来进而推测实际总体的情况)。

bootstrapping方法的实现很简单,假设你抽取的样本大小为n:
在原样本中有放回的抽样,抽取n次。每抽一次形成一个新的样本,重复操作,形成很多新样本,通过这些样本就可以计算出样本的一个分布。新样本的数量多少合适呢?大概1000就差不多行了,如果计算成本很小,或者对精度要求比较高,就增加新样本的数量。

最后这种方法的准确性和什么有关呢?这个我还不是清楚,猜测是和原样本的大小n,和Bootstrapping产生的新样本的数量有关系,越大的话越是精确,更详细的就不清楚了,想知道话做个搞几个已知的分布做做实验应该就清楚了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值