PR曲线与ROC曲线绘制

0 用到的知识

介绍ROC和PR前先介绍混淆矩阵便于理解。

- 预测值 正 预测值 负
真实值 正 TP FN
真实值 负 FP TN

TP(True Positive): 被判定为正样本,实际也为正样本

FN(False Negative):伪阴性 ,被判定为负样本,实际为正样本

FP(False Positive):伪阳性,被判断为正样本,实际为负样本

TN(True Negative):被判断为负样本,实际为负样本

假阳率:在所有的负样本中,分类器预测错误的比例

F P R = F P F P + T N FPR = \frac{FP}{FP+TN} FPR=FP+TNFP

真阳率:在所有的正样本中,分类器预测正确的比例

T P R = T P T P + F N TPR = \frac{TP}{TP + FN} TPR=TP+FNTP

recall 分类器所预测正确的正样本占所有正样本的比例,和FPR相同

r = T P T P + F N r = \frac{TP}{TP + FN} r=TP+FNTP

precision 分类器预测的正样本中预测正确的比例。

p = T P T P + F P p = \frac{TP}{TP + FP} p=TP+FPTP

1 绘制 ROC

ROC curve 横坐标为False Positive Rate(FPR假正率),纵坐标为True Positive Rate(TPR真正率)。一般情况下,这个曲线都应该处于(0,0)和(1,1)连线的上方。

在PR曲线中越左上凸越好

一共有下面两个步骤

1.1 排序

按照属于‘正样本’的概率将所有样本排序

1.2 描点

(1)从得分最高的第一个样本开始,如果将他的score作为阈值,也就是说,当score大于等于0.9时,才把样本归类到真阳性(true positive),这么一来, 在ROC曲线图中,样本1对应的混淆矩阵(confusion matrix)为

- 预测值 正 预测值 负
真实值 正 1 9
真实值 负 0 10

其中,正样本只有样本1分类正确,此时TPR = 1 / (1 + 9) = 0.1,FPR = 0 / (0 + 10) = 0.0,此时可以在(0, 0.1)处标记一个点。

(2)看第2个样本。此时与之设为0.8,样本2对应的混淆矩阵(confusion matrix)为

- 预测值 正 预测值 负
真实值 正 2 8
真实值 负 0 10

其中,正样本只有样本1,2分类正确,此时TPR = 2 / (2 + 8) = 0.2,FPR = 0 / (0 + 10) = 0.0,此时可以在(0, 0.2)处标记一个点。

(3)看第3个样本。此时与之设为0.7,样本3实际为负样本,被错误的预测为了正样本,对应的混淆矩阵(confusion matrix)为

- 预测值 正 预测值 负
真实值 正 2 8
真实值 负 1 9

其中,正样本只有样本1,2分类正确,此时TPR = 2 / (2 + 8) = 0.2,FPR = 1 / (1 + 9) = 0.1,此时可以在(0.1, 0.2)处标记一个点。

重复上述步骤直至所有样本遍历完成,然后将所有的点连接起来,可以得到下图:

  • (0,1)点:代表FPR=0,TPR=1; 最好的情况,所有正样本都被正确的预测了,并且没有负样本被人为是正样本。

  • (1,0)点:代表FPR=1,TPR=0;最坏的情况,表明所有的正样本都被错误的认为是负样本

  • (0,0)点:代表FPR=0,TPR=0;分类器将所有的样本都判定为负样本

  • (1,1)点:代表FPR=1,TPR=1;分类器将所有的样本都判定为正样本

2 绘制 PR

PR曲线是由精确率和召回率的点连成的线,横轴为Recall,纵轴为Precision,

在PR曲线中越右上凸越好,PR想要Precision 和Recall同时高

一共有下面两个步骤

2.1 排序

按照属于‘正样本’的概率将所有样本排序

1.2 描点

(1)从得分最高的第一个样本开始,如果将他的score作为阈值,也就是说,当score大于等于0.9时,才把样本归类到真阳性(true positive),这么一来, 在ROC曲线图中,样本1对应的混淆矩阵(confusion matrix)为

- 预测值 正 预测值 负
真实值 正 1 9
真实值 负 0 10

其中,正样本只有样本1分类正确,此时Recall = 1 / (1 + 9) = 0.1,2,Precision = 1 / (1 + 0) = 1.0,此时可以在(0.1, 1)处标记一个点。

(2)看第2个样本。此时与之设为0.8,样本2对应的混淆矩阵(confusion matrix)为

- 预测值 正 预测值 负
真实值 正 2 8
真实值 负 0 10

其中,正样本只有样本1,2分类正确,此时Recall = 2 / (2 + 8) = 0.2,Precision = 2 / (2 + 0) = 1.0,此时可以在(0.2, 1)处标记一个点。

(3)看第3个样本。此时与之设为0.7,样本3实际为负样本,被错误的预测为了正样本,对应的混淆矩阵(confusion matrix)为

- 预测值 正 预测值 负
真实值 正 2 8
真实值 负 1 9

其中,正样本只有样本1,2分类正确,此时Recall = 2 / (2 + 8) = 0.2,Precision = 2 / (2 + 1) = 0.67,此时可以在(0.67, 0.2)处标记一个点。

重复上述步骤直至所有样本遍历完成,然后将所有的点连接起来,可以得到下图:

欢迎关注微信公众号(算法工程师面试那些事儿),本公众号聚焦于算法工程师面试,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~

算法工程师面试那些事儿

猜你喜欢

转载自blog.csdn.net/qq_40006058/article/details/121070449