偏差和方差


总览

对于某个特定的模型来说,它的泛化误差(Generation Error)可以分为三部分:模型预测值的方差(variance)、预测值相对真实值的偏差(bias)、样本本身存在的噪声(noise),可以用下面的公式进行表示:
模型保存python 模型保存后 再预测 偏差_方差
其中模型保存python 模型保存后 再预测 偏差_模型保存python_02

我们分别看一下泛化误差的这三个部分:

  • 模型预测值相对真实值的偏差:直观上它是算法预测值和样本真实值之间的偏离程度,它反映了模型的拟合能力,偏差越大则模型的拟合能力越差,偏差越小的模型拟合能力越好,但是如果偏差小到一定程度则模型就可能会出现过拟合
  • 模型预测值的方差:它反映模型在相同规模不同的训练集上的性能的波动情况,当模型具有低方差,则对于训练集变化的受影响较小,反之较大
  • 样本本身存在的噪声:它是真实情况中不可避免的,因此它属于不可约减的误差(irreducible error),它反映了当前的训练集上任意的算法所能达到的额期望误差的下界,刻画了学习问题本身的难度

下面我们通过一个例子具体看一下:假设靶的中心是样本的真实值,左图镖的位置距离中心远,表示偏差大,但是位置相对集中,则方差较小;右图镖的位置相对左图距离中心更近,表示偏差较小,但是位置分散,表示方差较大。



模型保存python 模型保存后 再预测 偏差_模型预测_03


相对于前面的公式表示,我们用图像化表示后就可以很直观的看到偏差、方差和噪声的情况。



模型保存python 模型保存后 再预测 偏差_方差_04


公式推导

那么前面模型保存python 模型保存后 再预测 偏差_拟合_05 是怎样的出来的呢?我们以最基本的回归问题为例,假设某一个数据集中样本的真实分布为模型保存python 模型保存后 再预测 偏差_模型预测_06,采用最常用的平方损失来度量预测效果,则模型的期望错误可以写成:
模型保存python 模型保存后 再预测 偏差_拟合_07
那么最优的模型表示为模型保存python 模型保存后 再预测 偏差_模型预测_08 ,那么再将上面的期望错误进行分解
模型保存python 模型保存后 再预测 偏差_方差_09

其中模型保存python 模型保存后 再预测 偏差_模型保存python_10 ,第一项是可以通过学习优化的,第二项是由于噪声等原因造成的不可优化的误差。而第一项又可以作如下的分解:
模型保存python 模型保存后 再预测 偏差_拟合_11
综合上面的分析,期望错误可以写成模型保存python 模型保存后 再预测 偏差_模型预测_12 。其中:
模型保存python 模型保存后 再预测 偏差_模型预测_13
由于模型保存python 模型保存后 再预测 偏差_拟合_14是不可优化的,所以最小期望错误就等于最小偏差和最小方差之和。

偏差-方差分解

模型的期望错误、偏差和方差随复杂度的变化情况如下所示,从中可以看出,最优的模型并不一定是偏差曲线和方差曲线的交点。



模型保存python 模型保存后 再预测 偏差_方差_15


因此,想让模型同时拥有低偏差和低方差是不可能的,也被称为偏差-方差窘境。在模型训练的起始阶段,拟合效果差,则偏差较大,数据集的变化对于模型的影响也很小,表示方差较小;随着训练的深入,模型的拟合能力越来越强,偏差逐渐减小,方差逐渐增大;当模型训练的一定程度时,它的拟合能力非常强,这时的所有样本都可以很好的被拟合,偏差很小,但是训练集细微的变化都会对模型的效果产生很大的影响,方差就很大,则将发生过拟合。

一般来说:参数或者线性的机器学习算法一般都会有一个很高的偏差和一个很低的方差。但是,非参数或者非线性的机器学习算法一般都有一个很低的偏差和一个很高的方差。

所以,根据偏差-方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分的拟合数据,并且使方差较小,即使得数据扰动产生的影响小。故在实际使用中,我们需要在两者之间做一个权衡,使我们的模型效果达到最优。