您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  模型评价