Machine_Learning_Yearning-Andrew NG 笔记整理

1.Why machine learning Strategy
2.How to use this book to help your team?
3.Prerequisites and Notation.
4.Scale drives machine learning progress.
前四章大概包含的信息是,首先提出一个例子:建立一个从照片中识别猫的应用(计算机视觉);本书作者结合自己的经验,围绕着这个例子谈如何开发机器学习的应用,如何改进等实用的知识,适合有一定机器学习基础的读者。


下面5-12章都是关于Setting up development and test sets*建立验证集和测试集

5.Your development and test sets
先是介绍几个基本概念

  • training sets:训练集
  • development sets:开发集(也叫validation set:验证集)
  • test sets:测试集

    验证集与测试集的作用就是指导你的机器学习系统产生最重要(最优)的改进。
    建立这个机器学习系统的步骤:
    从网上找图片,分别是有猫的和无猫的图片,拆分数据集,用训练集训练数据,用验证集进行调参,用测试集进行评估模型,将这个模型放到app线上使用时,模型识别效果很差。
    原因:网上图片高像素,清晰,而用手机拍的照片低分辨率,比较模糊。

6.Your dev and test sets should come from the same distribution
假设遇到了这种情况,模型在验证集表现良好但在测试集表现差(即第五章的例子)。
如果验证集和测试集都是来自同一个分布,可以清楚的判断出,模型在验证集上过拟合了,最显然解决的方法就是得到更多的验证集的数据。
但是如果验证集跟测试集来自不同的分布,那么就可能有以下几种情况:
(1)模型在验证集上过拟合;
(2)测试集比验证集复杂;
(3)测试集没有很复杂,但是与验证集差异很大。这种情况,你会花大量无用功在验证集的改进上。
结论:验证集和测试集最好来自同一个分布。

7.How large do the dev/test sets need to be?
验证集的应该足够大以至于能检测出不同算法之间的差异;测试集应该足够大以至于在系统中表现的很好,一般是数据集的30%。

8.Establish a single-number evaluation metric for your team to optimize
这里讲的就是查准率(Precision)和查全率(Recall)
为了更清楚地说明,把模型分类的结果分为以下四种情况:
(1)正确肯定(True Positive,TP):预测为真,实际为真
(2)正确否定(True Negative,TN):预测为假,实际为假
(3)错误肯定(False Positive,FP):预测为真,实际为假
(4)错误否定(False Negative,FN):预测为假,实际为真
则:
查准率P=TP/(TP+FP); 查全率R=TP/(TP+FN)

便于模型的比较,引入一个参数来评价:
F1 SCORE =2PR/(P+R)= 2/(1/P+1/R)

9.Optimizing and satisficing metrics
第一个例子是同时考虑模型的准确性(Accuracy)和运行时间(Running Time),可以用公式去衡量:
Accuracy-0.5*RunningTime

你也可以这样做:首先,定义可接受的运行时间,比如说,在100ms内;然后,在可接受的运行时间优化准确性,选择准确性最大的模型。在这个例子中,运行时间就是”Satisficing metric”即模型需要满足的条件,准确性就是”Optimizing metric”即模型优化的方向;

第二个例子是如果你有N个不同的评估指标,你就可以选择N-1个评估指标作为”Satisficing metric”,剩下那一个指标作为”Optimizing metric”;

第三个例子是假设你在开发一款可以让用户说话唤醒系统的硬件。有两个指标是我们需要留意的,一个是false positive rate-没人说话系统自动唤醒的次数,另一个是false negative rate-有人说话系统不会自动唤醒的次数。这时候就可以让false positive rate设一个阈值,比如说一天不超过一次,作为”Satisficing metric”,而去减少false negative rate,即作为
“Optimizing metric”。
结论:确定一个优化的指标,其余的指标满足阈值即可。

10.Having a dev set and metric speeds up iterations
当开发一个机器学习系统时,有以下三步:
(1)构思出如何开发系统的想法(idea);
(2)将想法用代码实现(code);
(3)做实验评价想法是否可行(足够好)(experiment);
这三步是一个迭代的过程。

11.When to change dev/test sets and metrics
一开始最好是快速建立验证集/测试集和评价指标,然后根据表现再去改进。比如说当你觉得B分类器更好,但是A分类器在验证集和评价指标上表现得更好,那么这时候需要去改进验证集/测试集和评价指标。
通常有以下三种主要的情况导致:
(1)要分类的实际数据的分布跟验证集/测试集不同,比如说上述识别猫的体统中手机拍摄的图片与网上找到的图片清晰度差异很大;
(2)在验证集上过拟合;
(3)评价原则选择不当。

12.Takeaways:Setting up development and test sets
这章就是对建立验证集及测试集的总结,直接翻译如下:

  • 选择与将来要预测的数据分布一致的验证集和测试集。与训练集数据分布不一致是可以的。
  • 验证集和测试集的数据尽量一致。
  • 对单一评价准则进行优化。有多种考虑的话,将它们结合到单一的公式中。
  • 机器学习需要不断迭代优化:尝试很多方法
  • 有验证集/测试集和单一的评价准则会使迭代更快。
  • 要做一个app时,尝试尽快先建立验证集/测试集和评价准则,至少一周之内。如果是做一个成熟的app的话时间可以更久一些。
  • 70%/30%的训练集/测试集拆分可能并不适合数据量大的情况。验证集和测试集的数据可以比30%少。
  • 验证集的数据要足够多,要能捕捉到算法准确度的变化,也不必十分大。测试集的数据要足够大,要能准确估计最后的系统性能。
  • 如果验证集和评价准则不再能正确反映效果的时候,及时改变它们:
    过拟合的话就加大验证集数据。实际数据和验证集/测试集不一致的话,就找新的验证集/测试集。评价准则不能准确反映效果的时候,改评价准则。

Basic Error Analysis 基本误差分析

13.Error analysis:Look at dev set examples to evaluate ideas
先解释误差分析的概念:即分析被错误分类的样本。
这里举了一个例子,假设在判别错误的样本中有5%的是狗,那么改进了分类为狗的错误,模型的准确率就从90%上升到了90.5%;如果在判别错误的样本中有50%的是狗,那么改进了分类为狗的错误,模型的准确率就从90%上升到了95%,即基本误差分析的作用是让我们是否值得去对这个误差进行修正,或者如果很多误差,是否要考虑修正的优先顺序。

14.Evaluating multiple ideas in parallel during error analysis
举了一个例子:比如说有三种可能导致错误分类

  • 把狗识别成猫
  • 把狮子识别成猫
  • 图片像素低,较模糊

对每个样本错误原因进行统计。误差分析是一个迭代的过程,在这错误样本不断增加中,若有新的原因可加入统计,最终看哪方面原因占比最高,优先改进该误差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值