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的更多相关文章

  1. 斯坦福大学公开课机器学习: machine learning system design | prioritizing what to work on : spam classification example(设计复杂机器学习系统的主要问题及构建复杂的机器学习系统的建议)

    当我们在进行机器学习时着重要考虑什么问题.以垃圾邮件分类为例子.假如你想建立一个垃圾邮件分类器,看这些垃圾邮件与非垃圾邮件的例子.左边这封邮件想向你推销东西.注意这封垃圾邮件有意的拼错一些单词,就像M ...

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

  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 机器学习 第6章(下) Machine Learning System Design 学习笔记

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

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

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

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

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

  9. 斯坦福大学公开课机器学习:machine learning system design | data for machine learning(数据量很大时,学习算法表现比较好的原理)

    下图为四种不同算法应用在不同大小数据量时的表现,可以看出,随着数据量的增大,算法的表现趋于接近.即不管多么糟糕的算法,数据量非常大的时候,算法表现也可以很好. 数据量很大时,学习算法表现比较好的原理: ...

  10. 斯坦福大学公开课机器学习:machine learning system design | trading off precision and recall(F score公式的提出:学习算法中如何平衡(取舍)查准率和召回率的数值)

    一般来说,召回率和查准率的关系如下:1.如果需要很高的置信度的话,查准率会很高,相应的召回率很低:2.如果需要避免假阴性的话,召回率会很高,查准率会很低.下图右边显示的是召回率和查准率在一个学习算法中 ...

随机推荐

  1. Linq调试实时输出信息扩展方法(摘抄)

    原文在此 [译]如何在C#中调试LINQ查询 原linq语句: var res = employees .Where(e => e.Gender == "Male") .Ta ...

  2. 05 javascript知识点---BOM和DOM

    1.DOM简单学习(为了满足案例要求) 功能:控制html文档的内容获取页面标签(元素)对象:Element document.getElementById("id值"):通过元素 ...

  3. Spring全家桶注解一览(精选)

    废话 最近想整理一波Spring注解相关的文章,虽然写CURD就只涉及到那些常用的注解.但是笔者我也想去了解一下其他注解,丰富下自己的知识面(提升一下逼格!). 就想在网上搜了半天,好像大家的都差不多 ...

  4. MapReduce Join关联

    Reduce join 原理 Map端的主要工作:为来自不同表(文件)的key/value对打标签以区别不同来源的记录.然后用连接字段作为key,其余部分和新加的标志作为value,最后进行输出. R ...

  5. 对JAVA工程师绝对有用的Java学习资源清单

    学习Java和其他技术的资源其实非常多,但也不是都是好的有用的,我们要取其精华去其糟粕,选择那些最好的,最适合我们的,同时也要由浅入深,先易后难.基于这样的一个标准,我在这里为大家提供一份Java的学 ...

  6. TZOJ5697: 数据结构实验:归并排序

    #include<stdio.h> #include<stdlib.h> void merge(int a[], int start,int mid,int end) { )) ...

  7. java实现rabbitMQ消息收发方式

    定义:消息队列(MQ)是一种应用程序对应用程序的通信方法是AMQP协议. jar包依赖: <!-- 加入mq消息依赖包 -->  <dependency>         &l ...

  8. Geoserver 跨域设置

    1.下载跨域jar包jetty-servlets.jar(下载geoserver使用的对应jetty版本——可以查看<Geoserver>\lib下jetty-servlet.jar的版本 ...

  9. Restful与Spring MVC

    Spring工作流程: 文件上传的处理: 解析参数的过滤器: <filter> <filter-name>MultipartFilter</filter-name> ...

  10. JavaNetty

    Netty的简单使用: import io.netty.bootstrap.Bootstrap; import io.netty.buffer.Unpooled; import io.netty.ch ...