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. python 之网络并发(非阻塞IO模型)

    实现gevent模块 服务端: from socket import * import time s = socket() s.bind(('127.0.0.1',8080)) s.listen(5) ...

  2. Python3定时器任务代码

    使用threading写的一个定时器任务demo: import time import sys import signal import datetime import threading #定时器 ...

  3. Modelsim——工程建立和常用设置

    Modelsim是一款优秀的FPGA仿真软件,这里记录一下Modelsim的基本使用. 一.联合仿真 联合仿真,即Quartus ii自己调用Modelsim,Modelsim自动出现仿真波形. 1. ...

  4. k8s部署traefik

    基础知识 同nginx相比,traefik能够自动感知后端容器变化,从而实现自动服务发现.  traefik部署在k8s上分为daemonset和deployment两种方式各有优缺点: daemon ...

  5. [NOIP2018 PJ T4]对称二叉树

    题目大意:问一棵有根带权二叉树中最大的对称二叉树子树,对称二叉树为需满足将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等. 题解:在对称二叉树中,对于深度相同的两个节点$u,v$ ...

  6. lombok工具插件安装(idea、eclipse)

    https://blog.csdn.net/Y_hahaha/article/details/89186284   缘由,项目在IDEA下@Data.@Builder注解不起作用.发现是lombok这 ...

  7. Oracle scott解锁 以及连接数据库

    最近公司需要使用oracle数据库,本地安装oracle进行测试,需要连接到数据库,但是发现scott账号 is locked; 原因:默认Oracle10g的scott不能登陆. 解决:(1)con ...

  8. ADO.Net和SqlHelper封装

    1.什么是ADO.Net 简单来讲,ADO.NET是用于和数据源打交道的.Net结束,是一组向.NET程序员公开数据访问服务的类   2.ADO.NET的组成部分和对象模型 (1)ADO.NET的两个 ...

  9. Angular2 环境的搭建

    在慕课网上学习angular,自己也动手做一做. 1:Nodejs的安装: https://nodejs.org/en/    下载--安装. (这一步中是将npm也安装了,记住自己选择的目录,我这里 ...

  10. IOS - 总结下swift使用GCD 多线程(二)GCD和DispatchQueue

    1.前言  iOS中处理多核并发的技术有两种分别是:`Grand Central Dispatch`(以下简称`GCD`)和`NSOperationQueue`框架.iOS开发的老司机们在程序开发中处 ...