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. Linux系统权限设置 - 运用指南

    下面对linux系统下的有关权限操作命令进行了梳理总结,并配合简单实例进行说明.linux中除了常见的读(r).写(w).执行(x)权限以外,还有其他的一些特殊或隐藏权限,熟练掌握这些权限知识的使用, ...

  2. flask框架(二)——flask4剑客、flask配置文件的4种方式

    之前学习的Django有必备三板斧:render,HttpResponse,redirect,JsonResponse 在flask也有,但是有些不同 一.Flask4剑客 1.直接返回字符串(ret ...

  3. C语言实现简单的计算器(加、减、乘、除)

    利用运算符做为swich  case 语句条件,实现简单程序的编写;并且对输入的运算做判断,除数为零也需做判断; #include<stdio.h> int add(int a, int ...

  4. Logrotate滚动openresty日志

    一.摘要 Linux服务器上我们用Logrotate来分割归档日志文件,结合crond我们可以指定每天在某个时间自动整理日志等文档.本文主要说明了Centos下Logrotate的使用和配置的方法. ...

  5. tkinter学习笔记_05

    10.菜单 menuber import tkinter as tk root = tk.Tk() root.title("xxx") root.geometry('200x100 ...

  6. Python模拟知乎登录

    # -*- coding:utf-8 -*- import urllib import urllib2 import cookielib import time from PIL import Ima ...

  7. Golang --多个变量同时赋值

    编程最简单的算法之一,莫过于变量交换.交换变量的常见算法需要一个中间变量进行变量的临时保存.用传统方法编写变量交换代码如下: var a int = 100 var b int = 200 var t ...

  8. zookeeper集群搭建及ZAB协议

    zookeeper集群搭建非常简单,准备三台安装好zookeeper服务器,在其zoo.cfg配置中分表添加如下配置 initLimit 10 集群中的follower与leader之间完成初始化同步 ...

  9. TFTP(Trivial File Transfer Protocol,简单文件传输协议)

    TFTP(Trivial File Transfer Protocol,简单文件传输协议),是 TCP/IP 协议族中用来在客户机和服务器之间进行简单文件传输的协议,开销很小.这时候有人可能会纳闷,既 ...

  10. lnmp环境快速搭建及原理解析

    刚开始学习php的时候是在wamp环境下开发的,后来才接触到 lnmp 环境当时安装lnmp是按照一大长篇文档一步步的编译安装,当时是真不知道是在做什么啊!脑袋一片空白~~,只知道按照那么长的一篇文档 ...