学习目标
掌握构建ML项目的流程。
笔记
1 设定目标
1.1 单一评价指标
为了快速比较多个模型的表现,可以利用单一评价指标——F1分数或者平均误差作为评价指标。
1.1.1 F1分数(F1 Score)
F1分数是准确率和召回率的调和平均数(Harmonic mean),可以帮助快速判断哪个分类器表现更好。公式如下:
F
1
S
c
o
r
e
=
2
1
P
+
1
R
F1\quad Score \quad=\quad \frac{2}{\frac{1}{P}+\frac{1}{R}}
F1Score=P1+R12
1.1.2 平均误差
将多个模型在多个数据集上进行测试,求每个模型测试误差的均值,平均误差小的模型表现更好。
1.2 满足和优化指标(Satisficing and optimizing metrics)
在比较模型时,如果有N个关心的指标,选择其中一个(优化指标,Optimizing metrics)加以优化(比如准确率,使准确率越高越好),其他的N-1个指标只需达到某阈值即可,称其为满足指标(Satisficing metrics)。
1.3 Train/Dev/Test set设置原则
训练集(Training set):占比最大,用于训练模型;
训练开发集(Training-Dev set):与训练集同分布,用于检验方差问题;
开发集(Dev set):占比较小,帮助我们评估不同的模型,又称交叉验证集。开发集(Dev set)和评价指标(metrics)构成了“目标”;
测试集(Test set):占比与开发集相当,用于对最终模型进行评估,反映真实情况的分布。
机器学习的工作流程:尝试训练多种模型,然后使用开发集评估不同模型,并选择一个,直到最后有一个理想的结果,再在测试集上评估。
设置原则(重点):
(1)选择的开发集和测试集能够反映出将来预计得到的数据(真实情况)和你认为重要的数据,特别要注意的是,开发集应与测试集来自同一分布;
(2)测试集的大小只要足够能保证对系统整体性能评估的高置信度即可。
2 与人的表现相比
贝叶斯最佳误差(Bayes optimal error):是从x到y映射的最好的理论函数,无法被超越。
人类水平的误差(Human-level error):存在专家、专家团队、普通人的水平区别,专家团队水平误差通常可以看作是贝叶斯误差的估计。
模型误差:包括training error、Dev error、Test error。
下图中,紫线衡量的是模型表现,横坐标是时间,纵坐标是准确率。
可避免偏差(Aavoidable bias):training error与Bayes optimal error的差距。
3 误差分析(Error Analysis)
- 从dev set中挑出错误标识的样本。
- 建立表格,记录如下信息:
图片序号 | 错误分类情况1 | 错误分类情况2 | … | 错误分类情况n | 备注 |
---|---|---|---|---|---|
1 | 是 | 陈述原因 | |||
2 | 是 | 陈述原因 | |||
… | 是 | 是 | 陈述原因 | ||
比例 | - | - | - | - | - |
注:
(1)表格结论体现了不同类别的错误的处理价值,判断不同类别错误处理的优先级;
(2)可以增加一列统计Dev set中由于错误标记导致错误分类的情况。
总结
情况 | 解决方案 |
---|---|
当Human-level与Training error差距大时,即出现明显的可避免偏差时 | 1、训练更大的模型;2、训练更长时间/用更好的优化算法;3、更好的神经网络架构/更精准的超参数值 |
当Training-Dev error与Training error的差距大时,即出现明显的方差问题时 | 1、更多的数据/数据增强;2、正则化;3、更好的神经网络架构/更精准的超参数值 |
当Dev error与Training-Dev error的差距大时,即出现明显的数据失配问题时 | 收集/人工合成更多与Dev/Test set分布相似的数据放入Training set |
当Test error与Dev error的差距过大时,即出现算法对Dev set的过拟合问题 | 扩充开发集 |
当真实需求的数据很少时(如构建一个模型识别移动端的照片,可获得的数据大部分是网上的高分辨率图片,来自移动端的图片很少) | 将需求数据的1/2放入Training set,1/4构成Dev set,1/4构成Test set(瞄准靶子) |
需要注意的地方
总结错题并记录。