Machine learning system design---prioritizing what to work on
prioritizing what to work on
设计一个机器学习算法时,我们应该先做什么?以垃圾邮件识别的例子为例:

垃圾邮件发送者可能会故意将一些字符写错,如上图中的Medicine用1来代替i,M0rgages中o用0来代替。
我们有一些标识为Spam的邮件,有一些标识为non-spam的邮件,这些邮件做为trainning data用监督学习来设计分类算法

挑选100个词做为是否是垃圾邮件的词,然后将这100个词按照字母顺序来进行排序,如果邮件中出现了这个词,那么相应的分量为1,如果邮件中没有出现的话,则为0;
实际上,我们并不是手动来挑选这100个词的,而是通过查找整个训练集来挑出最常见的n个词(一般为10000-50000)

如果你要build a spam classifier,一个你需要面对的问题是:怎样合理利用你的时间来建立一个高识别率的,低错误的识别系统。
首先我们自然会想到收集更多的数据,more data,算法可能会更好。-----在垃圾邮件识别领域,有一些projects称为Honey Pot projects(一些假的邮件地址,然后让这些假的邮件地址到spammer那儿去,用来收集成千上万的垃圾邮件),这样我们就得到了很多trainning data来训练我们的算法。
但是之前我们也看到了,获得更多的训练数据也是有用,在某些情况下也没有用。这时我们也有其它的方法来提高算法的性能。-----创建更加复杂的特征值
基于邮件路由信息(来自于邮件头部)来创建更复杂的特征值: 当spammer发送邮件时,它们通常会将垃圾邮件的来源进行模糊化,或者使用假的email headers,或者通过一些非常不常见的设施、通过不常见的路由来发送垃圾邮件。这些信息将会在email headers里面有所反映。所以如果我们查看email headers的话,试图去建立更复杂的features去捕获这种类型的邮件路由信息去识别某封邮件是否是垃圾邮件。
基于邮件内容来创建更复杂的特征值:如discount和discounts应该当成一样的吗?或者将标点符号包括进去,如可能垃圾邮件会使用很多感叹号等等。spammer经常将一些词故意误拼,这时我们需要更复杂的算法来识别这些误拼的单词(如med1cine,w4tches等等)。
总结:
通常我们会将我们接下来要做些什么像上图那样列举下来,可是我们很难说哪种方法更有用,所以我们不要固定在哪种做法上.通常我们会随机选择一个方法来实行,但是这种方法因为是随机选择的,所以可能对于我们算法的提高没有帮助,接下来将介绍通过一种方法来选择哪种方法对我们性能的提高有帮助。
Machine learning system design---prioritizing what to work on的更多相关文章
- 斯坦福大学公开课机器学习: machine learning system design | prioritizing what to work on : spam classification example(设计复杂机器学习系统的主要问题及构建复杂的机器学习系统的建议)
当我们在进行机器学习时着重要考虑什么问题.以垃圾邮件分类为例子.假如你想建立一个垃圾邮件分类器,看这些垃圾邮件与非垃圾邮件的例子.左边这封邮件想向你推销东西.注意这封垃圾邮件有意的拼错一些单词,就像M ...
- (原创)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 现在我们已学习了线性回归.逻辑回归.神经网络等机器学习算法,接下来 ...
- 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 机器学习 第6章(下) Machine Learning System Design 学习笔记
Machine Learning System Design下面会讨论机器学习系统的设计.分析在设计复杂机器学习系统时将会遇到的主要问题,给出如何巧妙构造一个复杂的机器学习系统的建议.6.4 Buil ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 11—Machine Learning System Design 机器学习系统设计
Lecture 11—Machine Learning System Design 11.1 垃圾邮件分类 本章中用一个实际例子: 垃圾邮件Spam的分类 来描述机器学习系统设计方法.首先来看两封邮件 ...
- 斯坦福第十一课:机器学习系统的设计(Machine Learning System Design)
11.1 首先要做什么 11.2 误差分析 11.3 类偏斜的误差度量 11.4 查全率和查准率之间的权衡 11.5 机器学习的数据 11.1 首先要做什么 在接下来的视频中,我将谈到机器 ...
- 斯坦福大学公开课机器学习:machine learning system design | data for machine learning(数据量很大时,学习算法表现比较好的原理)
下图为四种不同算法应用在不同大小数据量时的表现,可以看出,随着数据量的增大,算法的表现趋于接近.即不管多么糟糕的算法,数据量非常大的时候,算法表现也可以很好. 数据量很大时,学习算法表现比较好的原理: ...
- 斯坦福大学公开课机器学习:machine learning system design | trading off precision and recall(F score公式的提出:学习算法中如何平衡(取舍)查准率和召回率的数值)
一般来说,召回率和查准率的关系如下:1.如果需要很高的置信度的话,查准率会很高,相应的召回率很低:2.如果需要避免假阴性的话,召回率会很高,查准率会很低.下图右边显示的是召回率和查准率在一个学习算法中 ...
随机推荐
- Java反射桥接方法解析
在阅读mybaits源码的反射模块时,看到了如下的一段代码: /** * 添加 Method 数组到 uniqueMethods * @param uniqueMethods * @param met ...
- SpringAOP异常:org.springframework.aop.aspectj.AspectJExpressionPointcut cannot be cast to com.....
Exception in thread "main" java.lang.ClassCastException: org.springframework.aop.aspectj.A ...
- 解决SQL server 18740、18456登录失败问题
第一步:使用window管理员用户登录SQL server 第二步:如下图步骤(开始配置sa默认用户) 第三步:选择角色类型 第四步:选择和配置用户映射的数据库 第五步:授予允许连接,并开启登录权限 ...
- Logrotate滚动openresty日志
一.摘要 Linux服务器上我们用Logrotate来分割归档日志文件,结合crond我们可以指定每天在某个时间自动整理日志等文档.本文主要说明了Centos下Logrotate的使用和配置的方法. ...
- [LOJ#3120][Luogu5401][CTS2019]珍珠(容斥+生成函数)
https://www.luogu.org/blog/user50971/solution-p5401 #include<cstdio> #include<algorithm> ...
- .NET子页Main页面实例(UI页面)
<%@ Page Language="C#" MasterPageFile="~/MasterPageDefault.master" AutoEve ...
- .NET Core 中三种模式依赖注入的生命周期。
注入模式 同一个请求作用域 不同的请求作用域 AddSingleton 同一个实例 同一个实例 AddScoped 同一个实例 新实例 AddTransient 新实例 新实例
- git便携版 添加git-bash到右键菜单
注册表路径 HKEY_CLASSES_ROOT\Directory\Background\shell 新建项取名open in git 默认设置为右键显示的名称 Git Bash Here 新建字符串 ...
- python-django中的APPEND_SLASH实现
关于django中的APPEND_SLASH APPEND_SLASH 它是啥? 看变量名大概能知道做什么,就是添加斜线,用路由系统那里. 路由文件,只写了路由关系代码 ...... urlpatte ...
- PHP敏感信息脱敏函数
测试 $name = '王刚'; $mobile = '13817558198'; $name = desensitize($name,1,1); $mobile = desensitize($mob ...