异常检测的评价指标:ROCAUC等【tips】

准确率Precision&召回率Recall

from sklearn.metrics import precision_recall_curve
precision, recall, thresholds = precision_recall_curve(gt_mask.flatten(), scores.flatten())

混淆矩阵:

实际预测
TP(真正类)FN(假负类)
FP(假正类)TN(真负类)

precision=tp / (tp + fp):准确率,正类预测为正类占所有预测正类的比例。

recall=tp / (tp + fn):召回率,也就是tpr,正类预测为正类占所有正类的比例。

所以二者不可能都高,需要找一个平衡点,找平衡点需要做PRC曲线,横轴recall,纵轴precision。F1就是这个常见的平衡点指标(2*precision*recall/(precision+recall))。

ROCAUC

roc

from sklearn.metrics import roc_curve
fpr, tpr, thresholds = roc_curve(gt_list, img_scores)

参数:标签,评价分数(也就是每个样本预测为正的概率),正样本标签(默认是0)。返回结果:fpr,tpr,thresholds。

fpr:负正类率,负类预测为正类占所有负类的比例。

tpr:真正类率,正类预测为正类占所有正类的比例。

threshold:阈值

auc

from sklearn.metrics import roc_auc_score
img_roc_auc = roc_auc_score(gt_list, img_scores)

结果是怎么来的

threshold是每个样本的评价分数,也就是每个样本预测为正的概率值,概率值有了,那这个样本是把他定为正样本还是负样本呢。所以规定,当threshold取其中一个样本的概率值时,大于这个threshold的概率值定义为正类,小于则定义为负类,由此稍微推理一下,threshold越小,fpr,tpr也越大,threshold越大,fpr,tpr越小。这样,将所有样本的概率值都做一遍阈值,以fpr横轴,tpr竖轴的曲线得以绘制,即roc曲线。

auc就是roc曲线下的面积,由上述所知,auc当然越接近1越好咯。

参考

ROC曲线与AUC计算总结_饕餮争锋的博客-CSDN博客_roc曲线与aucsklearn中绘制 ROC 曲线的函数 roc_curve() 解释_Stephen__W的博客-CSDN博客_roc_curveROC曲线和AUC面积理解_Microstrong0305的博客-CSDN博客_auc曲线AUC详解_ac7的博客-CSDN博客_auc详解

其他评价指标

参考

precision,recall and precision-recall curve_tangzy_的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值