偏差(Bias)与方差(Variance)


转载请标明出处:http://blog.csdn.net/wuzqchom/article/details/75091612


目录

1. 问题背景


NFL(No Free Lunch Theorem)告诉我们选择算法应当与具体问题相匹配,通常我们看一个算法的好坏就是看其泛化性能,但是对于一个算法为什么好为什么坏,我们缺乏一些认识。“Bias-Variance Decomposition”就是从偏差和方差的角度来解释一个算法的泛化性能。

2. 一点点数学

“Bias-Variance Decomposition” 是以测试集上的平方错误为基础的,假设我们的预测值为 g ( x ) ,真实值为 f ( x ) ,则均方误差为 E ( ( g ( x ) f ( x ) ) 2 )

为了让世界更加美好,我们在这里不考虑样本的噪声。


“The noise term is unaviodable no matter what we do, so the terms we are interested in are really the bias and variance”(from “Learning From Data” Page 64)

(噪声的存在是学习算法所无法解决的问题,数据的质量决定了学习的上限。而假设在数据已经给定的情况下,此时上限已定,我们要做的就是尽可能的接近这个上限)


并且使用 g 来代表预测值(这里我们把它看成是随机变量,即不同数据学习得到的模型), f 代表真实值,
g ¯ = E ( g ) 代表算法的期望预测(如:可以用不同的数据集 D 1 , D 2 , . . . , D K 来得到 g ¯ = 1 K k g k ( x ) ),则有:

(1) E ( g f ) 2 = E ( g 2 2 g f + f 2 ) (2) = E ( g 2 ) g ¯ 2 + ( g ¯ f ) 2 (3) = E ( g 2 ) 2 g ¯ 2 + g ¯ 2 + ( g ¯ f ) 2 (4) = E ( g 2 2 g g ¯ 2 + g ¯ 2 ) + ( g ¯ f ) 2 (5) = E ( g g ¯ ) 2 v a r ( x ) + ( g ¯ f ) 2 b i a s 2 ( x )

3. 偏差与方差

由上面的公式可知,偏差描述的是算法的预测的平均值和真实值的关系(可以想象成算法的拟合能力如何),而方差描述的是同一个算法在不同数据集上的预测值和所有数据集上的平均预测值之间的关系(可以想象成算法的稳定性如何)。
(ps:个人认为可以把偏差认为是单个模型的学习能力,而方差则描述的是同一个学习算法在不同数据集的不稳定性)
偏差和方差的形象展示如下图所示(图片引自Understanding the Bias-Variance Tradeoff


bias-variance

图中的红色位置就是真实值所在位置,蓝色的点是算法每次预测的值。
可以看出,偏差越高则离红色部分越远,而方差越大则算法每次的预测之间的波动会比较大。

4. 偏差方差窘境

在下图中,给出了偏差方差和总体的泛化误差的示意图(图片引自Understanding the Bias-Variance Tradeoff ):


这里写图片描述


从图中我们可以看出,偏差和方差两者是有冲突的,称之为变差方差窘境(bias-variance dilemma)。

假如学习算法训练不足时,此时学习器的拟合能力不够强,此时数据的扰动不会对结果产生很大的影响(可以想象成由于训练的程度不够,此时学习器指学习到了一些所有的数据都有的一些特征),这个时候偏差主导了算法的泛化能力。随着训练的进行,学习器的拟合能力逐渐增强,变差逐渐减小,但此时不同通过数据学习得到的学习器就可能会有较大的偏差,即此时的方差会主导模型的泛化能力。若学习进一步进行,学习器就可能学到数据集所独有的特征,而这些特征对于其它的数据是不适用的,这个时候就是发生了过拟合的想象。

5. Bagging和Boosting


Bagging和Boosting是集成学习当中比较常用的两种方法,刚好分别对应了降低模型方差和偏差。

Bagging是通过重采样的方法来得到不同的模型,假设模型独立则有:
E ( i E ( X i ) n ) = E ( X i )

V a r ( i V a r ( X i ) n ) = 1 n V a r ( X i )

所以从这里我们可以看出Bagging主要可以降低的是方差。
而Boosting每一次都关注使得整理的loss减少,很显然可以降低bias。这里的模型之间并不独立,所以不能显著减少variance,而Bagging假设模型独立所以可以减少variance。
更多内容请参考知乎问题:为什么说bagging是减少variance,而boosting是减少bias? 回答很精彩。

参考资料: 1. 周志华《机器学习》p44-p46 2. Hsuan-Tien Lin. “Learning From Data”. Chapter 2.3 3. Christopher M. Bishop. “Pattern Recognition and Machine Learning” Chapter 3.1