为什么非平衡的数据更适合用精度-召回曲线,而不是roc auc?

  统计/机器学习 监督式学习 模型验证    浏览次数:5132        分享
0

为什么非平衡的数据更适合用精度-召回曲线,而不是roc auc?

在非平衡的数据集上,精度-召回曲线的优势体现在哪儿呢?

 

WinJ   2019-01-10 15:24



   2个回答 
5

先说结论:我觉得楼主问题中有个误解。用precision-recall的主要理由不是因为正负样本个数悬殊,而是因为应用更关心正样本的分类结果。

非平衡的数据一般来至于正样本明显小于负样本,且更关心正样本分类结果的应用。比如信用卡诈骗中,诈骗的交易数远小于正常交易数,并且主要关心是否能找出欺诈交易及其效率。

ROC里看TPR和FPR,精度-召回曲线看Precision 和recall,其中TPR=recall。那我们主要是比较FPR 和Precision。

TPR (True Positive Rate) =Recall = TP / (TP+FN)  

FPR (False Positive Rate) = FP / (FP+TN) 

Precision = TP/(TP+FP) 

以上三个指标(metric)都是$x/(x+y)$的形式,对分子$x$更敏感。也就是说TPR(Recall)只和正样本相关,FPR是只和负样本相关,Precision是偏向正样本的指标。所以precision-recall更适合于关心正样本的应用。ROC适合对正负分类结果都关心的应用。

假如有个应用是正样本个数远远小于负样本个数,且对正负样本的结果都关心。TP<<FP,所以precision接近于0,很难用precision去评价分类器好坏;而FP和TN可比,0<FPR<1。反而此时应该用ROC而不用precision-recall。


参考这里

SofaSofa数据科学社区DS面试题库 DS面经

Zealing   2019-01-11 01:07

谢谢!如果是非常倾向的情况,比如正样本只占到0.1%,还是roc auc更好? - WinJ   2019-01-11 08:50
比如10正样本和10^5负样本,假如FPR=1%,TPR=100%,FP=1000,TP=10,可算出precision=10/(10+1000)=0.99%。也就是说precision-recall线是一条接近于横轴的线,很难用于判断分类器的好坏。 - Zealing   2019-01-11 09:18
明白了,多谢指点 - WinJ   2019-01-11 10:31
1

题主有兴趣可以看看这篇被引用了两千多次的论文:The Relationship Between Precision-Recall and ROC Curves.

论文里的一个关键句子是“when dealing with highly skewed datasets, Precision-Recall (PR) curves give a more informative picture of an algorithm’s performance.”

SofaSofa数据科学社区DS面试题库 DS面经

木子周   2019-01-22 10:04



  相关讨论

为什么负样本的auc会和正样本的auc不一样呢?

roc auc小于0.5是什么情况?

如何利用python画分类器的ROC曲线?

roc space是什么意思?

怎么直观理解ROC AUC的概率统计意义?

精度召回precision recall auc是什么?

sklearn里计算roc_auc_score,报错ValueError: bad input shape

问一下roc和logistic回归有啥联系区别

sklearn.metrics.auc里提到的梯形法则是什么意思?

lightgbm的所有预测值都一样,roc auc等于0.5,会是什么问题?

  随便看看

sklearn中的predict_proba方法的返回值的意义

sklearn r2_score返回负数

matplotlib一个画板上多个图叠加,如何决定图层上下?

线性回归或者逻辑回归中常提到的AIC和BIC是什么意思?

二元分类为什么不能用MSE做为损失函数?