理解 Bias 与 Variance 之间的权衡
有监督学习中,预测误差的来源主要有两部分,分别为 bias 与 variance,模型的性能取决于 bias 与 variance 的 tradeoff ,理解 bias 与 variance 有助于我们诊断模型的错误,避免 over-fitting 或者 under-fitting.
在统计与机器学习领域权衡 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} \]
\[Var[y] = E[(y-E[y])^2] = E[(f(x) + \varepsilon –f(x))^2] = E[\varepsilon^2] = \delta_{\varepsilon }^2 \tag{2}\]
\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}
——————————————————————————————————————————————————————————————
$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 取均值后才会大多命中靶心,其他情况全打歪了。

低 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 需要适中,才会得到在训练集与测试集误差都小的模型。

最后谈一下 K-fold Cross Validation 与权衡 Bais-Variance 之间的关系。这个理解其实很简单,先看对于数据的划分“
每次留出一个 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
理解 Bias 与 Variance 之间的权衡的更多相关文章
- [转]理解 Bias 与 Variance 之间的权衡----------bias variance tradeoff
有监督学习中,预测误差的来源主要有两部分,分别为 bias 与 variance,模型的性能取决于 bias 与 variance 的 tradeoff ,理解 bias 与 variance 有助于 ...
- bias、variance与拟合之间的关系
Error = Bias^2 + Variance+Noise 误差的原因: 1.Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,即算法本身的拟合能力. 2.Variance ...
- week6:Diagnosing Bias vs. Variance难点记录
1.Bias vs. Variance是什么概念? 图形上的理解:https://www.zhihu.com/question/27068705 http://blog.csdn.n ...
- 算法岗面试题:模型的bias和variance是什么?用随机森林举例
校招在即,准备准备一些面试可能会用到的东西吧.希望这次面试不会被挂. 基本概念 说到机器学习模型的误差,主要就是bias和variance. Bias:如果一个模型的训练错误大,然后验证错误和训练错误 ...
- Bias and Variance 偏置和方差
偏置和方差 参考资料:http://scott.fortmann-roe.com/docs/BiasVariance.html http://www.cnblogs.com/kemaswill/ Bi ...
- 机器学习中学习曲线的 bias vs variance 以及 数据量m
关于偏差.方差以及学习曲线为代表的诊断法: 在评估假设函数时,我们习惯将整个样本按照6:2:2的比例分割:60%训练集training set.20%交叉验证集cross validation set ...
- Bias and Variance
以下内容参考 cousera 吴恩达 机器学习课程 1. Bias 和 Variance 的定义 Bias and Variance 对于改进算法具有很大的帮助作用,在bias和Variance的指引 ...
- 机器学习模型 bias 和 variance 的直观判断
假设我们已经训练得到 一个模型,那么我们怎么直观判断这个 模型的 bias 和 variance? 直观方法: 如果模型的 训练错误 比较大,并且 验证错误 和 训练错误 差不多一样,都比较大,我们就 ...
- 深入理解 sudo 与 su 之间的区别【转】
深入理解 sudo 与 su 之间的区别 两个命令的最大区别是: sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码.另外一个区别是其默认行为.sudo 命令只允许使用提升 ...
随机推荐
- LoaderManager使用详解(四)---实例:AppListLoader
实例:AppListLoader 这篇文章将是我的第四篇,也就是最后一篇该系列的文章.请在评论里面告诉我他们是否有用.前面几篇文章的链接如下: 一:Loaders之前世界 二:了解Loader ...
- Codeforces Round #335 (Div. 2) D. Lazy Student 贪心
D. Lazy Student Student Vladislav came to his programming exam completely unprepared as usual. He ...
- iframe父子兄弟之间调用传值(contentWindow && parent)
iframe的调用包括以下几个方面:(调用包含html dom,js全局变量,js方法) 主页面调用iframe: iframe页面调用主页面: 主页面的包含的iframe之间相互调用: 主要知识点 ...
- js小技巧(二)
//移动的图层,拖动 1.<span style='position:absolute;width:200;height:200;background:red' onmousedown=Mous ...
- lintcode :单词搜索
题目 单词搜索 给出一个二维的字母板和一个单词,寻找字母板网格中是否存在这个单词. 单词可以由按顺序的相邻单元的字母组成,其中相邻单元指的是水平或者垂直方向相邻.每个单元中的字母最多只能使用一次. 样 ...
- 让浏览器屏蔽js
有时候为了测试js是否做到了渐进增强,需要屏蔽下js 做法: Internet选项>>安全>>自定义级别 禁用java小程序脚本和活动脚本 有的浏览器调试器直接就有这个功能
- Recover Binary Search Tree-恢复二叉查找树
题目描述: 由于某种原因一个二叉排序树的两个节点的元素被交换,在不改变树的结构的情况下恢复这颗二叉排序树 题目来源: http://oj.leetcode.com/problems/recover-b ...
- USACO Section 4.2: The Perfect Stall
这题关键就在将题转换成最大流模板题.首先有一个原始点,N个cow个点, M个barn点和一个终点,原始点到cow点和barn点到终点的流都为1,而cow对应的barn就是cow点到对应barn点的流, ...
- A - 畅通工程
A - 畅通工程 Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- AbsListView.OnScrollListener 使用注意事项
这个类没什么特别的,但是使用的时候我确出错了 abstract void onScroll(AbsListView view, int firstVisibleItem, int visibleIte ...