吴恩达机器学习(九)—— 机器学习系统的设计(Machine Learning System Design)

一、首先要作什么(Prioritizing What to Work On)

本节节首先介绍在实际工做过程当中,应该先处理哪些事情。web

以一个垃圾邮件分类器算法为例进行讨论。
在这里插入图片描述算法

  • 首先要作的决定是如何选择并表达特征向量?。能够选择一个由 100 个最常出如今垃圾邮件中的词所构成的列表,根据这些词是否有在邮件中出现,来得到特征向量(出现为 1,不出现为 0),尺寸为 100×1。
  • 事实上,会经过大量垃圾邮件统计高频单词,每一个单词出如今10,000到50,000之间,将它们做为特征向量,而不是手动选择。

如何在有限的时间下让垃圾邮件分类器具备高精准度和低错误率?机器学习

  1. 收集更多的数据(honeypot项目)
  2. 基于邮件的路由信息开发一系列复杂的特征 (邮件头部)
  3. 基于邮件的正文信息开发一系列复杂的特征,包括考虑截词的处理 (discount 和discounts是否被对待一致,首字母大小写,关于标点符号的特征)
  4. 开发复杂的算法来检测出单词中故意出现的拼写错误(把 watch 写成 w4tch,能够逃避检查)

二、偏差分析(Error Analysis)

本节主要介绍偏差分析的概念,能帮助在众多方法中做出选择。svg

构建一个学习算法的推荐方法为:性能

  1. 从一个简单的能快速实现的算法开始,快速实现该算法,并用交叉验证集数据测试这个算法
  2. 绘制学习曲线,决定是增长更多数据,或者添加更多特征,仍是其余选择
  3. 进行偏差分析:人工检查交叉验证集中算法产生预测偏差的实例,看看这些实例是否有某种系统化的趋势

偏差分析:
在这里插入图片描述学习

  • 假设正在作一个垃圾邮件分类器,偏差分析在交叉验证集中有500个样本,算法对其中的100个进行了错误分类,如今要作的是手动检查100个错误。
  • 而后将它们分类,而后看分类器对哪一组邮件的预测偏差最大,并着手优化。
  • 尝试想出新的线索和特征改进分类器,好比是否缺乏某些特征,记下这些特征出现的次数。例如记录下错误拼写出现了多少次,异常的邮件路由状况出现了多少次等等,而后从出现次数最多的状况开始着手优化。

单一数值估计方法:
在这里插入图片描述测试

  • 在改进算法时,一个技巧是保证本身对学习算法有一种数值估计方法。
  • 将偏差转变为一个单一的数值很是重要,不然很难判断设计的学习算法的表现。
  • 一般在交叉验证集上分析,根据数值对比的结果决定是否要保留新特性。
  • 例如词干分析,判断(discount/discounts/discounted/discounting)是否应做为相同的单词,一般偏差分析不会起做用。只能用数值分析判断,若做为一个单词,获得3%的错误率,低于5%,能够肯定使用词干提取是一个不错的方法,应该将它添加到模型中。
  • 若是区分单词首字母大小写(Mom/mom)是否具备一样的特征,最终获得的错误率为3.2%而不是3%,这样作比以前的错误率更高,不该该添加到模型。

三、 不对称分类的错误评估(Error Metrics for Skewed Classes)

上一节提到了偏差分析和设定偏差度量值的重要性,即设定某个实数来评估学习算法、衡量它的表现。要注意的是,使用一个合适的偏差度量值会对学习算法形成很是微妙的影响,即偏斜类问题(skewed classes)。偏斜类状况表现为训练集中同一种类的实例很是多,其余类的实例不多或没有。优化

以癌症分类器为例:
在这里插入图片描述设计

  • 假设算法在测试集上只有1%的错误,可实际上,测试集中只有0.5%的病人患有癌症,此时1%的错误率就再也不显得很好了,能够经过一个非机器学习算法,只预测y老是等于0,忽略x,这样只有0.5%的错误率。这种状况发生在正例和负例的比率很是接近于一个极端状况,叫作偏斜类。
  • 一般用y = 1表示数据不多的类别。
  • 这时正确率不足以反应一个算法的优劣,如下引入一种新的评估度量值查准率和召回率。

假设正在用测试集评估一个分类模型,每一个测试集的样本都会等于0或1,学习算法要作的就是作出值的预测,并与实际状况对比。
在这里插入图片描述
查准率(Precision)和查全率(Recall)将算法预测的结果分红四种状况:3d

  1. 真阳性(True Positive,TP):预测为真,实际为真
  2. 真阴性(True Negative,TN):预测为假,实际为假
  3. 假阳性(False Positive,FP):预测为真,实际为假
  4. 假阴性(False Negative,FN):预测为假,实际为真

查准率=TP/(TP+FP)。例,在全部预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。
在这里插入图片描述
召回率=TP/(TP+FN)。例,在全部实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。
在这里插入图片描述
上文老是预测病人肿瘤为良性的算法,其查全率是 0。

四、 查准率和查全率之间的权衡(Trading Off Precision and Recall)在这里插入图片描述

  • 假使算法输出的结果在 0-1 之间,先使用阀值 0.5 来预测真和假。
  • 若是只在很是确信的状况下预测为真(恶性),能够用比 0.5 更大的阀值,如 0.7,0.9。这样作减小错误预测病人为恶性肿瘤的状况,同时却会增长未能成功预测肿瘤为恶性的状况(更高的查准率,更低的查全率)。
  • 若是但愿尽量地让全部有多是恶性肿瘤的病人都获得进一步地检查、诊断,可使用比 0.5 更小的阀值,如 0.3(更高的查全率,更低的查准率)。
  • 能够将不一样阀值状况下,查全率与查准率的关系绘制成图表,曲线的形状根据数据的不一样而不一样。
    在这里插入图片描述
  • 自动选取临界值方法:一种方法是计算 F1 值(F1Score),其计算公式为:在这里插入图片描述
  • 自动选择临界值的较好办法:试一下不一样的临界值,在交叉检验集上进行测试,而后选择哪个临界值可以在交叉检验集上获得最高的F值。

五、 机器学习的数据(Data For Machine Learning)

本节讨论机器学习系统设计的另外一个重要的方面:数据。

  • 假设在机器学习问题中,特征值x包含了足够的信息,这些信息能够帮助咱们准确地预测y。
    在这里插入图片描述
  • 例如:容易混淆词问题,假如可以描述 x 捕捉到须要填写的周围空白的词语,For breakfast Iate ___ eggs.,就有大量信息告诉咱们中间须要填的词是two,而不是to或too。算法特征数足够,性能随数据量的增多而提升。
  • 举一个反例:设想房子价格的问题,房子只有大小信息没有其余特征,然而除了房子的大小,还有不少其余因素会影响房子的价格,因此很难预测房子的价格。在这里插入图片描述
  • 有足够的特征,能够保证低误差,足够的数据能够保证低方差。