本文是吴恩达《机器学习》视频笔记第69篇,对应第6周第11个视频。
“Machine Learning System Design:——Trading off precision and recall”
上一节讲了当遇到偏斜类的时候,如何对算法效果进行评价,使用查准率和召回率。在很多实际应用中,我们还希望能在查准率和召回率间进行权衡,使得两个指标都取得不错的结果。
还是用逻辑回归来进行癌症分类的例子,如下图。图中右上角框起来的是上节讲的“查准率”和“召回率”的定义公式,忘了的可以翻翻上一节的内容。
如果病人有癌症y=1,否则y=0。而逻辑回归的输出结果
是病人有癌症的概率,当概率大于等于0.5时
,否则
。
想象一下,如果我们作为医生告诉一个病人有癌症的话,需要特别谨慎,也就是说一般是比较确信的情况下才判断一个病人得了癌症,这实在是个坏消息。我们把这个0.5的临界值要调大一点,变成0.7,也就是
这样做的结果,应该是算法确认了有癌症的病人里面真正有癌症的病人占比应该比较大,也就是说这个查准率应该比较高。但是,提高查准率的同时,必然会降低这个召回率,因为提高临界值使得将本来有癌症的病人判断为没有癌症的可能性变大了。
那召回率下降也是比较难以接受的,可能错过最佳治疗期。那这个矛盾该怎样权衡呢?
前面的例子,怎么弄呢?我们就搞两个模型,一个是高查准率、低召回率的;一个是高召回率、低查准率的。
对于大多数回归模型,你更改这个临界值(threshold)会改变查准率、召回率。而且,一般情况高查准率意味着低召回率,反之亦然。如下图。
如果有几个算法供我们选择,从查准率和召回率的角度看哪个算法好呢?我们当然希望有个客观的衡量指标,当一个算法来了之后,直接套入这个客观的公式里面一算就能帮我们决策了。
一种办法,算查准率P和召回率R的均值,如下图。但是从下图的表可以看出来,用平均值并不是很好的办法,因为一个较高的召回率和较低的查准率也可能会导致较好的均值,想第3个算法,实际上这个算法并不咋样,查准率太低了。
另外一个办法,就是使用F1值,它的公式和计算办法如下图。
F1值有时候也被称为F值,是一种在多个算法间进行取舍的衡量指标值。因为式子的分母是查准率和召回率的乘积,所以只有两者差不多大的时候,乘积的结果才会取得较大的值。
本节讲了逻辑回归中存在一个阈值,调整这个阈值控制输出结果,然后可以调整查准率和召回率的取值。
而到底怎样的查准率、召回率的取值比较好,可以使用F1值进行权衡。
又或者,可以同时两个模型并存:(1)高查准率、低召回率;(2)高召回率,低查准率。