ROC与AUC曲线
来源:互联网 发布:python 分词 相似度 编辑:程序博客网 时间:2024/05/20 13:12
链接:https://www.zhihu.com/question/30643044/answer/222274170
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
精确率、召回率、F1、AUC和ROC曲线其实都是评价模型好坏的指标,而且相互之间是有关系的,只是侧重点不同,题主如果理解了各指标的定义就能找出他们的区别与联系,下面就用一个例子解释这些指标。
以白条的逾期预测模型为例,这是一个有监督的二分类模型,模型对每个样本的预测结果为一个概率值,我们需要从中选取一个阈值来区分好用户和坏用户。
如果我们已经定好了一个阈值,超过此阈值定义为坏用户(1),低于此阈值定义为好用户(0),就可以计算出混淆矩阵(Confusion matrix)。
根据混淆矩阵我们可以得到TP,FN,FP,TN四个值,TP即为预测正确的坏用户的个数,FN为预测错误(预测为好用户)的坏用户个数,根据这四个值即可计算精确率、召回率和F1。
精确率(Precision)为TP/(TP+FP),即为在预测为坏人的人中,预测正确(实际为坏人)的人占比。
召回率(Recall)为TP/(TP+FN),即为在实际为坏人的人中,预测正确(预测为坏人)的人占比。
F1值是精确率和召回率的调和均值,即F1=2PR/(P+R),相当于精确率和召回率的综合评价指标。
另外还有Fα值,为F1值的变体, ,利用α给P和R赋予不同的权重,若α=1则为F1值。
接着来说ROC曲线(Receiver operating characteristic curve),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曲线。
在画ROC曲线的过程中,若有一个阈值,高于此阈值的均为坏人,低于此阈值的均为好人,则认为此模型已完美的区分开好坏用户。此时坏用户的预测准确率(TPR)为1,同时好用户的预测错误率(FPR)为0,ROC曲线经过(0,1)点。
AUC(Area Under Curve)的值为ROC曲线下面的面积,若如上所述模型十分准确,则AUC为1。
但现实生活中尤其是工业界不会有如此完美的模型,一般AUC均在0.5到1之间,AUC越高,模型的区分能力越好,上图AUC为0.81。
若AUC=0.5,即与上图中红线重合,表示模型的区分能力与随机猜测没有差别。若AUC真的小于0.5,请检查一下是不是好坏标签标反了,或者是模型真的很差。。。
- ROC曲线与AUC
- ROC曲线与AUC
- ROC曲线与AUC
- ROC与AUC曲线
- ROC曲线与AUC计算
- ROC曲线与AUC计算
- ROC曲线与AUC值
- ROC曲线与AUC值
- ROC曲线与AUC--模型评价指标
- ROC曲线与AUC以及LIFT
- ROC曲线,AUC,
- ROC曲线和AUC
- ROC曲线,AUC
- ROC曲线与AUC区域的理解与实践
- ROC曲线及AUC计算
- ROC曲线/AUC值/PR曲线
- AUC与ROC
- AUC与ROC
- Java EE上路之安装JDK
- 求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222
- C++的指针和引用
- Android String subString用法
- 简便快捷二维码扫描,生成二维码,
- ROC与AUC曲线
- 2016年第七届蓝桥杯C/C++A组第三题---方格填数
- JQuery 实现AJAX异步请求 的基本用法
- 关于重新安装Tomcat的问题
- 同余定理
- python下如何在目录下让Python文件去调用另一个Python文件内的函数或类
- Linux‘\’的使用问题
- Learning Python Part II 之 nonlocal语句
- 【S2-052】Struts2远程命令执行漏洞(CVE-2017-9805)