1 单值评价指标
指的是,就像老式电脑一样,每个按钮单独的空置一个参数(长,宽,梯形等)
1.1 idea→code→Experiment
F1分数:指的是精准率P和召回率R的调和平均数
公式为:21P+1R\frac{2}{\frac{1}{P}+\frac{1}{R}}P1+R12
1.2 满足和优化度量
- 即,如果我关心多个指标,比如说分类器的精确度,分类器识别一张图所需要的时间等,那么我可以找到一个我最关心的指标,比如说我最关心精确度,那么我就让精确度尽可能高的精确,而其他指标,只要满足我的最低范围就可以了。
- 比如精确度,我要求很高,那么其他指标,比如识别时间,我只要让他<100ms就可以了,至于是100ms还是50ms,那么都无所谓,只要不大于100ms就可以了。
1.3 设置dev和test
在开始项目前,一定要定好一个目标,并且根据目标进行均匀分布。
比如我要对ABCDE五个地区进行一个猫的识别器,那么我收集到的5个地区的猫的数据,进行随机打乱,然后再区分开发集和测试集,这样就可以保证数据的统一分布,都包含五个地区。
否则,如果用A地区的数据,来当做开发集和测试集,那么你的模型将在BCDE上表现的不好,几个月的功夫会白白浪费掉。
1.4 dev和test的大小
- 传统的机器学习,比例区分为:70/30,60/20/2070/30,60/20/2070/30,60/20/20
- 但是现阶段,数据量已经很大的情况下,就不需要这种比例,因为
dev数据集的作用是,评估不同模型中最优的一项,让我来选择一个更好的模型继续往下深入调优。因此,也许10000条数据已经够用了 ,而只占用总数据量的1%。 - test数据集的作用是,对已经训练好的模型进行最终评估。因此只要能够满足最终评估的效果就可以了,也不需要特别大的数据量。
- 因此一般分配比可能是98/1/198/1/198/1/1,或者一些其他的,但肯定,D和V都是<<30<<30<<30的
1.5 何时更改开发dev/测试集test和评估指标
1.5.1 算法表现不好
当算法在dev和test的表现不好时:
例如:
A,B算法,误差分别为3%,5%,但是3%的算法,会向用户展示一些色情图片,这是我们不希望看到的。因此,这时我们就需要更改自己的评估指标,比如:
- 加入一个权重WWW
- 当为非色情图片的时候,W=1W=1W=1
- 当为色情图片时,W=10W = 10W=10或者更大的数
1.5.2 在开发集和测试集表现好,但是实际应用不好
比如你的算法训练集使用的猫的图片是在网上下载的优良背景的高清图,在dev和test表现良好,但是实际情况是,用户上传的各种非高清图,背景不是很良好,或者猫的样子很奇怪,那么算法的实际表现不够好,则需要更改
- 评估指标
- 开发集和训练集
1.5.3 开发建议
- 开发之前,要定义好一个评估指标,用来评估算法的性能,哪怕评估指标不是那么的完美。因为这样可以加快团队的迭代速度,在之后也可以修改这个评估指标。即先定一个目标
- 迭代过程中,根据评估指标来衡量算法的性能,及时修改 评估指标 / dev / test。再考虑如何实现这个目标