【machine learning】Week6 机器学习系统设计

机器学习系统设计

模型只是机器学习系统中的一部分, 一个完整的系统,大概还需要,错误分析方法,评价指标,数据和算法的权衡,参数设定等等。学完深度学习再回过头来看机器学习这边的,觉得比较简单,但越往后读,还是觉得接收到很多新的观点,也是挺有用的。

  • 错误分析,方法与意义
  • 指标,P、R、A、F1
  • 数据与算法

本文使用记录式的书写方式,因为实在是没有什么特别体会,强行写也没意思。

学习曲线

这应该是很有用的,等待进一步的学习。课程中给的比较简单,变动某一个超参数,运行模型,记录train error和dev error,画图。

再有就是,高bias和高variance的分析,详见深度学习的course2部分。

错误分析

方法

  • 对判断错误的类别进行分类,统计之后,可以很明确的知道优化的方向。
  • 考虑那些特征的增加修改对上面的问题有益,列出来。

按照AN的经验,即使是很烂的实现这些典型的错误基本是一样的。所以他的建议是,尽快实现原型,分析错误,进行迭代。

notes

这也是为什么要有dev set而不是直接使用test set的原因,你优化的方向针对dev set的分析,对它的拟合越来越好,而如果直接使用目标测试集,那么容易对目标产生过拟合。

单一标准

这也是AN的建议,为了进行快速分析迭代优化,你必须有单一的评价标准,它可以是准确率或者其他。

衡量指标

但是问题在于,准确率不一定总是有用。考虑这样一种场景,判断是肿瘤是否为良性,数据集给出来的是9/1,pos/neg,即九成为良性。

其中有个问题是,即使你模型直接判断所有case都为1,也有90%的准确率,那么看起来所谓的算法毫无意义。这一般称为偏斜数据

4种情况

【machine learning】Week6 机器学习系统设计

这是一个相当常见的表,理解记住的方式是:比如True positive, 后面表示模型的预测,前面对这一预测的评价。true positive表示模型预测结果为positive,以肿瘤为例,就是良性肿瘤,true表示这个预测是正确的。同理,true negative指的就是恶心肿瘤的预测是正确的。

P R A F1

【machine learning】Week6 机器学习系统设计

为了解决开头提到的问题,引入了这四个评价指标。这些看起来也眼花缭乱,不好记,实际上也简单。

A,预测准确率,我预测的正确结果占全部例子的百分比

P,positive的精确率,我预测为pos中,有多少是预测对的

R,pos召回率,我预测的pos占实际pos的百分比

即使如此也还是不太直观就是。建议进行一些思考训练:有时候我们会要求很高的P值,比如在预测肿瘤这件事,对于病人是极大的打击,所以我们力求不要有错误的预测,那么我们可以吧阈值设定为0.9,即只有高于0.9我们才判断其为pos(实际neg才为恶性,这里为了方便说明,假设pos为恶性)。那么这就会出现一个问题,阈值提高,我预测为pos的case,准确率就很大大上升,但是R值却会下降。

于是又出现了新的问题,R和P的权衡。我们说过,单一指标,这个不符合单一指标。于是引入了F1 score,看上面公式。

F1 score实际上不好直观理解,而且它其实也没有实际含义,数学上,很多指标都是构造出来的,只需要知道两点。

  1. 当R或P为0时,F1为0,这也就避免了偏斜数据。
  2. 想要F1尽可能高,唯一的方法就是使得P,R都尽可能高,当两者都为1时,F1为1。这也就是避免了上述R,P的取舍。

数据与算法

算法趋同

数据量越大越好吗,会有什么影响?算法越高级越好吗?会有什么影响。

AN指出,2001年的一篇论文表明,在多数情况下,这个问题都会是如下结果。

【machine learning】Week6 机器学习系统设计

数据量变大时,可能原来的简单算法会比复杂算法表现更好。

数据量变大时,各种算法的效果会趋近相同。

重要的是数据,而不是算法。

但这也不是否定算法,只是说明是数据量很重要。

数据与算法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-16NuMIir-1569919015163)(images/2019-09-14_194816.jpg)]

我们知道,从宏观的角度,越多的参数可以拟合越多的特征。数据量越多,数据特征越多,数据具有越好的完备性。

越多的参数 =》 拟合越多的特征 =》train set error越小 ——我们一般称之为,低bais算法

越大的数据集 =》参数不够拟合 =》对train set和dev set的拟合越接近 =》train set error约等于dev set error

你看,我们最终的目标,是使得train set error约等于dev set error,而两者越小越好。于是我们在增加数据的同时,也使模型变得更加复杂。这也就诠释是深度学习的现状。我觉得这很有意思。

目标,是使得train set error约等于dev set error,而两者越小越好。于是我们在增加数据的同时,也使模型变得更加复杂。这也就诠释是深度学习的现状。我觉得这很有意思。