Stanford机器学习---第七讲. 机器学习系统设计

Posted liugallup

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Stanford机器学习---第七讲. 机器学习系统设计相关的知识,希望对你有一定的参考价值。

本文原始版本见http://blog.csdn.net/abcjennifer/article/details/7834256

本栏目(Machine learning)包括单参数的线性回归、多参数的线性回归、Octave Tutorial、Logistic Regression、Regularization、神经网络、机器学习系统设计、SVM(Support Vector Machines 支持向量机)、聚类、降维、异常检测、大规模机器学习等章节。所有内容均来自Standford公开课machine learning中Andrew老师的讲解。(https://class.coursera.org/ml/class/index


第七讲. 机器学习系统设计——Machine learning System Design

===============================

(一)、决定基本策略

(二)、Error分析

(三)、对Skewed Classes建立Error Metrics

(四)、在Precision 和 Recall (精度和召回率)间权衡

(五)、机器学习数据选定



===============================

(一)、决定基本策略


在本章中,我们用一个实际例子<怎样进行垃圾邮件Spam的分类>来描述机器学习系统设计方法。

首先我们来看两封邮件,左边是一封垃圾邮件Spam,右边是一封非垃圾邮件Non-Spam:


观察其样式可以发现,垃圾邮件有很多features,那么我们想要建立一个Spam分类器,就要进行有监督学习,将Spam的features提取出来,而希望这些features能够很好的区分Spam vs. Non-Spam.

就如下图所示,我们提取出来deal, buy, discount, now等feature,建立起这样的一个feature向量:


这里请大家注意:事实上,对于spam分类器,我们并非人工选择100个看似是spam feature的feature作为特征,而是选取spam中词频最高的100个词取而代之

下面就是本节重点——如何决定基本策略,一些可能有利于classifier工作的方法:

  • 收集大量数据——如“honeypot" project
  • 从Email Route着手建立较为复杂的feature——如发件人为cheapbuying@bug.com
  • 对message正文建立复杂精确的feature库——如是否应把discount和discounts视作同一个词等
  • 建立算法检查拼写错误,作为feature——如"med1cine"

当然,上述策略并非全部奏效,如下面的练习题所示:




===============================

(二)、Error分析

我们常常在一个ML算法设计的起步阶段有些困惑,要用怎样的系统?建立怎样的模型,feature怎样提取等……

这里呢,我们给大家推荐一个方法,用来建立一个ML系统:

  • 用at most 一天,24小时的时间实现一个简单的算法,logistic regression也好,linear regression也好,用simple features而非仔细探究哪个特征更有效。然后呢,在cross-validation数据集上进行测试;
  • 利用画learning curves的方法去探究,数据集更多 或者 加入更多features 是否有利于系统工作;
  • Error Analysis:上面已经在cross-validation数据集上测试了系统性能,现在呢,我们人工去看是哪些数据造成了大error的产生?是否可以通过改变systematic trend减少error?

还是用Spam-Classifier举例,我们看一下进行Error Analysis的步骤:

  • 在建立了simple system 并在CV set上做测试后,我们进行error analysis步骤,将所有spam分为pharma,replica/fake,Steal password 和 其他,这四类。
  • 找到一些可能有助于改善分类效果的features。