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%,然后来决定是否要区分。

在交叉验证集上进行误差分析

总结

  1. 首先实现一个快速简单不完美的算法
  2. 通过学习曲线(是bias还是variance),误差分析(应集中在哪一块)来看它犯了些什么错误来决定优化的方式
  3. 数值分析能通过量化来帮助你快速地发现你尝试的这些想法是否能提高算法的表现

Machine learning system design---Error analysis的更多相关文章

  1. 斯坦福大学公开课机器学习: machine learning system design | error analysis(误差分析:检验算法是否有高偏差和高方差)

    误差分析可以更系统地做出决定.如果你准备研究机器学习的东西或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统.拥有多么复杂的变量,而是构建一个简单的算法.这样你可以很快地实现它.研究机 ...

  2. 斯坦福大学公开课机器学习:machine learning system design | error metrics for skewed classes(偏斜类问题的定义以及针对偏斜类问题的评估度量值:查准率(precision)和召回率(recall))

    上篇文章提到了误差分析以及设定误差度量值的重要性.那就是设定某个实数来评估学习算法并衡量它的表现.有了算法的评估和误差度量值,有一件重要的事情要注意,就是使用一个合适的误差度量值,有时会对学习算法造成 ...

  3. Stanford机器学习笔记-7. Machine Learning System Design

    7 Machine Learning System Design Content 7 Machine Learning System Design 7.1 Prioritizing What to W ...

  4. 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 ...

  5. Machine Learning - XI. Machine Learning System Design机器学习系统的设计(Week 6)

    http://blog.csdn.net/pipisorry/article/details/44119187 机器学习Machine Learning - Andrew NG courses学习笔记 ...

  6. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 11—Machine Learning System Design 机器学习系统设计

    Lecture 11—Machine Learning System Design 11.1 垃圾邮件分类 本章中用一个实际例子: 垃圾邮件Spam的分类 来描述机器学习系统设计方法.首先来看两封邮件 ...

  7. (原创)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 现在我们已学习了线性回归.逻辑回归.神经网络等机器学习算法,接下来 ...

  8. Coursera 机器学习 第6章(下) Machine Learning System Design 学习笔记

    Machine Learning System Design下面会讨论机器学习系统的设计.分析在设计复杂机器学习系统时将会遇到的主要问题,给出如何巧妙构造一个复杂的机器学习系统的建议.6.4 Buil ...

  9. 斯坦福第十一课:机器学习系统的设计(Machine Learning System Design)

    11.1  首先要做什么 11.2  误差分析 11.3  类偏斜的误差度量 11.4  查全率和查准率之间的权衡 11.5  机器学习的数据 11.1  首先要做什么 在接下来的视频中,我将谈到机器 ...

  10. Ng第十一课:机器学习系统的设计(Machine Learning System Design)

    11.1  首先要做什么 11.2  误差分析 11.3  类偏斜的误差度量 11.4  查全率和查准率之间的权衡 11.5  机器学习的数据 11.1  首先要做什么 在接下来的视频将谈到机器学习系 ...

随机推荐

  1. 【Linux】Linux下进程间的通信方式

    本文内容: 1.进程通信的目的 2.介绍Linux下进程间的4种通信方式:管道,消息队列,共享内存,信号量 ps:套接字也可以用于进程间的通信,不过是不同物理机器上的进程通信,本章讨论是是同一台物理机 ...

  2. ERP解析外围系统json数据格式

    外围系统调用ERP的WebService接口,将数据以json格式传到ERP,ERP解析json 1.创建java source jsp,提供java方法解析json数据 create or repl ...

  3. win10无法安装软件解决

    https://www.windowscentral.com/how-fix-network-resource-unavailable-install-error-windows-10

  4. 【C++札记】const关键字

    C++中const关键字无处不在,我这里做下汇总,作为工具文章方便翻阅. 一:修饰数据成员 修饰的成员一单定义初始化后不能再进行修改,如: const int a = 10; a =20; //重新赋 ...

  5. python基础 — Selenium 详细介绍

    一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 selenium 是一个 web 的自动化测试工具,不少学习功能自动化的同学开始首选 selenium ,因为它相比 ...

  6. Eclipse访问外部网站(比如:CSDN首页)

    其实这个感觉没什么用,毕竟我们都有浏览器,而且浏览器界面还比较宽,方便.只是好奇.所以记录一下.效果如下: 有两种方法,方法一是永久的,方法二是一次性的. 方法一(永久): 1.在工具栏找" ...

  7. VC6.0- C语言-winsocket-警告warning C4761

    错误介绍 操作系统:windows10 IDE:VC6.0 语言:C语言 项目内容简介:编写一个双人网络海战棋对战游戏 警告类型:警告warning C4761 integral size misma ...

  8. 【IDEA使用技巧】(3) —— IntelliJ IDEA Maven配置

    1.IntelliJ IDEA Maven配置 1.1. Maven介绍与下载 Maven是一个项目管理工具,使用它能对Java项目中的jar包进行管理与项目构建,很好地解决了传统项目使用导包的方式管 ...

  9. array_merge_recursive 的使用

    作用:递归合并数组 场景:在平时开发中,我们可能遇到获取的数据是多个维度的数据,而我们只需要其中的一个. 代码如下: $project_id = 'project_id'; $arr1 = [ 'pr ...

  10. PHP敏感信息脱敏函数

    测试 $name = '王刚'; $mobile = '13817558198'; $name = desensitize($name,1,1); $mobile = desensitize($mob ...