【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种情况
这是一个相当常见的表,理解记住的方式是:比如True positive, 后面表示模型的预测,前面对这一预测的评价。true positive表示模型预测结果为positive,以肿瘤为例,就是良性肿瘤,true表示这个预测是正确的。同理,true negative指的就是恶心肿瘤的预测是正确的。
P R A F1
为了解决开头提到的问题,引入了这四个评价指标。这些看起来也眼花缭乱,不好记,实际上也简单。
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实际上不好直观理解,而且它其实也没有实际含义,数学上,很多指标都是构造出来的,只需要知道两点。
- 当R或P为0时,F1为0,这也就避免了偏斜数据。
- 想要F1尽可能高,唯一的方法就是使得P,R都尽可能高,当两者都为1时,F1为1。这也就是避免了上述R,P的取舍。
数据与算法
算法趋同
数据量越大越好吗,会有什么影响?算法越高级越好吗?会有什么影响。
AN指出,2001年的一篇论文表明,在多数情况下,这个问题都会是如下结果。
数据量变大时,可能原来的简单算法会比复杂算法表现更好。
数据量变大时,各种算法的效果会趋近相同。
重要的是数据,而不是算法。
但这也不是否定算法,只是说明是数据量很重要。
数据与算法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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,而两者越小越好。于是我们在增加数据的同时,也使模型变得更加复杂。这也就诠释是深度学习的现状。我觉得这很有意思。