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

1、首先要做什么(Prioritizing What to Work On)

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

以一个垃圾邮件分类器算法为例进行讨论。
吴恩达机器学习(九)—— 机器学习系统的设计(Machine Learning System Design)_第1张图片

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

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

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

2、误差分析(Error Analysis)

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

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

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

误差分析:
吴恩达机器学习(九)—— 机器学习系统的设计(Machine Learning System Design)_第2张图片

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

单一数值估计方法:
吴恩达机器学习(九)—— 机器学习系统的设计(Machine Learning System Design)_第3张图片

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

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

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

以癌症分类器为例:
吴恩达机器学习(九)—— 机器学习系统的设计(Machine Learning System Design)_第4张图片

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

假设正在用测试集评估一个分类模型,每个测试集的样本都会等于0或1,学习算法要做的就是做出值的预测,并与实际情况对比。
吴恩达机器学习(九)—— 机器学习系统的设计(Machine Learning System Design)_第5张图片
查准率(Precision)和查全率(Recall)将算法预测的结果分成四种情况:

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

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

4、 查准率和查全率之间的权衡(Trading Off Precision and Recall)吴恩达机器学习(九)—— 机器学习系统的设计(Machine Learning System Design)_第6张图片

  • 假使算法输出的结果在 0-1 之间,先使用阀值 0.5 来预测真和假。
  • 如果只在非常确信的情况下预测为真(恶性),可以用比 0.5 更大的阀值,如 0.7,0.9。这样做减少错误预测病人为恶性肿瘤的情况,同时却会增加未能成功预测肿瘤为恶性的情况(更高的查准率,更低的查全率)。
  • 如果希望尽可能地让所有有可能是恶性肿瘤的病人都得到进一步地检查、诊断,可以使用比 0.5 更小的阀值,如 0.3(更高的查全率,更低的查准率)。
  • 可以将不同阀值情况下,查全率与查准率的关系绘制成图表,曲线的形状根据数据的不同而不同。
    吴恩达机器学习(九)—— 机器学习系统的设计(Machine Learning System Design)_第7张图片
  • 自动选取临界值方法:一种方法是计算 F1 值(F1Score),其计算公式为:在这里插入图片描述
  • 自动选择临界值的较好办法:试一下不同的临界值,在交叉检验集上进行测试,然后选择哪一个临界值能够在交叉检验集上得到最高的F值。

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

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

  • 假设在机器学习问题中,特征值x包含了足够的信息,这些信息可以帮助我们准确地预测y。
    吴恩达机器学习(九)—— 机器学习系统的设计(Machine Learning System Design)_第8张图片
  • 例如:容易混淆词问题,假如能够描述 x 捕捉到需要填写的周围空白的词语,For breakfast Iate ___ eggs.,就有大量信息告诉我们中间需要填的词是two,而不是to或too。算法特征数足够,性能随数据量的增多而提高。
  • 举一个反例:设想房子价格的问题,房子只有大小信息没有其他特征,然而除了房子的大小,还有很多其他因素会影响房子的价格,所以很难预测房子的价格。吴恩达机器学习(九)—— 机器学习系统的设计(Machine Learning System Design)_第9张图片
  • 有足够的特征,可以保证低偏差,足够的数据可以保证低方差。

你可能感兴趣的:(机器学习)