斯坦福大学公开课机器学习:advice for applying machine learning | diagnosing bias vs. variance(机器学习:诊断偏差和方差问题)
当我们运行一个学习算法时,如果这个算法的表现不理想,那么有两种原因导致:要么偏差比较大、要么方差比较大。换句话说,要么是欠拟合、要么是过拟合。那么这两种情况,哪个和偏差有关、哪个和方差有关,或者是不是和两个都有关,搞清楚这点很重要。能判断出现的情况是这两种中的哪一种,是一个很有效的指示器,指引着可以改进算法的最有效的方法和途径。
下面深入地探讨一下有关偏差和方差的问题,并且能弄清楚怎样评价一个学习算法、能够判断一个算法是偏差还是方差有问题。因为这个问题对于弄清如何改进学习算法的效果非常重要。
如下图,用两个很简单的假设来拟合数据,比如说用一条直线,那么不足以拟合这组数据(欠拟合,左图),而如果你用两个很复杂的假设来拟合时,那么对训练集来说则会拟合得很好,但又过于完美(过拟合,右图)。而像这样的中等复杂度的假设(中间的图),比如某种二次多项式的假设,次数既不高也不低,这种假设对数据拟合得刚刚好。此时对应的的泛化误差,也是三种情况中最小的。
前面已经掌握了训练集、验证集和测试集的概念(斯坦福大学公开课机器学习:advice for applying machine learning | model selection and training/validation/test sets(模型选择以及训练集、交叉验证集和测试集的概念)),接下来就能更好地理解偏差和方差的问题。具体来说沿用之前所使用的训练集误差和验证集、误差的定义,也就是平方误差。即对训练集数据进行预测,或对验证集数据进行预测,所产生的平均平方误差。下面我们来画出如下这个示意图,横坐标上表示的是多项式的次数(中间图),因此横坐标越往右的位置,表示多项式的次数越大。那么我们来画这幅图对应的情况,d可能等于1的情况,是用很简单的函数来进行拟合。而在右边的这个图中,水平横坐标表示有更多更大的d值.表示更高次数的多项式。因此这些位置对应着使用更复杂的函数,来拟合训练集时所需要的d值。先画训练集误差,随着我们增大多项式的次数,我们将对训练集拟合得越来越好。所以如果d等于1时,对应着一个比较大的训练误差。而如果我们的多项式次数很高时,我们的训练误差就会很小,甚至可能等于0,因为可能非常拟合训练集。所以,当我们增大多项式次数时,不难发现训练误差明显下降(紫红色曲线)。这里写上J下标3来表示训练集误差。接下来再看交叉验证误差,如果我们观察测试集误差的话,我们会得到一个和交叉验证误差非常接近的结果。所以,我们知道如果d等于1的话,意味着用一个很简单的函数来拟合数据。也就是说,我们会得到一个较大的交叉验证误差(红色曲线标注1)。而如果我们用一个中等大小的多项式次数来拟合时,在前一张幻灯片中我们用的d等于2,那么我们会得到一个更小的交叉验证误差。因为我们找了一个能够更好拟合数据的次数。同样地,反过来,如果次数d太大,比如说d的值取为4,那么我们又过拟合了,我们又会得到一个较大的交叉验证误差。因此,如果你平稳地过渡这几个点,你可以绘制出一条平滑的曲线,就像这样,我用Jcv(θ)来表示(红色曲线)。同样地,如果你画出Jtest(θ),你也将得到一条类似的曲线,这样一幅图也同时能帮助我们更好地理解偏差和方差的概念。
具体来说,假设我们得出了一个学习算法,但这个算法并没有表现地如预期那么好。即交叉验证误差或者测试集误差都很大。那么我们应该如何判断此时的学习算法是高偏差的问题还是高方差的问题呢?交叉验证误差比较大的情况,对应着曲线中的左右两端(下图Jcv(θ)对应的曲线)。左端对应的就是高偏差的问题,也就是我们使用了一个过于小的多项式次数,比如d等于1。但实际上我们需要一个较高的多项式次数来拟合数据。相反地,右端对应的是高方差问题。也就是说,多项式次数d对于我们的数据来讲太大了。具体地说,第一、高偏差的情况,对应欠拟合的情况:交叉验证误差和训练误差都会很大。因此,如果你的算法有偏差问题的话,那么训练集误差将会比较大。同时你可能会发现交叉验证集误差也很大。两个误差可能很接近,或者可能验证误差稍大一点,所以如果你看到这样的组合情况,那就表示你的算法正处于高偏差的问题。第二、如果算法处于高方差的问题,那么Jtrain(训练误差)会很小。也就意味着,训练集数据拟合得非常好。而交叉验证集误差或者说交叉验证集对应的代价函数的值,将会远远大于训练集误差(双大于符号是一个数学符号,表示远远大于,用两个大于符号表示)。因此如果存在这种组合的情况,预示着学习算法可能正处于高方差和过拟合的情况。同时,区分这两种不同情形的关键依据是,如果算法处于高偏差的情况,那么你的训练集误差会很大。因为你的假设不能很好地拟合训练集数据。而当你处于高方差的问题时,你的训练误差通常都会很小,并且远远小于交叉验证误差。
斯坦福大学公开课机器学习:advice for applying machine learning | diagnosing bias vs. variance(机器学习:诊断偏差和方差问题)的更多相关文章
- 斯坦福大学公开课机器学习: advice for applying machine learning | regularization and bais/variance(机器学习中方差和偏差如何相互影响、以及和算法的正则化之间的相互关系)
算法正则化可以有效地防止过拟合, 但正则化跟算法的偏差和方差又有什么关系呢?下面主要讨论一下方差和偏差两者之间是如何相互影响的.以及和算法的正则化之间的相互关系 假如我们要对高阶的多项式进行拟合,为了 ...
- 第19月第8天 斯坦福大学公开课机器学习 (吴恩达 Andrew Ng)
1.斯坦福大学公开课机器学习 (吴恩达 Andrew Ng) http://open.163.com/special/opencourse/machinelearning.html 笔记 http:/ ...
- 斯坦福大学公开课:iOS 7应用开发 笔记
2015-07-06 第一讲 课务.iOS概述 -------------------------------------------------- 开始学习斯坦福大学公开课:iOS 7应用开发留 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 10—Advice for applying machine learning 机器学习应用建议
Lecture 10—Advice for applying machine learning 10.1 如何调试一个机器学习算法? 有多种方案: 1.获得更多训练数据:2.尝试更少特征:3.尝试更多 ...
- Coursera 机器学习 第6章(上) Advice for Applying Machine Learning 学习笔记
这章的内容对于设计分析假设性能有很大的帮助,如果运用的好,将会节省实验者大量时间. Machine Learning System Design6.1 Evaluating a Learning Al ...
- Machine Learning - 第6周(Advice for Applying Machine Learning、Machine Learning System Design)
In Week 6, you will be learning about systematically improving your learning algorithm. The videos f ...
- (原创)Stanford Machine Learning (by Andrew NG) --- (week 6) Advice for Applying Machine Learning & Machine Learning System Design
(1) Advice for applying machine learning Deciding what to try next 现在我们已学习了线性回归.逻辑回归.神经网络等机器学习算法,接下来 ...
- Advice for applying Machine Learning
https://jmetzen.github.io/2015-01-29/ml_advice.html Advice for applying Machine Learning This post i ...
- 斯坦福第十课:应用机器学习的建议(Advice for Applying Machine Learning)
10.1 决定下一步做什么 10.2 评估一个假设 10.3 模型选择和交叉验证集 10.4 诊断偏差和方差 10.5 归一化和偏差/方差 10.6 学习曲线 10.7 决定下一步做什么 ...
随机推荐
- netstat -na 查看有大量TIME_WAIT解决办法(修改内核参数)
# netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c 16 CLOSING 130 ESTABLISHED 298 FIN_WA ...
- macOS & USB stick
macOS & USB stick why macOS can only read USB stick, can not write files to USB stick macos 无法写文 ...
- LR 场景选项配置--笔记
1 tools-options --设置关系到loadgenerator行为应用于一个场景中的所有的load generator 这些设置用于未来所有运行的场景并且通常只需要设置一次 2 expert ...
- 数据库语法group by
因为在做pgsql和mysql数据库时group by 有报错,但是在以前做mysql5.6的时候没有问题,虽然知道时违反了sql的语法问题,但是没有搞清楚什么原因,也找了不少资料,查找原因,在盆友的 ...
- 【Python练习题】程序3
3.题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?x+100 = n*nx+100+168 = m * m 所以(m+n)*(m-n) =168 #题 ...
- Windows Server 2012 IIS 8 - 安装SSL证书
从证书邮件里或者用户中心复制对应的SSL证书文件代码 把代码粘贴到TXT文本文件里面 然后另存为cer或是crt文件,注意编码为ANSI 中级证书和交叉证书也是按以上方法保存为crt或cer文件即可 ...
- hibernate主配置文件中指定session与当前线程绑定
配置一条属性 <property name="hibernate.current_session_context_class">thread</property& ...
- codeforces525B
Pasha and String CodeForces - 525B Pasha got a very beautiful string s for his birthday, the string ...
- Codeforces Round #454 Div. 1
B:考虑2*m怎么构造.因为要求相邻的数不能再相邻,容易想到黑白染色之类的东西,考虑染个色然后大概把黑点扔一边白点扔一边.显然m<=3时无解.对m>4,m为偶数时,如1 2 3 4 5 6 ...
- P1427 小鱼念数字
P1427 题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了) ...