roc与prc
2016-03-16 11:06
417 查看
1.准确率与召回率
数据集中 : 正例 反例
你的预测 正例 : A B
你的预测 反例 : C D
准确率就是A/(A+B) 就是“你的预测中有多少是对的”
召回率就是A/(A+C) 就是“正例里你的预测对的覆盖了多少”
A为被模型预测为正的正样本,真正(True Positive , TP)--预测正确
B为被模型预测为正的负样本,假正(False Positive , FP)
C为被模型预测为负的正样本,假负(False Negative , FN)
D为被模型预测为负的负样本,真负(True Negative , TN--预测正确
真正率(True Positive Rate , TPR)或灵敏度(sensitivity)TPR = TP /(TP + FN) (正样本中预测为正 / 正样本实际数目) 注意:也是召回率
假负率(False Negative Rate , FNR)
FNR = FN /(TP + FN) (被预测为负的正样本结果数 / 正样本实际数 )
假正率(False Positive Rate , FPR)
FPR = FP /(FP + TN) (被预测为正的负样本结果数 /负样本实际数)
真负率(True Negative Rate , TNR)或特指度(specificity)
TNR = TN /(TN + FP) (负样本中预测为负 / 负样本实际数)
2.roc
ROC曲线上几个关键点的解释:
( TPR=0,FPR=0 ) 把每个实例都预测为负类的模型,坐标原点,真正和假正都是零,即全预测为负
( TPR=1,FPR=1 ) 把每个实例都预测为正类的模型,对角线顶点
( TPR=1,FPR=0 ) 理想模型,左上角顶点
roc横左标为 FPR,纵坐标为TPR,反应假正率与真正率的情况,又由于1-tpr=fnr,1-fpr=tnr,所以也可以说反应了假负率与真负率的关系。
曲线越靠近左上角,曲线下面的面积越大,即auc越大
如果ROC是光滑的,那么基本可以判断没有太大的过拟合,否则可能样本太少了
3.PRC, precision
recall curve
横坐标为召回率,纵坐标为准确率,准确率和召回率都是越高越好,所有prc曲线先看是否光滑,再看位置,越偏右上角越好
F1是准确率和召回率的调和平均值。当P和R接近就也越大,一般会画连接(0,0)和(1,1)的线,线和PRC重合的地方的F1是这条线最大的F1(光滑的情况下),此时的F1对于PRC就好象AUC对于ROC一样。
下面是两个场景:
1. 地震的预测
对于地震的预测,我们希望的是RECALL非常高,也就是说每次地震我们都希望预测出来。这个时候我们可以牺牲PRECISION。情愿发出1000次警报,把10次地震都预测正确了;也不要预测100次对了8次漏了两次。
2. 嫌疑人定罪
基于不错怪一个好人的原则,对于嫌疑人的定罪我们希望是非常准确的。及时有时候放过了一些罪犯(recall低),但也是值得的。
对于分类器来说,本质上是给一个概率,此时,我们再选择一个CUTOFF点(阀值),高于这个点的判正,低于的判负。那么这个点的选择就需要结合你的具体场景去选择。反过来,场景会决定训练模型时的标准,比如第一个场景中,我们就只看RECALL=99.9999%(地震全中)时的PRECISION,其他指标就变得没有了意义。
因为PRC会看整体的准确率,所以如果你侧重总体的准确率,确实应该看PRC。不过对于不均匀问题,看总体准确率的话,模型会被多数类“带走”。而ROC则是分别在两个类里看准确率,所以不会被“带走”,会比较“照顾”少数类。所以重点那个指标好,在于你的侧重点,是总体准确率重要,还是对少数类能够比较好地识别重要。
参考:
https://www.zhihu.com/question/30643044/answer/48955833
相关文章推荐
- R语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错
- 机器学习分类器模型评价指标
- 二类分类问题评价指标
- r语言怎么做ROC曲线
- 分类模型的评价之AUC
- SQLite操作
- 重新配置android开发环境(由32位到64位)
- eclipse自动补全的设置
- 数据结构(8)线性表之静态链表
- 日志搜集、过滤及推送处理框架logstash及fluentd总结
- backbone的view代码
- Silverlight 错误解决方案
- Git总结
- oracle分区提高篇
- [Bundling and Minification ] 三、缩小
- java.lang.OutOfMemoryError异常解决方法
- TCP/IP入门(3)---运输层 据说是面试最主要的部分~~~
- [ML of Andrew Ng]Week 4 Neural Networks: Representation
- 深入 String 类
- 创建表