混淆矩阵,P-R曲线和ROC&AUC

这是一篇总结文

混淆矩阵

混淆矩阵左侧是真实信息,上放是样本预测的信息。所以一个二分类的混淆矩阵为。

在这里插入图片描述

我们常说的Precision(精确率),Recall(召回率),Accuray(准确率)。就可以从上述计算得来。

P = P r e c i s i o n = T P T P + F P (1) \tag{1}P=Precision=\frac{TP}{TP+FP} P=Precision=TP+FPTP(1)

R = R e c a l l = T P T P + F N (2) \tag{2}R=Recall=\frac{TP}{TP+FN} R=Recall=TP+FNTP(2)

A c c = A c c u r a c y = T P + T N T P + F N + F P + T N (3) \tag{3}Acc=Accuracy=\frac{TP+TN}{TP+FN+FP+TN} Acc=Accuracy=TP+FN+FP+TNTP+TN(3)

常说F1就可以通过 P P P R R R计算出来。只有 P P P R R R都很高时,F1的值才会高。

F 1 = 2 ∗ P ∗ R P + R F1=2*\frac{P*R}{P+R} F1=2P+RPR
但是在一些应用中,对P和R的重视程度是不同的。例如再商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容是用户感兴趣的,此时P更重要;而在逃犯信息检索系统,更希望尽可能少漏掉逃犯,此时R更重要。所以 F 1 F1 F1有更一般的形式 F β F_\beta Fβ,让我们表达对P/R不同的偏好。

F β = ( 1 + β 2 ) ∗ P ∗ R β 2 ∗ P + R (4) \tag{4} F_\beta=\frac{(1+\beta^2)*P*R}{\beta^2*P+R} Fβ=β2P+R(1+β2)PR(4)

其中 β > 0 \beta>0 β>0 度量了R对P的相对重要性。

  • β = 1 \beta=1 β=1时, F 1 = F β F1=F_\beta F1=Fβ
  • β > 1 \beta>1 β>1时,R有更大影响
  • β < 1 \beta<1 β<1时,P有更大影响。

现在还有一个问题是,我们平常的macro-F1(P,R)和micro-F1(P,R)是怎么回事?其实是这样,在大多数的时候,我们都有多个二分类混淆矩阵;例如进行多次训练/测试,每次得到一个混淆矩阵;或是在多个数据集上进行训练/测试;或是执行多分类任务,每两两类别的组合都对应一个混淆矩阵。总之,我们希望在 n n n个二分类混淆矩阵综合考察P和R。

Macro

第一种直接的做法是先在各混淆矩阵上分别计算出P和R,在计算平均值。这样就得到了宏观P,宏观R以及相应的宏观F1。

P m a c r o = 1 n ∑ i = 1 n P i (5) \tag{5}P_{macro}=\frac{1}{n}\sum_{i=1}^nP_i Pmacro=n1i=1nPi(5)

R m a c r o = 1 n ∑ i = 1 n R i (6) \tag{6}R_{macro}=\frac{1}{n}\sum_{i=1}^nR_i Rmacro=n1i=1nRi(6)

F 1 m a c r o = 2 ∗ P m a c r o ∗ R m a c r o P m a c r o + R m a c r o (7) \tag{7}F1_{macro}=\frac{2*P_{macro}*R_{macro}}{P_{macro}+R_{macro}} F1macro=Pmacro+Rmacro2PmacroRmacro(7)

Micro

micro的做法是,先将各个矩阵对应元素进行平均,得到TP、FP、TN、FN的平均值,在基于这些平均值计算 P m i c r o P_{micro} Pmicro R m i c r o R_{micro} Rmicro F 1 m i c r o F1_{micro} F1micro

P-R曲线

P和R是一对矛盾的度量。一般情况是,P高的时候,查全率往往偏低(不是绝对的)。

举一个西瓜书的例子,若希望好瓜尽可能地选出来,则可以通过增加选瓜地数量来实现,如果将所有西瓜都选上,那么所有的好瓜也必然都被选上了。但是这样P就较低;若希望选出的瓜中好瓜的比例尽可能地高,则可只挑选最有把握地瓜,但这样就难免会漏掉不少好瓜。R就低。

在很多情况下,我们可以根据学习器地预测结果对样例进行排序。排在前面地是**“最有可能”是正例地样本**。排在最后地则是学习器认为**”最不可能“是正例地样本**。根据排序的概率,我们将阈值分别调正为对应的概率。

比如第一个样本学习器预测是正例的概率为90%,我们将阈值调整至90%。也就是说所有样本只有一个样本是被分类为正例,所以P为1,R几乎为0。

按照这样的顺序,我们可以逐个把样本作为正例进行预测,则每次可以计算出当前的P,R。以P为纵轴,R为横轴作图。即可得到P-R曲线。

在这里插入图片描述

现实任务中P-R曲线常常是非单调,不平滑的,在很多局部都有上下波动。

  • 若一个学习器A的P-R曲线完全包住了学习器B的P-R曲线,则A优于B
  • 若A,B发生了交叉,则计算P-R曲线面积下的大小比较。

大多数的情况下,我们衡量学习器的优劣,用F1度量。

ROC与AUC

ROC全称是Receiver Operating Characteristic曲线。与P-R曲线绘制相似。它也是根据学习器的预测结果对样本进行排序,调整阈值绘制。ROC的纵轴是”真正例率”(True Positive Rate, TPR),横纵“假正例率”(False Positive Rate, FPR)。

T P R = T P T P + F N (8) \tag{8}TPR=\frac{TP}{TP+FN} TPR=TP+FNTP(8)

F P R = F P T N + F P (9) \tag{9}FPR=\frac{FP}{TN+FP} FPR=TN+FPFP(9)

你没有发现错,TPR和Recall计算方式是一样的。

在这里插入图片描述

进行学习器的比较时,与P-R曲线相似。

  • 若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者。
  • 若发生交叉,则比较ROC曲线下的面积,这个面积就是AUC
#Scikit-Learn提供计算ROC AUC的分数
from sklearn.metrics import roc_auc_score
roc_auc_score(y_train,y_scores)

y_scores就是我们上述说的,学习器的样本预测为正例的概率。

总结

ROC和P-R曲线非常相似,你可能会问如何决定使用那种曲线。

有一个经验法则是

  • 当正类非常少见或者你更关注假正类(FP)而不是假负类(FN)时,应该选择PR曲线,反之则是ROC曲线。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这一炉能成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值