Coursera 机器学习 第6章(上) Advice for Applying Machine Learning 学习笔记
这章的内容对于设计分析假设性能有很大的帮助,如果运用的好,将会节省实验者大量时间。
Machine Learning System Design
6.1 Evaluating a Learning Algorithm
6.1.1 Deciding What to Try Next
机器学习诊断法:一种测试法,通过执行这种测试,能够深入了解某种算法是否有用。诊断法也会告诉你,要想改进一种算法的效果需要什么样的尝试。能够判断一种学习算法能不能work,并且改善该算法性能的一个测试。
诊断法的执行和实现是需要时间的,有时候需要大量的时间,但这样做可以更有效地利用时间。

下面的内容将会讨论如何评价学习算法,再介绍一些诊断法,从而选择更有意义的方法实现达到改进机器学习系统性能的目的。
6.1.2 Evaluating a Hypothesis
怎样用学过的算法来评估假设函数,并以此来讨论如何避免过拟合和欠拟合问题。
如何判断一个假设函数是过拟合的。下面给出了评估假设函数的标准方法。
将数据分为2部分:训练集和测试集。一种典型的分法是7:3。如果数据有某种规律或者顺序的话,最好随机抽取70%作为训练集,剩下的30%作为测试集。

按照以下步骤训练和测试学习方法。分别以线性回归和逻辑回归为例。
线性回归:
1.由训练集得到Θ,前提是最小会训练误差J(Θ)。
2.利用测试集计算测试误差。
逻辑回归:
1.由训练集得到Θ,前提是最小会训练误差J(Θ)。
2.利用测试集计算测试误差。
这里“利用测试集计算测试误差”有2种方法(计算公式见图):
1)直接由公式计算Jtest(Θ)。
2)先计算单个测试示例的误分类率(0/1错分率),用误分类率来定义测试误差。

6.1.3 Model Selection and Train/Validation/Test Sets
讨论模型选择问题以及如何将数据分为3组:训练集、验证集和测试集。
训练集误差是不能正确预测出假设是否能很好地拟合新样本。
一般的模型选择问题步骤:
1.对所有模型分别求训练误差的最小值,从而得到多个对应不同模型的参数向量Θ。
2.针对每个模型分别求测试误差的最小值Jtest(Θ),确定多项式次数d。
3.选择测试误差最小的模型作为最后的模型。

但是,如果将上述得到的模型再作用于训练集上,是不能预测出这个假设推广到新样本上的效果。因为这些参数能够很好地拟合训练集,但对于其他新样本而言就不一定那么好。因此,用测试集来拟合参数不能公平地预测出假设函数在遇到新样本时的表现。
通常将数据集分为3个部分:训练集、交叉验证集(验证集、CV)和测试集。

训练误差、交叉验证误差、测试误差。

下面用训练误差、交叉验证误差、测试误差来求出适合的模型。
1.对所有模型分别求训练误差的最小值,从而得到多个对应不同模型的参数向量Θ。
2.针对每个模型分别求交叉验证误差的最小值Jcv(Θ),确定多项式次数d。
3.选择交叉验证误差Jcv(Θ)最小的模型作为最后的模型。
4.利用测试集评价模型的表现。
一句话,训练集求出特定的模型参数、交叉验证集求出最优的模型、测试误差衡量模型的泛化效果。

6.2 Bias vs. Variance
6.2.1 Diagnosing Bias vs. Variance
讨论有关偏差(欠拟合)和方差(过拟合)的问题,并弄清楚怎样评价一个学习算法,弄清一个问题是和偏差有关还是和方差有关,从而改进学习算法的效果。
对于一个具体的问题,对于这个问题,假设是整式多项式。下图画着训练误差和交叉验证误差大小随假设的次数变化的规律:
训练误差随着拟合公式的次数的增大不断增大而减小。交叉验证误差随着拟合公式的次数的增大先减小后增大,中间有个极值。
偏差对应图中最左侧,训练误差(Jtrain(Θ))将会较大,交叉验证误差(Jcv(Θ))≈Jtrain(Θ)。
方差对应图中最右侧,训练误差(Jtrain(Θ))将会较小,交叉验证误差(Jcv(Θ))»Jtrain(Θ)。

做道题:

6.2.2 Regularization and Bias/Variance
深入探讨偏差和方差问题,探讨正则化如何影响偏差和方差。
如何选择合适的λ。
先看对J(Θ)、Jtrain(Θ)、Jcv(Θ)和Jtest(Θ)的定义:

对于特定J(Θ)(除了λ,其他都不变),选择合适的λ:
1.设置λ为一系列值(可以以等步长增加),比如0、0.01、0.02...10.24。
2.对于每个特定的λ,利用训练集分别计算minΘ(i)J(Θ(i))对应的Θ(i)值。
3.利用交叉测试集计算不同λ下推出的Θ对应的Jcv(Θ),挑选最小的Jcv(Θ)对应的Θ和λ。图中是Jcv(Θ(5))。
4.利用测试集对挑选出的Θ的性能进行评估。

做道题:

答案:D
偏差与方差和λ的关系(训练误差Jtrain(Θ)和交叉验证误差Jcv(Θ)随λ变化情况):
λ由小到大变化,Jtrain(Θ)不断增大(开始是十分拟合训练集,慢慢变得不太拟合,最后完全走样)。Jcv(Θ)先减小后增大(开始不太拟合验证集,正则化合适的时候,泛化能力变强,开始拟合验证集,但随着λ增大,又开始走样)。其实,图中坐标系右边对应的是偏差情况,左边对应的是方差情况,中间有个合适值,这个合适的λ就是所求。这里的图像是理想化的,实际会有一些噪音的存在。

6.2.3 Learning Curves
可以绘制学习曲线来检查学习算法,从而改进算法的表现或效果。
样本数量少,训练误差小,但交叉误差大。样本越多,适应新数据的能力越强(泛化能力增强),但训练样本越难完美拟合。总体来说,交叉验证误差和训练误差随训练集m的变化情况如图所示:

下面来看一下当算法处于高偏差或者高方差的时候,学习曲线的样子。
处于高偏差,训练误差随着训练样本的增加而增大,后期平缓;交叉验证误差会减小,经过一个值后开始平缓,但还是较大。训练误差和交叉验证误差最终会较大,并且相互接近。增大训练样本数量对改变高偏差没有作用。

处于高方差,训练误差随着样本的增加而增大,但总体还是很小;交叉验证误差会减小。前期,交叉验证误差和训练误差之间的差距(gap)较大,但随着训练样本的明显增多,训练误差和交叉验证误差还是会相互靠近,之间的差距不断减小。增加样本数量对改变高方差有明显作用。

做道题:

答案:处于高方差的情况。

6.2.4 Deciding What to Do Next Revisited
前面已经学习了如何评价一个算法,模型选择问题,偏差和方差的问题。讨论这些诊断法是如何帮助判断哪些方法可能有助于改进学习算法的效果。
回到前面的问题,用线性回归模型分析房价。

1.适合于处于高方差的情况。交叉验证误差应该比训练误差大得多。
2.适合于处于高方差的情况。
3.适合于处于高偏差的情况。
4.类似于增加特征,适合于处于高偏差的情况。
5.适合于处于高偏差的情况。
6.适合于处于高方差的情况。
下面总结前面的内容,并看看它们与神经网络的联系。介绍一些为神经网络选择结构或者连接形式的技巧和经验。
小的神经网络隐藏层数量较少或者隐藏单元数量较少,缺点是容易欠拟合,优点是计算量较少。
大的神经网络隐藏层数量较多,隐藏单元较多,缺点是容易过拟合,计算量较大,但性能要好。使用一个经过正则化的大型神经网络的效果要比一个小的神经网络更加好。可以使用正则化手段来解决过拟合。关于隐藏层数量的选择和隐藏单元的选择,可以用同一交叉验证集进行验证,选择误差最小的情况。

以上学习了偏差、方差以及学习曲线为代表的诊断法如何帮助高效地使用学习算法。
做道题:

答案:增加隐藏层或者隐藏单位类似于增加假设的参数Θ次数。具体参考"7.2.1 Diagnosing Bias vs. Variance"的内容。
习题:

high bias

CD

BD

CD

BCD
Coursera 机器学习 第6章(上) Advice for Applying Machine Learning 学习笔记的更多相关文章
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 10—Advice for applying machine learning 机器学习应用建议
Lecture 10—Advice for applying machine learning 10.1 如何调试一个机器学习算法? 有多种方案: 1.获得更多训练数据:2.尝试更少特征:3.尝试更多 ...
- 斯坦福大学公开课机器学习:advice for applying machine learning | diagnosing bias vs. variance(机器学习:诊断偏差和方差问题)
当我们运行一个学习算法时,如果这个算法的表现不理想,那么有两种原因导致:要么偏差比较大.要么方差比较大.换句话说,要么是欠拟合.要么是过拟合.那么这两种情况,哪个和偏差有关.哪个和方差有关,或者是不是 ...
- 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 ...
- [Python & Machine Learning] 学习笔记之scikit-learn机器学习库
1. scikit-learn介绍 scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上.值得一提的是,scikit-learn最 ...
- 【原】Coursera—Andrew Ng机器学习—Week 6 习题—Advice for applying machine learning
[1] 诊断的作用 [2]过拟合 [3] [4] 高偏差bias,欠拟合underfitting 高方差variance,过拟合overfitting [5]参数λ Answer: λ太大,则参数都 ...
- 斯坦福第十课:应用机器学习的建议(Advice for Applying Machine Learning)
10.1 决定下一步做什么 10.2 评估一个假设 10.3 模型选择和交叉验证集 10.4 诊断偏差和方差 10.5 归一化和偏差/方差 10.6 学习曲线 10.7 决定下一步做什么 ...
- 斯坦福大学公开课机器学习:advice for applying machine learning | model selection and training/validation/test sets(模型选择以及训练集、交叉验证集和测试集的概念)
怎样选用正确的特征构造学习算法或者如何选择学习算法中的正则化参数lambda?这些问题我们称之为模型选择问题. 在对于这一问题的讨论中,我们不仅将数据分为:训练集和测试集,而是将数据分为三个数据组:也 ...
随机推荐
- 基于任务的异步编程模式(TAP)的错误处理
在前面讲到了<基于任务的异步编程模式(TAP)>,但是如果调用异步方法,没有等待,那么调用异步方法的线程中使用传统的try/catch块是不能捕获到异步方法中的异常.因为在异步方法执行出现 ...
- 洛谷P4014 分配问题(费用流)
传送门 可以把原图看做一个二分图,人在左边,任务在右边,求一个带权的最大和最小完美匹配 然而我并不会二分图做法,所以只好直接用费用流套进去,求一个最小费用最大流和最大费用最大流即可 //minamot ...
- JS内置对象的原型不能重定义?只能动态添加属性或方法?
昨天马上就快下班了,坐在我对面的同事突然问我一个问题,我说“爱过”,哈哈,开个玩笑.情况是这样的,他发现JS的内置对象的原型好像不能通过字面量对象的形式进行覆盖, 只能动态的为内置对象的原型添加属性或 ...
- SQL语句优化 -- 以Mysql为例
本文参考下面的文章: 1: [真·干货]MySQL 索引及优化实战 2: Mysql语句的执行过程 3: sql优化的几种方法 我将 sql语句优化分为三个方面,(此处不包括 业务逻辑的 ...
- 【智能算法】迭代局部搜索(Iterated Local Search, ILS)详解
迭代局部搜索(Iterated Local Search, ILS) 源代码下载请关注微信公众号[程序猿声],在后台回复:[ILS],不包括[]即可下载. 00 目录 局部搜索算法 简单局部搜索 迭代 ...
- SDUT OJ 数据结构实验之链表一:顺序建立链表
数据结构实验之链表一:顺序建立链表 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- HTTP原理 请求方法
HTTP的工作过程 一次HTTP操作称为一个事务,其工作过程分为四步: 1.客户机与服务器建立连接:客户单击某个超级链接,HTTP的工作开始,接下来进行TCP连接的三次握手过程. 2.建立连接后,客户 ...
- Android与MVC设计模式
写在前面,之前做过一段时间移动开发,后来因为工作原因搁浅了,最新重新拿起Android权威编程指南学习,顺道做个学习笔记. 首先呢,我想说无论是计算机科班出身还是培训班出身,都听说过高内聚低耦合以及M ...
- Asp.Net 远程连接Oracle数据库
Asp.Net 远程连接Oracle数据库 首先从微软停止.Net FrameWork支持Oracle数据库的研发,转为第三方提供说起,微软是很有实力的公司,他在桌面领域令其他对手望其项背,产品战线也 ...
- 119th LeetCode Weekly Contest Largest Perimeter Triangle
Given an array A of positive lengths, return the largest perimeter of a triangle with non-zero area, ...