Review

首先我们知道在不同的function set上error不同,也就是在不同的model上error是不同的,这个原因显而易见;在同一个function set里不同的function对data产生的error也是不同的,因为同一个model但参数不同导致model有细微的差异,所以error自然也不相同。

那我们知道当model越复杂,error不一定是会越小的。当model过于复杂会导致overfitting,这个时候error在training data上error会很小,但在testing data上error反而会变大。

这张图中横轴x是model的最高次,纵轴y是testing data上的error。可以看到在x = 3处,error达到图中的最小值,在x = 5处反而error会非常大。

?But where does the error come from

Estimator

假设,我们根据training data训练出来了一个模型f∗f^*f∗,真实的model其实是f^\hat ff^​,f∗f^*f∗则是f^\hat ff^​的估计值,f^\hat ff^​与f∗f^*f∗之间必定存在误差。

从这个图中可以看出f^\hat ff^​是靶心点,f∗f^*f∗是右上角蓝色的点。两个点之间的距离就是两个model之间的误差。而这个误差是由Bias和Variance共同决定的。

下图中,蓝点表示f∗f^*f∗,靶心红点表示f^\hat ff^​。

f∗f^*f∗的平均值fˉ\bar ffˉ​,就是那个蓝点,蓝点到靶中心的距离就是bias,小蓝点是每次实验得到的估计值,小蓝点越分散Variance越小,越集中越大。

Bias V.S. Variance

现在知道了error是由bias和varience共同决定的,但是二者应该影响不同的方面来产生error。

当underfitting的时候bias较大,当overfitting的时候Variance较大,两者相互制衡共同影响error。

What to do with large bias?

当model没有拟合training data,就会产生underfitting的现象,这个时候bias可能会过大。
当model完全拟合trianing data,但是在testing data上error较大,就会产生overfitting 的现象,这个时候很可能是因为Varience过大了。
当bias过大,或者低拟合时,你应该为你的model增加feature,或者重新选择一个更加复杂的function set。用线性模型来解释,也许应该用更高次的模型来拟合,或者增加x的纬度。

上图中用了一条一次曲线来拟合图上的点,而此时在training data上的拟合效果并不好,此时很有可能是underfitting,因此bias对error的影响更大。此时考虑换一个更加复杂的函数来拟合training data。

使用一个二次式去拟合显然bias有所下降了。

又换了一个三次式拟合后bias更低了。

当换用一个5次式作为model时,training data上的error已经很小了,但此时在testing data上的error大大增加。如下图是在testing data上的情况。

此时model转为overfitting,variance对error的影响更大。

What to do with large variance?

当模型过拟合,variance对error的影响占主导地位。很容易理解为什么过拟合后model在testing data上的error变大,因为在training data上,划一条线穿过所有的点,此时在training data上完全拟合,而这样一条线是不可能完全拟合于testing data的,除非training data中的数据涵盖了全部的数据点,这显然时不可能的。
当model的variance过大时,你需要更多的data,去用于拟合function set,从而更好的排除一些不相关的model。

当data数由10变为100的时候,从图中可以明显看到减少了非常多的function。
第二种方法是正则化,正则化可以使function变得更加平滑等作用,具体作用和方法会在后面的博客中提到。基本形式就是在function后面加上一个惩罚项,像是“配重”一样,让function更加平均。这种方法虽然可以减小variance,但是由于是对model进行了改变,所以势必对bias也会产生一定影响。

但是如何知道model分别在training data与testing data上的error呢?

testing data在训练模型的时候应该时不知道的,仅仅能通过training data来对模型进行训练。因此testing data是不能出现在training data里面的。我们将training data划分出一部分作为validation data,来模拟model在testing data上的情况。
但是这样的做法会产生比较大的误差,很可能training data是全部数据集中的很小一部分,而validation set又是training data上很小一部分,这样的测试结果太具有偶然性了。

N-fold Cross Validation

因此引出n次交叉验证,这个方法的做法是将training set 分为n份,每次取其中一份作为validation set剩下n−1n-1n−1份作为training set,得出一个error,这样的操作重复n次,将得到error进行平均,作为这个模型的error。

Where does the error come from?----Bias and Variance相关推荐

  1. 李宏毅深度学习——第一天(Bias and Variance)

    无偏性:总希望在多次试验中所得到的估计量的平均值与参数的真实值相吻合   error来自于bias和variance 简单的model(var小 bias大),包含的范围比较小,不容易包含target ...

  2. 一文读懂 Bias(偏差)、Error(误差)、Variance(方差)

    一文读懂 Bias(偏差).Error(误差).Variance(方差) 偏差 偏差度量了学习算法的期望预期与真实结果的偏离程度 ,即刻画了学习算法本身的拟合能力.偏差太高,就会出现欠拟合,即与真实结 ...

  3. 机器学习中的Bias、Variance

    机器学习中的误差Error可以理解为偏差和方差的和. Error(误差) = Bias(偏差) + Variance(方差) Bias 偏差指的是样本输出与真实值之间的差距,即模型本身的拟合程度. 代 ...

  4. 台大李宏毅Machine Learning 2017Fall学习笔记 (3)Bias and Variance (v2)

    台大李宏毅Machine Learning 2017Fall学习笔记 (3)Bias and Variance (v2) 这节课主要讲解了训练模型的误差来源及相应的解决方案. 模型的误差主要来源于数据 ...

  5. Advice for applying machine learning - Diagnosing bias vs. variance

    摘要: 本文是吴恩达 (Andrew Ng)老师<机器学习>课程,第十一章<应用机器学习的建议>中第86课时<诊断偏差与方差>的视频原文字幕.为本人在视频学习过程中 ...

  6. week6:Diagnosing Bias vs. Variance难点记录

    1.Bias vs. Variance是什么概念? 图形上的理解:https://www.zhihu.com/question/27068705          http://blog.csdn.n ...

  7. 机器学习中的Bias和Variance是指什么

    首先明确一点,Bias和Variance是针对Generalization(一般化,泛化)来说的. 在机器学习中,我们用训练数据集去训练(学习)一个model(模型),通常的做法是定义一个Loss f ...

  8. 机器学习(十五) - Bias vs. Variance

    Diagnosing Bias vs. Variance 讲完模型选择,我们接下来讲讲如何去诊断我们算法出现的问题到底是一个high bias(underfitting)的问题还是一个high var ...

  9. bias and variance在机器学习中的应用

    首先我们通过三种途径来认识bias and variance ,三种途径是:直观上的.图形上的.数学定义上的. 直观上的定义: Error due to Bias:真实值与预测值之间的差异. Erro ...

  10. 【图解例说机器学习】模型选择:偏差与方差 (Bias vs. Variance)

    目录 一个例子:多项式回归中的阶数选择 防止过拟合 增加训练数据 正则化 偏差与方差 理论推导 偏差与方差的折中关系 附录 机器学习的过程大致分为三步:1)模型假设,比如我们假设模型是线性回归,还是多 ...

最新文章

  1. JavaScript——ES6新特性
  2. springmvc和mybatis面试题
  3. jmap java opts_jmap --查看JVM内存使用详情
  4. GraphQL入门2
  5. 图表可视化seaborn风格和调色盘
  6. php导入sql文件到数据库中,PHP执行SQL文件并将SQL文件导入到数据库
  7. c++ java string_C++中string类型的内部结构是什么?
  8. nyoj 309 bobsledding 即河南省第四届大学生程序设计大赛第七题
  9. hdu 1864 01背包
  10. oracle 表复制 long,关于oracle的数据库的数据Long和Number的转化字段
  11. spring boot 创建第一个
  12. Java JSON解析教程
  13. Java List retainAll踩坑记录
  14. CFA2019notes的PDF版本,热乎乎的百度网盘分享
  15. CodeSmith注册错误的解决方法
  16. 树莓派系统最小img镜像的制作-备份与还原
  17. 修改计算机用户名bat,修改计算机名.bat
  18. 燃料电池多点恒功率工作Cruise仿真模型
  19. Surround360 README文档——中文翻译
  20. 118 Servlet_1 _Tomcat服务器

热门文章

  1. MySQL grant、revoke 用户权限注意事项
  2. 给你的站点添加 DNS CAA 保护
  3. 浅谈HTML5之一:语法的改变
  4. Yosemite上手动增加基于POP3协议的QQ邮箱账记
  5. java.lang.NoClassDefFoundError: org/junit/runner/manipulation/Filter
  6. Linux 2.6内核Makefile浅析
  7. 线段树——I hate it
  8. 转:计算机核心刊物(非SCI,EI)投稿指南
  9. 排序算法--冒泡排序
  10. java流意外结束_java – POI – null之后的文件意外结束