Machine learning system design---Error analysis
Error analysis--让我们系统的去判断我们接下来要做什么,而不是随机的,凭直觉地选择一个去做

我们在设计机器学习应用时,刚开始使用简单(简单的features)的算法来很快的完成它,它可能并不完美,不能很好的解决我们的问题。然后在交叉验证集上来检验这个算法。
然后通过画出学习曲线(判断是high bias还是high variance问题)来决定下一步怎么做(是增加更多的数据,还是增加features),这样做可以避免过早优化,因为我们不可能事先知道怎么去优化我们的算法,我们需要证据来显示我们该如何优化,该接下来做什么。
我们也可以通过误差分析来进行,在交叉验证集上检查那些被误分的邮件有没有系统化的规律,从中得出启发,我们应该增加哪些features来提高算法的性能。
例子:

如假设我们有500个examples在交叉验证集里面,算法将100封邮件误分了,我们手动检查这100封邮件,确定这些邮件的类型(卖药的,推销假品,钓鱼邮件或者其它的),通过算出每种类别中不同的邮件数,你会发现算法在区分钓鱼邮件时表现很差,这说明你应该花更多的时间来研究怎么区分这种类型的邮件,然后看是否能构建出更合适的features来区分这种类型的邮件。
同时也看看哪些features可帮助算法更好的分类。假设我们有右边三种方法来帮助我们。然后手动的检查被误分的邮件,看每种方法分别有多少封邮件。误拼写只有5封,说明我们没有必要去花大力气去编写算法来检测这种错误;如果我们发现大量的邮件都有不一般的标点符号规律,这是一个很强的特征,说明你应该花费时间去构造基于标点符号的更复杂的features。
误差分析是一种手动检查的过程,检查算法所犯的错误来帮助你找到更有效的方法去提高算法。因为大多数的机器学习的算法是类似的,先实行一种快速但是不完美的算法,然后通过分析错误来告诉我们应该集中在哪儿来提高算法的性能。
另一个小窍门是保证有一个可以在数值上进行分析(一种用数字说话的方法)的方法来评估我的算法。

如我们要否要将discount/discounts/....这些看作同一个词,在自然语言处理中,这种方法是通过一种叫做“词干提取”的软件来实现的(Porter Stemmer波特词干提取法),这个软件会将discount discounts看做一个单词。但是这种词干提取软件只会检查开头的几个字母,可能会造成一个问题(如universe与university被视为同一个单词)。所以在你决定是否要使用词干提取软件来进行分类时,是很难决定的。
特别的是当我们用Error analysis也很难决定是否要使用词干提取软件时,最好的办法是快速来实现一下词干提取是否有效。
通过交叉验证错误率来评估词干提取是否有用。
是否要区分大小写?-----通过验证,如不区分则错误率为3.2%,然后来决定是否要区分。
在交叉验证集上进行误差分析
总结
- 首先实现一个快速简单不完美的算法
- 通过学习曲线(是bias还是variance),误差分析(应集中在哪一块)来看它犯了些什么错误来决定优化的方式
- 数值分析能通过量化来帮助你快速地发现你尝试的这些想法是否能提高算法的表现
Machine learning system design---Error analysis的更多相关文章
- 斯坦福大学公开课机器学习: machine learning system design | error analysis(误差分析:检验算法是否有高偏差和高方差)
误差分析可以更系统地做出决定.如果你准备研究机器学习的东西或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统.拥有多么复杂的变量,而是构建一个简单的算法.这样你可以很快地实现它.研究机 ...
- 斯坦福大学公开课机器学习:machine learning system design | error metrics for skewed classes(偏斜类问题的定义以及针对偏斜类问题的评估度量值:查准率(precision)和召回率(recall))
上篇文章提到了误差分析以及设定误差度量值的重要性.那就是设定某个实数来评估学习算法并衡量它的表现.有了算法的评估和误差度量值,有一件重要的事情要注意,就是使用一个合适的误差度量值,有时会对学习算法造成 ...
- Stanford机器学习笔记-7. Machine Learning System Design
7 Machine Learning System Design Content 7 Machine Learning System Design 7.1 Prioritizing What to W ...
- 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 ...
- Machine Learning - XI. Machine Learning System Design机器学习系统的设计(Week 6)
http://blog.csdn.net/pipisorry/article/details/44119187 机器学习Machine Learning - Andrew NG courses学习笔记 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 11—Machine Learning System Design 机器学习系统设计
Lecture 11—Machine Learning System Design 11.1 垃圾邮件分类 本章中用一个实际例子: 垃圾邮件Spam的分类 来描述机器学习系统设计方法.首先来看两封邮件 ...
- (原创)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 现在我们已学习了线性回归.逻辑回归.神经网络等机器学习算法,接下来 ...
- Coursera 机器学习 第6章(下) Machine Learning System Design 学习笔记
Machine Learning System Design下面会讨论机器学习系统的设计.分析在设计复杂机器学习系统时将会遇到的主要问题,给出如何巧妙构造一个复杂的机器学习系统的建议.6.4 Buil ...
- 斯坦福第十一课:机器学习系统的设计(Machine Learning System Design)
11.1 首先要做什么 11.2 误差分析 11.3 类偏斜的误差度量 11.4 查全率和查准率之间的权衡 11.5 机器学习的数据 11.1 首先要做什么 在接下来的视频中,我将谈到机器 ...
- Ng第十一课:机器学习系统的设计(Machine Learning System Design)
11.1 首先要做什么 11.2 误差分析 11.3 类偏斜的误差度量 11.4 查全率和查准率之间的权衡 11.5 机器学习的数据 11.1 首先要做什么 在接下来的视频将谈到机器学习系 ...
随机推荐
- Postman 使用方法详细介绍
1,下载安装: https://www.getpostman.com/apps 2,打开Postman,如图所示: 3,创建一个接口项目 4,新增接口文件 5,下面以登录接口login为例,介绍如何做 ...
- PHP 批量删除的实现
布局效果 布局代码 <button type="button" class="btn btn-sm btn-danger btn-erbi-danger" ...
- Java开发笔记(一百零六)Fork+Join框架实现分而治之
前面依次介绍了普通线程池和定时器线程池的用法,这两种线程池有个共同点,就是线程池的内部线程之间并无什么关联,然而某些情况下的各线程间存在着前因后果关系.譬如人口普查工作,大家都知道我国总人口为14亿左 ...
- ListModelSerializer模块
ListModelSerializer模块 一 .自定义反序列化字段 # 一些只参与反序列化的字段,但是不是与数据库关联的 # 在序列化类中规定,并在校验字段时从校验的参数字典中剔除 class Pu ...
- nginx配置比较杂乱的总结
常用变量 demo uri www.example.com/mock/interface?param1=203¶m2=test $args uri中的参数值 ?后面的部分 param1 ...
- NGINX 配置本地HTTPS(双向认证)
一.SSL协议加密方式 SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL首先对对称加密的密钥使用公钥进行非对称加密,链路建立好之后,SSL对传输内容使用对称加密. 1 ...
- vs、eclips、Idea调试技巧
vs F5:进入下一个断点 F10:不进入子函数 F11:进入子函数 Ctrl + M + O: 折叠所有方法 Ctrl + M + M: 折叠或者展开当前方法 Ctrl + M + L: 展开所有方 ...
- SpringBoot +MSSQL
____SpringBoot +MSSQL_______________________________________________________________________________ ...
- SocketException: Write failed (OS Error: Broken pipe, errno = 32
https://github.com/flutter/flutter/issues/16491
- 解决SecureCRT 中文乱码??
在linux服务器上搭建solr,用的是SecureCRT 连接linux服务器,发现不能输入中文,配置文件中的中文也是乱码:先以为是SecureCRT工具编码的问题,把编码改成utf-8之后发现还 ...