偏差bias与偏差variance

学习算法的预测误差, 或者说泛化误差(generalization error)可以分解为三个部分: 偏差(bias), 方差(variance)噪声(noise). 在估计学习算法性能的过程中, 我们主要关注偏差与方差. 因为噪声属于不可约减的误差 (irreducible error).

1 含义

偏差bias:期望输出真实标记的差别称为偏差。 
方差variance:不同的训练数据集训练出的模型的输出值之间的差异,它表示了模型的稳定程度。比如,要预测一个给定点的值,用n份有差异的数据集训练,训练了n个模型,结果这n个模型对该点的预测值的差异浮动很大,此时该模型的variance就偏高了。

假设红色的靶心区域是学习算法完美的正确预测值, 蓝色点为每个数据集所训练出的模型对样本的预测值, 当我们从靶心逐渐向外移动时, 预测效果逐渐变差。

很容易看出有两副图中蓝色点比较集中, 另外两幅中比较分散, 它们描述的是方差的两种情况. 比较集中的属于方差小的, 比较分散的属于方差大的情况。

再从蓝色点与红色靶心区域的位置关系, 靠近红色靶心的属于偏差较小的情况, 远离靶心的属于偏差较大的情况。

解释:

 左上(图1):是一种低偏差低方差模型。表现出来就是,模型的预测效果很好,并且模型比较健壮(稳定)。

 右上(图2):是一种低偏差高方差模型。表现出来就是,模型的预测效果很好,但是模型不稳定,预测结果比较发散。  

左下(图3):是一种高偏差低方差模型。表现出来就是,模型的预测效果不好,但是模型比较健壮(稳定),预测结果比较集中。

 右下(图4):是一种高偏差高方差模型。表现出来就是,模型的预测效果不好,并且模型不稳定。

小结:  

偏差,是描述数据跟我们的期望的偏差,算是“有监督的”,需要人的知识参与的指标。

方差,是描述数据分散程度的,算是“无监督的”客观的指标;

2 期望泛化误差公式推导

有了直观感受以后, 下面来用公式推导泛化误差与偏差与方差, 噪声之间的关系.

符号 涵义
x 测试样本
D 数据集
yD x 在数据集中的标记
y x 的真实标记
f 训练集 D 学得的模型
f(x;D) 由训练集 D 学得的模型 f 对 x 的预测输出
f¯(x) 模型 f 对 x 的 期望预测 输出

(1)泛化误差

以回归任务为例, 学习算法的平方预测误差期望为:

(2)偏差

期望预测与真实标记的误差称为偏差(bias), 为了方便起见, 我们直接取偏差的平方:

(3)方差

在一个训练集 D上模型 f 对测试样本 x 的预测输出为 f(x;D), 那么学习算法 f 对测试样本 x 的 期望预测 为:

上面的期望预测也就是针对 不同 数据集 D, f 对 x 的预测值取其期望, 也被叫做 average predicted 。

使用样本数相同的不同训练集产生的方差为:

(4)噪声

噪声为真实标记与数据集中的实际标记间的偏差:

(5)对算法的期望泛化误差进行分解:

蓝色部分是对上面对应的等价替换, 然后对其展开后;红色部分刚好为 0。

第一个红色部分是因为第二个红色部分是因为噪声期望为0。

对最终的推导结果稍作整理:

即:期望泛化误差=偏差^2+方差+固有噪音

  • 偏差.

    偏差度量了学习算法的期望预测与真实结果的偏离程序, 即 刻画了学习算法本身的拟合能力 .

  • 方差.

    方差度量了同样大小的训练集的变动所导致的学习性能的变化, 即 刻画了数据扰动所造成的影响 .

  • 噪声.

    噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界, 即 刻画了学习问题本身的难度 . 巧妇难为无米之炊, 给一堆很差的食材, 要想做出一顿美味, 肯定是很有难度的.

我们训练模型的最终目标,是降低模型的泛化误差variance强调了模型的泛化能力bias强调了模型的误差能力。如果一个模型variance和bias都很低,它就能获得较低的泛化误差。 

  • 给定一个学习任务, 在训练初期, 由于训练不足, 学习器的拟合能力不够强, 偏差比较大, 也是由于拟合能力不强, 数据集的扰动也无法使学习器产生显著变化, 也就是欠拟合的情况;

  • 随着训练程度的加深, 学习器的拟合能力逐渐增强, 训练数据的扰动也能够渐渐被学习器学到;

  • 充分训练后, 学习器的拟合能力已非常强, 训练数据的轻微扰动都会导致学习器发生显著变化, 当训练数据自身的、非全局的特性被学习器学到了, 则将发生过拟合.

  许多模型在设计的时候,都强调避免过拟合,像普遍存在的正则项。在ensemble类模型中,随机森林基于bagging方法,通过样本采样和特征采样,使得每颗树都各有特色。gbdt基于boosting方法,在每一轮训练,通过拟合残差,也训练出了各有特色的树。这些方式在保证bias的基础上,使得模型具有良好的泛化能力。

3 权衡偏差与方差:

模型过于简单时,容易发生欠拟合(high bias);模型过于复杂时,又容易发生过拟合(high variance)。为了达到一个合理的 bias-variance 的平衡,此时需要对模型进行认真地评估。这里简单介绍一个有用的cross-validation技术K-fold Cross Validation (K折交叉验证), 

所谓的泛化误差也即模型在新数据集上的表现。在训练数据上面,我们可以进行交叉验证(Cross-Validation)。 
K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,我们便可获得 k 个模型及其性能评价。平均K次的结果或者使用其它结合方式,最终得到一个单一估测。

k-fold cv的k的选择:

K值大的时候, 我们会有更少的Bias(偏差), 更多的方差Variance。 
K值小的时候, 我们会有更多的Bias(偏差), 更少的方差Variance

通常把k控制在5~10的范围里。

 k=10 时的 k-fold 方法的工作流程:

bias-variance判断:

根据错误均值判断bias,如果错误均值很低,说明在这个数据集上,该模型准确度是可以的。 
根据错误标准差来判断variance,如果错误标准差很高,说明该模型的泛化能力需要提高。

参考

https://blog.csdn.net/qq_30490125/article/details/52401773

猜你喜欢

转载自blog.csdn.net/weixin_39910711/article/details/79469255