ROC曲线

这个是针对二分类的

基础概念

从分类的结果来看,有四种情况
真阳性(True positive (TP)):预测为阳性,实际为阳性
假阳性(False positive (FP)):预测为阳性,实际为阴性
假阴性(False negative (FN)):预测为阴性,实际为阳性
真阴性(True negative (TN)):预测为阴性,实际为阴性

这4个就构成了一个混淆矩阵
ROC曲线_第1张图片
真阳性率 (TPR, true positive rate)
又称:命中率 (hit rate)、敏感度(sensitivity)、召回率(recall)
T P R = T P P = T P T P + F N TPR=\frac{TP}{P}=\frac{TP}{TP+FN} TPR=PTP=TP+FNTP

伪阳性率(FPR, false positive rate)
又称:错误命中率,假警报率 (false alarm rate)
F P R = F P N = F P F P + T N FPR=\frac{FP}{N}=\frac{FP}{FP+TN} FPR=NFP=FP+TNFP
真阴性率 (TNR,true negative rate)
又称:特异度 (SPC, specificity),selectivity
T N R = T N N = T N T N + F P TNR=\frac{TN}{N}=\frac{TN}{TN+FP} TNR=NTN=TN+FPTN
阳性预测值 (PPV,positive predictive value)
又称精确率(precision)
P P V = T P T P + F P PPV=\frac{TP}{TP+FP} PPV=TP+FPTP

ROC空间

横轴为伪阳性率(FPR),纵轴为真阳性率(TPR)

我们的二分类模型最后输出的是一个概率
给定一个阈值,就可以分为阳性或者是阴性(比如常见的0.5)
通过调整阈值,就可以在ROC空间上绘制多个点了

有几个特别的点
(0,0):FP,TP都为0,即所有样本预测为阴性
(1,1):FN,TN都为0,即所有样本预测为阳性
(0,1):FP,FN都为0,即预测都是对的

(0,0)到(1,1)的线段:随机猜
越接近左上角越好,越接近右下角越差
ROC曲线_第2张图片

ROC曲线

将同一模型每个阈值的(FPR, TPR)坐标都画在ROC空间里,就成为特定模型的ROC曲线
ROC曲线_第3张图片
可以调用

from sklearn import metrics
fpr, tpr, thresholds = metrics.roc_curve

roc_curve简单来说就是根据阈值算出伪阳性率和真阳性率

其中有一个参数drop_intermediate
可以去除掉一些水平线段的点
大致这种感觉
因为其实重要的是拐点,这个3个点,可以压缩成2个点
ROC曲线_第4张图片

AUC

曲线下面积

一种计算方式是用排序后,计算梯形(类似定积分定义)
ROC曲线_第5张图片

你可能感兴趣的:(深度学习,机器学习,分类,深度学习)