精确率和召回率
精确率(precision)和召回率(recall)是机器学习算法的评价指标。
p r e c i s i o n = t r u e p o s i t i v e p r e d i c t e d p o s i t i v e = T P T P + F P precision=\frac{true \ positive}{predicted \ positive}=\frac{TP}{TP+FP} precision=predicted positivetrue positive=TP+FPTP
r e c a l l = t r u e p o s i t i v e a c t u a l p o s i t i v e = T P T P + F N recall=\frac{true \ positive}{actual \ positive}=\frac{TP}{TP+FN} recall=actual positivetrue positive=TP+FNTP
以预测肿瘤性质问题为例,假如样本共100人,其中10人肿瘤为恶性(positive,一般取数量少的一类为正样本),90人为良性。模型预测结果为5人为恶性,95人为良性。则该模型的精确率为5/5=1,召回率为5/10=0.5。考虑一个极端的情况,假设模型预测结果均为良性(y=0,negative),则精确率为1,召回率为0。这也是为什么要同时考虑精确率和召回率的原因。
在处理二分类问题时,模型的输出一般是一个0到1之间的数,给定阈值(threhold)0.5,当输出值大于0.5时,预测值为1(positive),小于0.5时预测值为0(negative)。阈值不同,模型的精确率和召回率也会有差异。当阈值增大时,判断为positive的标准更加严格,精确率增大,召回率减小;反之当阈值减小时,精确率会减小,而召回率增大。二者关系如下图。
在实际应用中,我们希望能精确率和召回率都比较大,并且达到相对平衡。如果只用一个评价指标,我们首先想到的方式就是取二者平均值。但这个效果其实是不好的。
可以看到,取平均值的话Algorithm 3是最优的,但是它的精确率却非常低,显然不是我们想要的结果。有一种方式可以有效地取得两者的平衡,即F值。
F值
F值,也叫F_1值,公式如下:
F
=
2
P
R
P
+
R
F=2\frac{PR}{P+R}
F=2P+RPR,
P
P
P和
R
R
R分别为精确率和召回率。
当P和R都取最大值1时,F=1;当P和R都取最小值0时,F=0,所以F也是一个0到1之间的常数。并且由于分子是F和R的乘积,所以要取得较大的F值,准确率和召回率都必须较大。来看一下F值在上例中的应用。
结果是Algorithm 1最好,符合我们的判断。