本文主要是介绍Boosting Bagging Stacking整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一. 知识点
Bias-Variance Tradeoff
bias-variance是分析boosting和bagging的一个重要角度,首先讲解下Bias-Variance Tradeoff.
假设training/test数据集服从相似的分布,即
从训练集我们可以得到一个评估函数 f^ f ^ ,对于测试集的每个样本 j j ,对其观测值的预测为 f^(xj) f ^ ( x j ) 。
考虑测试集上的MSE(mean squared error)
上式中 E[ϵ2] E [ ϵ 2 ] 来源于测试集本身的误差,不可控。 第二项是bias term, 主要来源于欠拟合,即评估函数 f^(x) f ^ ( x ) 不能够充分拟合数据真实值(模型capacity弱)。最后一项是与过拟合紧密联系的,即评估函数 f^(x) f ^ ( x ) 过度拟合了训练集数据(训练集自身非全局的特性被学习器学到),导致泛化能力弱,一但数据集扰动,误差就很大。
reference:
[1]. http://scott.fortmann-roe.com/docs/BiasVariance.html
[2]. http://cs229.stanford.edu/section/error-analysis.pdf
二. 联系与区别
Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法。即将弱分类器组装成强分类器的方法。
(1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
(2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
(3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
(4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
(5) Bias-Variance角度:
Bagging: 减少variance
Boosting: 减少Bias
reference:
[1]. https://www.cnblogs.com/liuwu265/p/4690486.html
[2]. http://www.cnblogs.com/guolei/archive/2013/05/21/3091301.html
三. 相关面试问题
1. 为什么说bagging是减少variance,而boosting是减少bias?
独立与线性不相关
假设两个随机变量是 X X 和, 联合概率密度函数是 f(x,y) f ( x , y ) , X X 的边缘密度函数是, Y Y 的边缘密度函数是, 他们的期望分别是 E[X] E [ X ] 和 E[Y] E [ Y ] , 方差分别是 Var(X) V a r ( X ) 和 Var(Y) V a r ( Y ) , 协方差是 COV(X,Y)=E[XY]−E[X]E[Y] C O V ( X , Y ) = E [ X Y ] − E [ X ] E [ Y ] 。两个随机变量相互独立,等价于联合密度函数等于两个边缘密度的乘积,即 f(x,y)=g(x)h(y) f ( x , y ) = g ( x ) h ( y ) 。
两个随机变量线性不相关, 等价于协方差或者Pearson的线性相关系数为0,即 COV(X,Y)=0 C O V ( X , Y ) = 0 。
独立是线性不相关的充分不必要条件。
Variance
给定 N N 个随机变量, 则
Var(∑i=1NXi)=∑i=1N∑j=1NCOV(Xi,Xj)=∑i=1NVar(Xi)+∑i≠jCOV(Xi,Xj) V a r ( ∑ i = 1 N X i ) = ∑ i = 1 N ∑ j = 1 N C O V ( X i , X j ) = ∑ i = 1 N V a r ( X i ) + ∑ i ≠ j C O V ( X i , X j )
reference:
[1]. https://en.wikipedia.org/wiki/Variance
TO BE CONTINUED.
这篇关于Boosting Bagging Stacking整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!