集成学习(Ensemble learning)算法之bagging

今日收获:心急吃不了热豆腐,饭一口一口吃,路一步一步走,先做好基础的算法再想办法在上面进行提高:)

参考文献:

Yoshua Bengio的deep learning电子书[7.11] http://www.deeplearningbook.org/ 点击打开链接

https://en.wikipedia.org/wiki/Bootstrap_aggregating 点击打开链接

http://blog.csdn.net/qq_30189255/article/details/51532442点击打开链接

http://www.csdn.net/article/2015-10-20/2825965 点击打开链接

http://blog.csdn.net/u014665416/article/details/51557318 点击打开链接

感谢大神的分享,受益匪浅。


bagging(装袋法)简述:

bagging是集成学习法的一种基础方法法,它是将N个弱分类器。装袋组成一个强分类器。每个弱分类器的样本由原有的样本经过均匀又放回的采样得到;强分类器的最终结果由多个弱分类器的表决决定,每个弱分类器的权值相同表决能力相同。

(adaboost与之区别:adaboost首先在一个及分类器上将错分样本的权重增加;再用这些新的样本去训练第二个分类器,得到的分类器继续调节样本的权重;最终同样是根据多个弱分类器的正确率来决定强分类器的分类结果,但是各个弱分类器的权重由其正确率决定)

具体方法:

1.每个样本大小与原数据相同,从其中按照均匀概率分布有放回地抽样而来。
2.每个生成的样本集训练得到一个基分类器,分类器可以是相同的也可以是不同。
3.将每个基分类器按照一定的准则融合,得到最终的强分类器。对分类任务用投票法融合,对回归任务采用平均值法融合。

引文中的图解和例子很直观:http://blog.csdn.net/qq_30189255/article/details/51532442
目标:将一维数据 X:0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0进行标号(Y:1或-1),即选择最佳的分裂点,使其达到测试条件:当x<=k时,y=?;当x>k时,y=?
原数据:
集成学习(Ensemble learning)算法之bagging
随机进行5次抽样和分类器的训练得到:

集成学习(Ensemble learning)算法之bagging
将五次训练的分类器融合得到(最终得到正确率为90%):
下图的融合方法是将每个样本在5次分类中的结果作和,和的正负即为强分类器的分类结果。
集成学习(Ensemble learning)算法之bagging
图片引用自参考博客:http://blog.csdn.net/qq_30189255/article/details/51532442,如有冒犯,请联系我删图。

小结:

1.bagging通过结合几个模型来降低泛化误差,是一种集成技术(泛化误差,用来衡量分类器泛化能力的指标 http://www.cnblogs.com/justcxtoworld/p/3425656.html);
2.通过bagging得到的强分类器的分类正确率不会比单个基分类器的结果差,具体分析见论文[7.11]

假设k(就是之前提到的N)个回归模型,每个模型在每个例子上的误差是et,且et服从均值为零,方差为v,协方差为c的多维正态分布,通过所有集成模型的的平均预测误差为(et的和/k),集成预测器的平方误差的方差为:

集成学习(Ensemble learning)算法之bagging

公式引自:Yoshua Bengio的deep learning电子书[7.11] http://www.deeplearningbook.org/

在误差完全相关即c=v的时候,均方误差=v,所以模型平均模型平均没有任何帮助;在错误完全不相关即c=0的时候,该集成平方误差的期望仅为v/k,也就是说,集成平方误差的期望会随着集成规模增大而线性减小。因此,集成平均至少与他的任何成员表现一样好,而且如果成员的误差是独立的,那么集成将表现得更好。

集成学习(Ensemble learning)算法之bagging


3.每个数据集是从原数据中重复有放回抽样得到的,因此,得到的样本集会缺少来自数据集的例子或有若干重复的例子。
4.基分类器越不相关,对于泛化误差的降低越有效。