ML中的方差与偏差

下面这一段节选自知乎用户,具体链接为:https://www.zhihu.com/question/27068705/answer/82132134。

在机器学习过程中,我们用训练数据集去训练(学习)一个model(模型),通常的做法是定义一个Loss function(误差函数),通过将这个Loss(或者叫error)的最小化过程,来提高模型的性能(performance)。然而我们学习一个模型的目的是为了解决实际的问题(或者说是训练数据集这个领域(field)中的一般化问题),单纯地将训练数据集的loss最小化,并不能保证在解决更一般的问题时模型仍然是最优,甚至不能保证模型是可用的。这个训练数据集的loss与一般化的数据集的loss之间的差异就叫做generalization error。而generalization error又可以细分为Bias和Variance两个部分。

Bias是 “用所有可能的训练数据集训练出的所有模型的输出的平均值” 与 “真实模型”的输出值之间的差异;

Variance则是“不同的训练数据集训练出的模型”的输出值之间的差异。

  • 偏差方差分别是用于衡量一个模型泛化误差的两个方面;

    • 模型的偏差,指的是模型预测的期望值真实值之间的差;
    • 模型的方差,指的是模型预测的期望值预测值之间的差平方和;
  • 在监督学习中,模型的泛化误差可分解为偏差、方差与噪声之和。

  • 偏差用于描述模型的拟合能力;
    方差用于描述模型的稳定性。

  •  

准:bias描述的是根据样本拟合出的模型的输出预测结果的期望与样本真实结果的差距,简单讲,就是在样本上拟合的好不好。要想在bias上表现好,low bias,就得复杂化模型,增加模型的参数,但这样容易过拟合(overfitting),过拟合对应上图是high variance,点很分散。low bias对应就是点都打在靶心附近,所以瞄的是准的,但手不一定稳。

确:variance描述的是样本上训练出来的模型在测试集上的表现,要想在variance上表现好,low variance,就要简化模型,减少模型的参数,但这样容易欠拟合(unfitting),欠拟合对应上图是high bias,点偏离中心。low variance对应就是点打的很集中,但不一定是靶心附近,手很稳,但是瞄的不准。

导致偏差和方差的原因

  • 偏差通常是由于我们对学习算法做了错误的假设,或者模型的复杂度不够;

    • 比如真实模型是一个二次函数,而我们假设模型为一次函数,这就会导致偏差的增大(欠拟合);
    • 由偏差引起的误差通常在训练误差上就能体现,或者说训练误差主要是由偏差造成的
  • 方差通常是由于模型的复杂度相对于训练集过高导致的;
    • 比如真实模型是一个简单的二次函数,而我们假设模型是一个高次函数,这就会导致方差的增大(过拟合);
    • 由方差引起的误差通常体现在测试误差相对训练误差的增量上。

简单理解,高偏差可能就是欠拟合了,高方差就是过拟合了。要选择一个适中的情况。

偏差与方差的权衡(过拟合与模型复杂度的权衡)

  • 给定学习任务,

    • 当训练不足时,模型的拟合能力不够(数据的扰动不足以使模型产生显著的变化),此时偏差主导模型的泛化误差;
    • 随着训练的进行,模型的拟合能力增强(模型能够学习数据发生的扰动),此时方差逐渐主导模型的泛化误差;
    • 当训练充足后,模型的拟合能力过强(数据的轻微扰动都会导致模型产生显著的变化),此时即发生过拟合(训练数据自身的、非全局的特征也被模型学习了)
  • 偏差和方差的关系和模型容量(模型复杂度)、欠拟合过拟合的概念紧密相联

    • 当模型的容量增大(x 轴)时, 偏差(用点表示)随之减小,而方差(虚线)随之增大
    • 沿着 x 轴存在最佳容量,小于最佳容量会呈现欠拟合,大于最佳容量会导致过拟合

原文地址:https://www.cnblogs.com/Vancuicide/p/9635382.html

时间: 2024-08-12 16:34:29

ML中的方差与偏差的相关文章

斯坦福大学公开课机器学习: advice for applying machine learning | regularization and bais/variance(机器学习中方差和偏差如何相互影响、以及和算法的正则化之间的相互关系)

算法正则化可以有效地防止过拟合, 但正则化跟算法的偏差和方差又有什么关系呢?下面主要讨论一下方差和偏差两者之间是如何相互影响的.以及和算法的正则化之间的相互关系 假如我们要对高阶的多项式进行拟合,为了防止过拟合现象,我们要使用图下所示的正则化.因此我们试图通过下面的正则化项,来让参数的值尽可能小.正则化项的求和范围,照例取为j等于1到m,而非j等于0到m. 然后我们来分析以下三种情形.第一种情形:正则化参数lambda取一个比较大的值(比如lambda的值取为10000甚至更大).在这种情况下,

ML中Boosting和Bagging的比较

说到ML中Boosting和Bagging,他们属于的是ML中的集成学习,集成学习法(Ensemble Learning) ①  将多个分类方法聚集在一起,以提高分类的准确率. (这些算法可以是不同的算法,也可以是相同的算法.) ②  集成学习法由训练数据构建一组基分类器,然后通过对每个基分类器的预测进行投票来进行分类 ③  严格来说,集成学习并不算是一种分类器,而是一种分类器结合的方法. ④  通常一个集成分类器的分类性能会好于单个分类器 ⑤  如果把单个分类器比作一个决策者的话,集成学习的方

对模型方差和偏差的解释之一:过拟合

原文:http://blog.csdn.net/vivihe0/article/details/33317041 在说到模型过拟合问题的时候,我们经常听说到模型的方差和偏差,本系列就通过多项式拟合为例来说明什么是模型的方差和偏差,进而说明模型复杂度与模型预测效果之间的关系. 我们通过计算机产生样本数据点来进行多项式拟合.为了能在2维平面上方便显示拟合的函数,我们的输入向量和输出向量都是1维的.我们产生数据的函数是: y = sin(2*pi*x) 根据这个函数,我们以(0,0.1,....,0.

对模型方差和偏差的解释之二:泛化误差

原文:http://blog.csdn.net/vivihe0/article/details/33319969 我们说过,如何在实际应用中建模,我们不可能知道产生数据的真实函数是什么,那么如何评价模型的好坏呢?由于我们拟合曲线的目标是对新的x值做出好的预测.为了检验我们建立的模型的好坏,我们需要一个测试集,这个集合与我们训练模型的训练集相互独立.也就是说,测试集中的样本数据必须是在训练模型的时候,模型没有见过的样本数据.已经训练好的模型在遇见新的样本时的表现被称作泛化性能. 现在我们还是利用函

偏差和方差以及偏差方差权衡(Bias Variance Trade off)

当我们在机器学习领域进行模型训练时,出现的误差是如何分类的? 我们首先来看一下,什么叫偏差(Bias),什么叫方差(Variance): 这是一张常见的靶心图 可以看左下角的这一张图,如果我们的目标是打靶子的话,我们所有的点全都完全的偏离了这个中心的位置,那么这种情况就叫做偏差 再看右上角这张图片,我么们的目标是右上角这张图片中心的红色位置,我们射击的点都围绕在这个红色的点的周围,没有大的偏差,但是各个点间过于分散不集中,就是有非常高的方差 我们进行机器学习的过程中,大家可以想象,我们实际要训练

numpy中的方差、协方差、相关系数

一.np.var 数学上学过方差: $$D(X)=\sum_{i\in [0,n)} ({x-\bar{x}})^2 $$ np.var实际上是均方差. 函数原型:numpy.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<class numpy._globals._NoValue>) 计算张量a在axis轴上的方差 a:一个ndarray,不一定是一维 axis:可取值为None,int,int元组.当取值为None时,会把

解决 webx.ml 中The superclass &quot;javax.servlet.http.HttpServlet&quot; was not found on the Java Build Path 问题

在Eclipse 的项目  上,点击鼠标右键 选中 ,并 Finish 即可.

机器学习系列(11)_Python中Gradient Boosting Machine(GBM)调参方法详解

原文地址:Complete Guide to Parameter Tuning in Gradient Boosting (GBM) in Python by Aarshay Jain 原文翻译与校对:@酒酒Angie && 寒小阳([email protected]) 时间:2016年9月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/52663170 声明:版权所有,转载请联系作者并注明出 1.前言 如果一直以来你只把GBM

Python中Gradient Boosting Machine(GBM)调参方法详解

原文地址:Complete Guide to Parameter Tuning in Gradient Boosting (GBM) in Python by Aarshay Jain 原文翻译与校对:@酒酒Angie([email protected]) && 寒小阳([email protected]) 时间:2016年9月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/52663170 1.前言 如果一直以来你只把GBM当