理解 Bias 与 Variance 之间的权衡

有监督学习中,预测偏差的来源主要有两部分,分别为 bias  与 variance,模型的性能取决于 bias 与 variance 的 tradeoff ,理解 bias 与 variance 有助于咱们诊断模型的错误,避免 over-fitting 或者 under-fitting.html

在统计与机器学习领域权衡 Bias  与 Variance 是一项重要的任务,由于他可使得用有限训练数据训练获得的模型更好的范化到更多的数据集上,监督学习中的偏差来源主要为 Bias 与 Variance,接下来来看偏差来源的推导。算法

咱们知道,一样的算法在不一样的数据集上获得的模型结果极可能不一样,尽管数据集来自于同一个分部。对于观测数据 $X$ 以及待预测的变量 $Y$ ,假设二者服从 $Y = f(X) + \varepsilon$ ,$\varepsilon$ 为噪声,其服从的$N(0,\delta_{\varepsilon }^2)$ ,预测任务中须要获得 $Y$ 值,首先在数据集 $D$ 上经过算法学习一个近似 $f(X)$ 的模型 $\hat{f}(X)$ 来预测获得 $X$ 的输出。给定 $X$ 一个观测值 $x$ ,待预测变量 $y = f(x) +\varepsilon$ 。机器学习

  • 对于样本数量相同的不一样训练集模型 $\hat{f}(x)$ 的指望输出为: $E\hat{f}(x)$
  • 对于样本数量相同的不一样训练集模型产生的方差为:$E[\hat{f}(x) - E\hat{f}(x)]^2$

将模型的偏差分解,采用均方损失,模型 $\hat{f}(X)$ 在点 $x$ 的总体预测偏差为真实值与模型预测值之间的偏差:\[Err(x) = E[(y - \hat{f}(x))^2]\] 这个式子其实等价于:函数

\[Err(x) = [E \hat{f}(x) –f(x)]^2 +E[\hat{f}(x) - E\hat{f}(x)]^2 + \delta_{\varepsilon }^2\]性能

——————————————————————————————————————————————————————————————学习

这里为推倒过程,先回忆几个公式 :$Var[X] = E[X^2]-E^2[X]$ , 且因为函数 $f(X)$ 是肯定的,因此 $E[f(x)] = f(x)$,且有 $\varepsilon \sim N(0,\delta_{\varepsilon }^2)$ ,再结合 $y = f(x)  + \varepsilon$ 能够获得:测试

\[E[y] = E[f(x) + \varepsilon] = E[f(x)]+0 =E[f(x)] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \tag{1} \]spa

\[Var[y] = E[(y-E[y])^2] = E[(f(x) + \varepsilon –f(x))^2] = E[\varepsilon^2] = \delta_{\varepsilon }^2  \tag{2}\]rest

\begin{aligned}
Err(x) &= E[(y - \hat{f}(x))^2] \\
&= E[y^2 - 2y \hat{f}(x) + \hat{f}^2(x)] \\
&= E[y^2] - E[2y \hat{f}(x)] + E[\hat{f}^2(x)] \\
&= E[y^2] \mathbf{- E^2[y] +E^2[y]} - 2E[y]E[\hat{f}(x)] + E[\hat{f}^2(x)] \mathbf{ -E^2[\hat{f}(x)]+ E^2[\hat{f}(x)]} \\
& \ \ \ \ \ \ \mathbf{Combined \ with\ the\ above\ equations \ (1) \ (2).} \\
&= \color{Blue} {E^2[\hat{f}(x)] - 2f(x)E[\hat{f}(x)] +f^2(x)} +\color{Green} {E[\hat{f}^2(x)] -E^2[\hat{f}(x)]} + \color{Red} {E[y^2] - E^2[y]} \\
& \ \ \ \ \ \ \mathbf{The \ last\ two \ terms \ based \ on }: Var[X] = E[X^2] -E^2[X] \\
&= [E[\hat{f}(x)]-f(x)]^2+E[(\hat{f}(x)-E\hat{f}(x))^2]+Var[y] \\
&= E^2[\hat{f}(x)] +Var[\hat{f}(x)] +\delta_{\varepsilon}^2 \\
\end{aligned}
htm

——————————————————————————————————————————————————————————————

$E \hat{f}(x) –f(x)$ 即为 Bias ,$E[\hat{f}(x) - E\hat{f}(x)]^2$ 为 Variance , $\delta_{\varepsilon}^2$  即为模型没法避免的 Noise ,也可称为 Irreducible  Error ,因此如今对于一个预测模型的偏差能够 分为以下几部分:

\[Error = Bias^2 +Variance + Noise \]

对于预测模型问题,若是咱们可以得到全部可能的数据集合,并在这个数据集合上将 Error 最小化,这样学习到的模型就能够称之为“真实模型”,固然,咱们是不管如何都不能得到并训练全部可能的数据的,因此“真实模型”确定存在,但没法得到,咱们的最终目标就是去学习一个模型使其更加接近这个真实模型。为了在有限的训练数据集上达到这个目标,就要使 Error 最小了,Error 分为 Bias 、 Variance 与 Noise :

  • Bias:度量了学习算法的指望输出与真实结果的偏离程度, 刻画了算法的拟合能力,Bias 偏高表示预测函数与真实结果差别很大。
  • Variance:则表明“一样大小的不一样的训练数据集训练出的模型”与“这些模型的指望输出值”之间的差别。训练集变化致使性能变化, Variance 偏高表示模型很不稳定。
  • Noise:刻画了当前任务任何算法所能达到的指望泛化偏差的下界,即刻画了问题自己的难度。

因为 Bias 是没法避免的 因此要获得好的模型,就须要低 Bias 与低 Variance 下图给出一个 Bias 与 Variance 的示意图,明显能够看到低 Bias 与低 Variance 次次会命中靶心,而低 Bias 高 Variance 取均值后才会大多命中靶心,其余状况全打歪了。

bav

低 Bias 与低 Variance 才会获得低 Error,但低 Bias 与低 Variance 每每是不能兼得的。若是要下降模型的 Bias,就必定程度上会提升模型的 Variance,反之亦然。这里以 K-NN 为例,看一些 K-NN 中 Bias 与 Variance 与其参数 K 的关系,在 K-NN 中,偏差形式以下:

\[Err(x)=\underbrace{\left [f(x)-\frac{1}{k}\sum_{i=1}^kf(x_i) \right ]^2}_{\mathbf{Bias^2}} + \underbrace{ \frac{\delta^2}{k} }_{\mathbf{Var}}+ \underbrace{\delta^2}_{\mathbf{Noise}}\]

这里 $x_1,x_2,…x_k$ 是 $x$ 在训练数据集中最近的 $k$ 个邻居 ,当 $K$ 取值很小时,$\frac{1}{k}\sum_{i=1}^kf(x_i)$  与 $f(x)$ 十分接近,因此 Bias 很低,但第二项 Variance 很大,随着 $K$ 的增大,Bias 明显会增大,但 Variance 会减少,这即是 Bias 与 Variance 之间的一个很微妙的关系。 为何这样呢?

由于预测模型试图用有限的训练样本上去获得一个用来预测全数据集的模型,为了下降模型的偏差率,就要尽可能使模型在训练数据集上更加“准确”,这样作每每会增长 Model Complexity ,但却忽略模型在全数据集的泛化能力,模型在训练数据集的Bias 减小了,可是对于训练数据集中没有出现的数据,模型对其预测就会很不稳定,这样就会形成高 Variance ,这也就是常说的 over-fitting ,为了不 over-fitting,就不能彻底依赖于有限的训练数据,这时能够加入一些先验信息,先验信息在模型求解的过程当中会增长一些限制,提升模型的稳定程度,同时减小 Model Complexity,进而能够下降 Variance,可是因为“不信任”训练数据,会使模型的 Bias 增大,或者训练不足时,模型拟合能力不够,训练数据的扰动不足以使模型拟合其真实状况,这时候 Bias 太大,模型对训练数据的预测能力就会降低,这即是 under-fitting 了,因此须要要 Bias 与 Variance 之间 寻找一个 tradeoff。

由于 Noise 是不可避免的,这里忽略 Noise ,根据 Bias 、Variance 与 Model  Complexity 之间的关系,能够获得下图左所示的图形,该图表示在训练数据上几个量之间的关系,为了找到最优的模型,

在训练集中 Bias 降低与 Variance 上升的过程当中来找到所谓的  tradeoff ,这时的 Model Complexity 是适中的,找到了这个 tradeoff ,在全数据集或者预测集上的预测集上的表现以下图右所示,因此 Bias 与 Variance 须要适中,才会获得在训练集与测试集偏差都小的模型。

1

 

最后谈一下 K-fold Cross Validation 与权衡 Bais-Variance 之间的关系。这个理解其实很简单,先看对于数据的划分“405927-20160327163016089-1365724274

每次留出一个 fold 用来作“验证集”来计算偏差,当 K 设置很大时,每一个 fold 都会有不多的数据,小数据集更容易有噪音,因此小的数据集会有大的 Bias ,同时 K 个 fold 表明 K 组数据分别训练一个模型,求平均后 Variance 会很小;相反若是 K 很大,每一个 fold 数据相对来讲仍是不少的,因此 Bias 相对较小,可是因为总模型数较小,因此 Variance 仍是比较大的。

 

参考:

http://scott.fortmann-roe.com/docs/BiasVariance.html#fn:1

http://www.zhihu.com/question/27068705/answer/35151681

https://en.m.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff#K-nearest_neighbors