原文: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 (精度和召回率)间权衡google
(五)、机器学习数据选定spa
===============================.net
(一)、决定基本策略
在本章中,咱们用一个实际例子<怎样进行垃圾邮件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工做的方法:
固然,上述策略并不是所有奏效,以下面的练习题所示:
===============================
(二)、Error分析
咱们经常在一个ML算法设计的起步阶段有些困惑,要用怎样的系统?创建怎样的模型,feature怎样提取等……
这里呢,咱们给你们推荐一个方法,用来创建一个ML系统:
仍是用Spam-Classifier举例,咱们看一下进行Error Analysis的步骤:
这里呢,咱们不要感性地去想,而是最好用数字体现效果。好比对于discount/discounts/discounted/discounting是否被视为都含有discount这个feature的问题,咱们不要主观地去想,而是看若是看都含有这个feature,那么结果是有3%的error,若是不都看作有discount这个feature,则有5%的error,因而可知哪一种方法比较好。
PS:介绍一个软件Porter stemmer,能够google到,是将discount/discounts/discounted/discounting视为同类的软件。
对因而否将大小写视做同一个feature是一样的道理。
===============================
(三)、对Skewed Classes创建Error Metrics
有些状况下,Classification-accuracy 和 Classification-error不能描述出整个系统的优劣,好比针对下面的Skewed Classes。
什么是Skewed Classes呢?一个分类问题,若是结果仅有两类y=0和y=1,并且其中一类样本很是多,另外一类很是少,咱们称这种分类问题中的类为Skewed Classes.
好比下面这个问题:
咱们用一个logistic regression做为预测samples是否为cancer患者的模型。该模型在cross-validation set上测试的结果显示,有1%的error,99%的正确诊断率。而事实上呢,只有0.5%的样本为真正的cancer患者。这样一来,咱们创建另外一个算法去predict:
function y=predictCancer(x)
y=0; %即忽略x中feature的影响
return;
好了,这么一来,该算法将全部sample预测为非癌症患者。那么只存在0.5%的偏差,单纯从classification-error来看,比咱们以前作的logistic regression要强,可事实上咱们清楚这种cheat方法只是trick,不能用做实际使用。所以,咱们引入了Error Metrics这个概念。
考虑一个二分问题,即将实例分红正类(positive)或负类(negative)。对一个二分问题来讲,会出现四种状况。若是一个实例是正类而且也被 预测成正类,即为真正类(True positive),若是实例是负类被预测成正类,称之为假正类(False positive)。相应地,若是实例是负类被预测成负类,称之为真负类(True negative),正类被预测成负类则为假负类(false negative)。
这样就能够创建一个Error Metrics(下图左),并定义precision和recall,以下图所示:
也可参考我原来关于ROC曲线的文章。
precision:正确预测正样本/我全部预测为正样本的;
recall:正确预测正样本/真实值为正样本的;
当且仅当Precision和Recall都高的时候咱们能够确信,该predict算法work well !
ok, 咱们再来看看当初将全部sample预测为Non-Cancer的算法,这里,TP=0,FP=0, FN=1, TN=199(假设sample共200个)
因为TP=0, 因此precision=recall=0!证实了该算法的un-avaliable!
因此,不管一个类是不是Skewed Classes,只要知足precision 和 recall都很高才能够保证该算法的实用性。
练习题,作下看:
最后须要提醒你们的是,关于哪边做为true,哪边做为false的问题。对于上面那个问题,咱们给定cancer的为true,实际应用中,咱们应当在binary classification中指定类中sample较少的那一类做为true,另外一类做为false。这一点千万不能搞错!
===============================
(四)、在Precision 和 Recall (精度和召回率)间权衡
上一小节中给出了precision和recall的definition,这一节中,咱们经过画出precision-recall之间的变化关系在二者间进行一个trade-off.
对于一个prediction问题,假设咱们采用以下方法进行预测:
这里存在一个threshold=0.5。
根据
不一样的threshold有以下两类状况:
这里你们若是想不清楚能够把error metrics画出来看一下。
那么咱们能够画出来precision-recall图:
不一样的数据,其曲线形式不一样,但有一条规律是不变的:
thres高对应高precision低recall;
thres低对应低precision高recall;
☆那么在不一样算法或不一样threshold形成的的{precision,recall}间,咱们怎样选择那个算法比较好呢?
加入咱们如今有三个算法(或threshold)的数据:
可见,Algorithm3中,recall=1,即predict全部y=1,这显然违背了咱们的初衷。下面看评判标准。用p表示precision,r表示recall;
若是咱们选取评判标准=(p+r)/2,则algorithm3胜出,显然不合理。这里咱们介绍一个评价标准:F1-Score.
当p=0 或 r=0时,有f=0;
当p=1&&r=1时,有f=1,最大;
一样咱们将f1 score 应用于以上三个算法,可的结果,algorithm1最大,也就是最好;algorithm3最小,也就是最差。所以咱们用F1 score来衡量一个算法的性能,也就是咱们说的precision和recall间的trade-off。
练习,作下吧~(这道略弱):
===============================
(五)、机器学习数据选定
对于机器学习,咱们能够选择不少不一样的algorithems进行prediction,如:
可见,随着training set的上升,accuracy通常会获得提升,但事实上也不全是这样。
好比房价预测,若是我仅仅给你房子的面积,而没有房子在市中心仍是偏远地区?房龄多少?等信息,咱们是没法进行良好预测的。
这里就涉及到如何合理处理训练数据及的问题。
记得上一讲中咱们已经介绍过了bias和variance的定义和区别,这里咱们来看,他们的产生环境:
bias:J(train)大,J(cv)大,J(train)≈J(cv),bias产生于d小,underfit阶段;
variance:J(train)小,J(cv)大,J(train)<<J(cv),variance产生于d大,overfit阶段;
以下图所示:
综上所述,对数据及进行rational分析的结果是两条:
首先,x中有足够多的feature,以获得low bias;
其次,有足够大的training set,以获得low variance;
练习题:
==============================================
本章重要,讲述了机器学习中如何设计机器学习系统,涉及机器学习方法、策略、算法的问题,但愿你们紧紧掌握,以减小没必要要的时间浪费。