机器学习性能指标精确率、召回率、F1值、ROC、PRC与AUC

时间:2022-12-07 15:46:00

  精确率、召回率、F1、AUC和ROC曲线都是评价模型好坏的指标,那么它们之间有什么不同,又有什么联系呢。下面让我们分别来看一下这几个指标分别是什么意思。

针对一个二分类问题,将实例分成正类(postive)或者负类(negative)。但是实际中分类时,会出现四种情况.

(1)若一个实例是正类并且被预测为正类,即为真正类(True Postive TP)

(2)若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN)

(3)若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP)

(4)若一个实例是负类,但是被预测成为负类,即为真负类(True Negative TN)

如下图所示:

机器学习性能指标精确率、召回率、F1值、ROC、PRC与AUC

精确率(Precision)为TP/(TP+FP),即实际是正类并且被预测为正类的样本占所有预测为正类的比例,精确率更为关注将负样本错分为正样本(FP)的情况。

召回率(Recall)为TP/(TP+FN),即实际是正类并且被预测为正类的样本占所有实际为正类样本的比例,召回率更为关注将正样本分类为负样本(FN)的情况。

F1值是精确率和召回率的调和均值,即F1=2PR/(P+R) (P代表精确率,R代表召回率),相当于精确率和召回率的综合评价指标。

有的时候,我们对recall 与 precision 赋予不同的权重,表示对分类模型的偏好:

机器学习性能指标精确率、召回率、F1值、ROC、PRC与AUC

可以看到,当β=1,那么Fβ就退回到F1了,β 其实反映了模型分类能力的偏好,β>1 的时候,precision的权重更大,为了提高Fβ,我们希望precision 越小,而recall 应该越大,说明模型更偏好于提升recall,意味着模型更看重对正样本的识别能力; 而 β<1 的时候,recall 的权重更大,因此,我们希望recall越小,而precision越大,模型更偏好于提升precision,意味着模型更看重对负样本的区分能力。

ROC曲线其实是多个混淆矩阵的结果组合,如果在上述模型中我们没有定好阈值,而是将模型预测结果从高到低排序,将每个概率值依次作为阈值,那么就有多个混淆矩阵。

对于每个混淆矩阵,我们计算两个指标TPR(True positive rate)和FPR(False positive rate),TPR=TP/(TP+FN)=Recall,TPR就是召回率。FPR=FP/(FP+TN),FPR即为实际为负样本的样例中,预测为正的样本所占比例。我们以FPR为x轴,TPR为y轴画图,就得到了ROC曲线。

机器学习性能指标精确率、召回率、F1值、ROC、PRC与AUC
在画ROC曲线的过程中,有一个阈值,高于此阈值的均为正样本,低于此阈值的均为负样本,则认为此模型已完美的区分开好坏用户。此时坏用户的预测准确率(TPR)为1,同时好用户的预测错误率(FPR)为0,ROC曲线经过(0,1)点。
AUC(Area Under Curve)的值为ROC曲线下面的面积,若如上所述模型十分准确,则AUC为1(即ROC曲线为左边的轴和上边的轴)。一般AUC均在0.5到1之间,AUC越高,模型的区分能力越好,上图AUC为0.81。 若AUC=0.5,即与上图中红线重合,表示模型的区分能力与随机猜测没有差别。若AUC真的小于0.5,请检查一下是不是好坏标签标反了,或者是模型真的很差。
PRC曲线(Precision-Recall curve)和ROC曲线类似,ROC曲线是FPR和TPR的点连成的线,PRC曲线是准确率和召回率的点连成的线,如下图所示。
机器学习性能指标精确率、召回率、F1值、ROC、PRC与AUC

除此之外,在评价模型时还会用到KS(Kolmogorov-Smirnov)值,KS=max(TPR-FPR),即为TPR与FPR的差的最大值,KS值可以反映模型的最优区分效果,此时所取的阈值一般作为定义好坏用户的最优阈值。
TPR、FPR、Precision、Recall的定义来对比,TPR、Recall的分母为样本中正样本的个数,FPR的分母为样本中负样本的个数,样本一旦确定分母即为定值,因此三个指标的变化随分子增加单调递增。但是Precision的分母为预测为正样本的个数,会随着阈值的变化而变化,因此Precision的变化受TP和FP的综合影响,不单调,变化情况不可预测。 精确度的弊端在不均衡的样本中体现的尤为明显,比如有1000个样本,其中10个负样本,990个正样本,那么模型只要简单的把所有的样本都划分为正样本就可以获得99%的正确率,但是这样的划分并没有什么意义。

相对来讲ROC曲线会稳定很多,在正负样本量都足够的情况下,ROC曲线足够反映模型的判断能力。

因此,对于同一模型,PRC和ROC曲线都可以说明一定的问题,而且二者有一定的相关性,如果想评测模型效果,也可以把两条曲线都画出来综合评价。

对于有监督的二分类问题,在正负样本都足够的情况下,可以直接用ROC曲线、AUC、KS评价模型效果。在确定阈值过程中,可以根据Precision、Recall或者F1来评价模型的分类效果。

对于多分类问题,可以对每一类分别计算Precision、Recall和F1,综合作为模型评价指标。




参考:

http://blog.csdn.net/matrix_space/article/details/50384518

https://www.zhihu.com/question/30643044

https://www.zhihu.com/question/30643044/answer/222274170

http://blog.csdn.net/zdy0_2004/article/details/44948511