理解 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 命令只允许使用提升 ...
随机推荐
- iOS应用间的跳转和传值
在第一个应用程序中info.plist设置 URL Identifier: 该字符串是你自定义的 URL scheme 的名字 注意: URL Schemes 是一个数组,允许应用定义多个 URL s ...
- POJ 2105
#include <iostream> #include <cmath> #include <string> using namespace std; int ma ...
- 请问view controller scene,该如何删除
当要删除默认的view controller scene的时候,选中,按del键 注意点击中间的那个左侧按钮,打开scene列表,再选中scene,按del即可删除
- CentOS 6.5下安装Zabbix 2.2.x
操作系统:CentOS Mini 6.5 yum install httpd.x86_64 httpd-manual.x86_64 php-xml php-mbstring mysql-server ...
- shell脚本替换文件中字符
1.将当前目录下包含jack串的文件中,jack字符串替换为tom sed -i "s/jack/tom/g" `grep "jack" -rl ./` 2.将 ...
- Core Animation2-CABasicAnimation
CABasicAnimation是CAPropertyAnimation的子类,使用它可以实现一些基本的动画效果,它可以让CALayer的某个属性从某个值渐变到另一个值.下面就用CABasicAnim ...
- servlet学习笔记四
Servlet 主要内容: 1)servlet初始化参数与上下文参数 2)过滤器 3)监听器一.servlet初始化参数与上下文参数 1)servlet初始化参数 把某些变量放在web.xml配置,到 ...
- QT中可以用QProgressBar或着QProgressDialog来实现进度条
QProgressBar的使用 首先在designer中拖一个按钮和进度条部件,按下面初始化 //补充:下面两句写在MainWindow的构造函数里进行初始化 ui->progressBar-& ...
- python xml.etree ElementTree解析 编辑 xml
python有很多种xml解析方式,不过感觉etree的ElementTree 用起来最方便. #coding=utf-8 from xml.etree import ElementTree impo ...
- HDU 4643 GSM 算术几何
当火车处在换基站的临界点时,它到某两基站的距离相等.因此换基站的位置一定在某两个基站的中垂线上, 我们预处理出任意两基站之间的中垂线,对于每次询问,求询问线段与所有中垂线的交点. 检验这些交点是否满足 ...