理解 Bias 与 Variance 之间的权衡

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

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

   我们知道,同样的算法在不同的数据集上得到的模型结果很可能不同,尽管数据集来自于同一个分部。对于观测数据 X 以及待预测的变量 Y ,假设两者服从 Y=f(X)+ϵ , ϵ 为噪声,其服从的 N(0,δ2ϵ) ,预测任务中需要得到 YY值,首先在数据集 D 上通过算法学习一个近似 f(X) 的模型 f^(X) 来预测得到X 的输出。给定 X 一个观测值 x ,待预测变量 y=f(x)+ϵ
    对于样本数量相同的不同训练集模型 f^(x) 的期望输出为: Ef^(x)
    对于样本数量相同的不同训练集模型产生的方差为: E[f^(x)Ef^(x)]2
将模型的误差分解,采用均方损失,模型 f^(X) 在点 x的整体预测误差为真实值与模型预测值之间的误差:
       Err(x)=E[(yf^(x))2]
这个式子其实等价于:
       Err(x)=[Ef^(x)f(x)]2+E[f^(x)Ef^(x)]2+δ2ϵ
理解 Bias 与 Variance 之间的权衡_第1张图片
Ef^(x)f(x) 即为 Bias , E[f^(x)Ef^(x)]2 为 Variance , δ2ϵ 即为模型无法避免的 Noise ,也可称为 Irreducible Error ,所以现在对于一个预测模型的误差可以 分为如下几部分:
       Error=Bias2+Variance+Noise
   对于预测模型问题,如果我们能够获得所有可能的数据集合,并在这个数据集合上将 Error 最小化,这样学习到的模型就可以称之为“真实模型”,当然,我们是无论如何都不能获得并训练所有可能的数据的,所以“真实模型”肯定存在,但无法获得,我们的最终目标就是去学习一个模型使其更加接近这个真实模型。为了在有限的训练数据集上达到这个目标,就要使 Error 最小了,Error 分为 Bias 、 Variance 与 Noise :
     Bias:度量了学习算法的期望输出与真实结果的偏离程度, 刻画了算法的拟合能力,Bias 偏高表示预测函数与真实结果差异很大。
     Variance:则代表“同样大小的不同的训练数据集训练出的模型”与“这些模型的期望输出值”之间的差异。训练集变化导致性能变化, Variance 偏高表示模型很不稳定。
     Noise:刻画了当前任务任何算法所能达到的期望泛化误差的下界,即刻画了问题本身的难度。
   由于 Bias 是无法避免的 所以要得到好的模型,就需要低 Bias 与低 Variance 下图给出一个 Bias 与 Variance 的示意图,明显可以看到低 Bias 与低 Variance 次次会命中靶心,而低 Bias 高 Variance 取均值后才会大多命中靶心,其他情况全打歪了。
            理解 Bias 与 Variance 之间的权衡_第2张图片
   Bias 与低 Variance 才会得到低 Error,但低 Bias 与低 Variance 往往是不能兼得的。如果要降低模型的 Bias,就一定程度上会提高模型的 Variance,反之亦然。这里以 K-NN 为例,看一些 K-NN 中 Bias 与 Variance 与其参数 K 的关系,在 K-NN 中,误差形式如下:
          理解 Bias 与 Variance 之间的权衡_第3张图片
   这里 x1,x2,xk 是 xx 在训练数据集中最近的 k 个邻居 ,当 K 取值很小时, 1kki=1f(xi) 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 需要适中,才会得到在训练集与测试集误差都小的模型。
理解 Bias 与 Variance 之间的权衡_第4张图片
   最后谈一下 K-fold Cross Validation 与权衡 Bais-Variance 之间的关系。这个理解其实很简单,先看对于数据的划分
理解 Bias 与 Variance 之间的权衡_第5张图片
   每次留出一个 fold 用来做“验证集”来计算误差,当 K 设置很大时,每个 fold 都会有很少的数据,小数据集更容易有噪音,所以小的数据集会有大的 Bias ,同时 K 个 fold 代表 K 组数据分别训练一个模型,求平均后 Variance 会很小;相反如果 K 很大,每个 fold 数据相对来说还是很多的,所以 Bias 相对较小,但是由于总模型数较小,所以 Variance 还是比较大的。

转载自:https://www.cnblogs.com/ooon/p/5711516.html

对机器学习中的bias和variance感兴趣的还可以参考:
1.https://www.zhihu.com/question/27068705/answer/35151681
2.http://scott.fortmann-roe.com/docs/BiasVariance.html

你可能感兴趣的:(机器学习)