精度(Precision)与召回率(Recall) 以及ROC曲线

时间:2022-12-06 23:58:29

精度和召回率是衡量信息检索系统性能的重要指标。

   精度是指检索到相关文档数占检索到的文档总数的比例。

   召回率是指检索到相关文档数占所有相关文档总数的比例。

   举例来说明一下


         检索到的相关文档数(A)

         检索到的不相关文档数(B)

         没有检索到的相关文档数(C)

         没有检索到的不相关文档数(D)


    则精度为A\(A+B)

     召回率为A\(A+C)



考虑一个二分问题,即将实例分成正类(positive)或负类(negative)。对一个二分问题来说,会出现四种情况。如果一个实例是正类并且也被 预测成正类,即为真正类(True positive),如果实例是负类被预测成正类,称之为假正类(False positive)。相应地,如果实例是负类被预测成负类,称之为真负类(True negative),正类被预测成负类则为假负类(false negative)。 如下表所示,1代表正类,0代表负类。
    预测    
    1 0 合计
实际 1 True Positive(TP) False Negative(FN) Actual Positive(TP+FN)
  0 False Positive(FP) True Negative(TN) Actual Negative(FP+TN)
合计   Predicted Positive(TP+FP) Predicted Negative(FN+TN) TP+FP+FN+TN
从列联表引入两个新名词。其一是真正类率(true positive rate ,TPR), 计算公式为TPR=TP/ (TPFN),刻画的是分类器所识别出的 正实例占所有正实例的比例。另外一个是假正类率(false positive rate, FPR),计算公式为FPR= FP / (FP + TN),计算的是分类器错认为正类的负实例占所有负实例的比例。还有一个真负类率(True Negative Rate,TNR),也称为specificity,计算公式为TNR=TN/ (FPTN) = 1 - FPR 在一个二分类模型中,对于所得到的连续结果,假设已确定一个阀值,比如说 0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。如果减小阀值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例的比例,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。为了形象化这一变化,在此引入ROC。

Receiver Operating Characteristic,翻译为"接受者操作特性曲线"。曲线由两个变量1-specificity 和 Sensitivity绘制. 1-specificity=FPR,即假正类率。Sensitivity即是真正类率,TPR(True positive rate),反映了正类覆盖程度。这个组合以1-specificity对sensitivity,即是以代价(costs)对收益(benefits)。 下表是一个逻辑回归得到的结果。将得到的实数值按大到小划分成10个个数相同的部分。
Percentile 实例数 正例数 1-特异度(%) 敏感度(%)
10 6180 4879 2.73 34.64
20 6180 2804 9.80 54.55
30 6180 2165 18.22 69.92
40 6180 1506 28.01 80.62
50 6180 987 38.90 87.62
60 6180 529 50.74 91.38
70 6180 365 62.93 93.97
80 6180 294 75.26 96.06
90 6180 297 87.59 98.17
100 6177 258 100.00 100.00
其正例数为此部分里实际的正类数。也就是说,将逻辑回归得到的结 果按从大到小排列,倘若以前10%的数值作为阀值,即将前10%的实例都划归为正类,6180个。其中,正确的个数为4879个,占所有正类的 4879/14084*100%=34.64%,即敏感度;另外,有6180-4879=1301个负实例被错划为正类,占所有负类的1301 /47713*100%=2.73%,即1-特异度。以这两组值分别作为x值和y值,在excel中作散点图。得到ROC曲线如下