本周视频讲解了在机器学习实践中会用到的一些基本的策略,整理了个人比较重要的一些内容。
正交化
正交化是一种系统设计属性,是指确保修改算法的指令或者组件时,不会产生或传播副作用到系统的其他组件中。正交系统模块间互相依赖较小,可以相互独立地进行算法验证,能够有效减少开发和测试时间。
当设计一个监督学习系统时,需要做到下面的4个假设并且是相互正交的:
- 模型在训练集上表现良好
- 模型在验证集上表现良好
- 模型在测试集上表现良好
- 模型在实际应用中表现良好
当发现训练集上表现不够好时,可以采用更大的神经网络或者换一种更好的优化算法;当在验证集上表现不够好时,可以进行正则化处理或者加入更多的训练数据;在测试集上效果不够好时,可以采用更大的验证集进行验证;当在实际应用中表现不好时,可能是因为没有正确设置测试集或者代价函数评估出现问题。
单一数字评估指标
在构建机器学习系统时,通过设置单一数字评估指标,可以更快更好地评估模型。对于二分类问题,常用的评价指标是精准率(Precision)和召回率(Recall)。将所关注的类作为正类(Positive),其他类作为负类(Negative),并根据分类器在数据集上预测的正确与否,有以下4种情况:
- TP(True Positive) –正类预测为正类
- FN(False Negative) –正类预测为负类
- FP(False Positive) –负类预测为正类
- TN(True Positive) –负类预测为负类
所以有,精准率为
$$P=\frac{TP}{TP+FP}$$
召回率为
$$R=\frac{TP}{TP+FN}$$
当遇到下面的情况时,难以分辨哪个模型更优,就需要使用F1 Score指标。
F1 Score定义为
$$F_1=\frac{2}{\frac{1}{P}+\frac{1}{R}}=\frac{2TP}{2TP+FP+FN} $$
F1 Score是精准率和召回率的调和平均数,比简单的去平均数效果要好。
满足和优化指标
有时候,判断的标准不限于一个单一数字的评估指标。假设有三个不同的分类器性能表现如下:
如要求模型准确率尽可能的高,运行时间在100 ms以内。这里以Accuracy为优化指标,以Running time为满足指标,可以从中选出B是满足条件的最好的分类器。
训练、开发、测试集
一般把收集到的现有数据分为训练集、验证集和测试集。构建机器学习系统时,在训练集上训练出不同的模型,随后使用验证集对模型的好坏进行评估,确信某个模型效果足够好时再用测试集进行测试。
验证集和测试集的来源应该是相同的,并且是从所有数据中随机抽取;其次注意数据集大小的划分,原来的分配经验是将数据的70%作为训练集30%作为测试集,或者60%作为训练集20%作为验证集20%作为测试集。当数据量较少时,这种划分方式是合理的。但是在大数据量的场景下,一般不遵守该原则,测试集的大小应该设置得足够提高系统整体性能得可信度,开发集的大小也要设置得足够用于评估几个不同的模型。
改变开发、测试集和评估指标
在针对某一问题设置好验证集和评估指标后,不是一成不变的,有以后会发现目标设置错误,所以需要改动开发、测试集或评估指标。
假设有两个猫的图片分类器,评估指标为错误率,模型A的错误了为3%,模型B的错误率为5%。表面上看A的效果更好。但是在实际应用中,A可能会将很多色情图片分类成了猫。所以当在线上部署的时候,算法A会给爱猫人士推送更多更准确的猫的图片,但同时也会给用户推送一些色情图片,这是不能忍受的(为啥我觉得A更好,可能是因为我不是爱猫人士。。。。)。所以,虽然算法A的错误率很低,但是它却不是一个好的算法。这时我们需要改变验证集和测试集或者评估指标。
假设开始的评估指标如下:
$$E=\frac{1}{m_{dev}}\sum_{i=1}^{m_{dev}}I({y_{pred}^{(i)}\not=y^{(i)}})$$
该指标没有区分普通非猫图片和色情图片的误差,但是实际中,我们会希望当把色情图片标记为猫的时候误差更大一些,于是加入权重项$w^{(i)}$
$$E=\frac{1}{\sum w^{(i)}}\sum_{i=1}^{m_{dev}}w^{(i)}I({y_{pred}^{(i)}\not=y^{(i)}})$$
当$x^{(i)}$是色情图片时,$w^{(i)}=10$,否则$w^{(i)}=1$,以此来区分色情图片及其他误识别的图片。所以,要根据实际情况,正确确定一个评判指标,确保这个评判指标最优。