(创作不易,转载请注明出处~)
面试的时候经常被问的一个问题是 AUC和F1 score有什么区别。笔者看了很多博文,感觉相当一部分在分析混淆矩阵和auc、f1的定义上花了太多笔墨,但对于两者的区别和联系,有种到了门前就差临门一脚的感觉。因此笔者去stack overflow上找了很多回答,感觉收获很多,在此简明扼要的写一下收获。如有纰漏欢迎指正。
1、定义:
AUC的优化目标:TPR和(1-FPR)
F1的优化目标:Recall和Precision
这里不再对混淆矩阵(TP、FP、TN、FN)相关的一些很细的概念做详细解释,推荐去看一下auc的维基百科。这里解释一下为什么auc的优化目标是TPR和(1-FPR)。
大家知道AUC指的是ROC曲线下的面积大小。而ROC曲线是由TPR和FPR为轴的曲线。如果希望auc更大,那么在给定TPR的情况下,我们是希望FPR越小越好的,同样给定FPR,希望TPR越大越好,这样才能给曲线拉向对角线上方。所以我们可以认为:优化auc就是希望同时优化TPR和(1-FPR)。另外,TPR又被成为sensitivity(灵敏度),(1-FPR)又被成为specificity(特异度)
优化F1就是希望同时优化recall和precision这个比较好理解,因为F1的计算公式就是:
F 1 s c o r e = 2 ∗ r e c a l l ∗ p r e c i s i o n r e c a l l + p r e c i s i o n F1score = \frac{2*recall*precision}{recall + precision} F1score=reca