来源:https://www.bilibili.com/video/BV1wz4y197LU/?spm_id_from=333.337.search-card.all.click&vd_source=7a1a0bc74158c6993c7355c5490fc600
在二分类问题下,我们的模型通常会输出一个 概率值,通过判断 概率值 和 阈值threshold 的大小,来判断一个样本是正例还是负例。如下图所示。
通过取 (0, 1) 的不同阈值threshold,我们可以得到许多不同的混淆矩阵
那么,有一个问题:
有的,答案就是:
如下图是 ROC 曲线的示例:
两个概念:
1.TPR (True Positive Rate): TPR = (TP) / (TP + FN) 意思是:真正例占所有正例的比率,也就是 recall 召回率
2.FPR (False Positive Rate): FPR = (FP) / (FP + TN) 意思是:假正例占所有负例的比率,可以理解为出错的概率(似乎没有其它转有名词)
每一个混淆矩阵,我们都可以求出一对 (TPR, FPR)。当我们有很多个混淆矩阵时,我们就有很多对 (TPR, FPR),那么此时就可以在二维平面上画下如下图的曲线。
把这个 ROC 曲线的计算方法放到之前的 “汉堡分类” 问题上,如下是计算后得到的 ROC 曲线
TPR 可以理解为 “正确率”
FPR 可以理解为 “错误率”
因此,越好的分类器,TPR越高,FPR越低
在下图中可以看到 A B 两条 ROC 曲线,ROC曲线越靠近左上角的分类器越好
如下图,分类器B的 ROC曲线更加靠近左上角,因此分类器B是更好的分类器
如果使用数值而不是图片来表示 性能,那么我们可以使用 ROC 曲线和横轴之间的面积来表示 分类器性能
如下图,棕色AUC 和 蓝色AUC 分别表示 棕色曲线 和 蓝色曲线 和横轴之间的面积
如果 N 分类,怎么计算 AUC 呢?
这里有 macro宏观AUC 和 micro微观AUC
macro宏观AUC:针对每个类别求一个 ROC 曲线,求对应的 AUC 值,随后针对所有类别的 AUC 值求某种平均
micro微观AUC:假设概率预测结果如下图上表所示 (样本1是类别C1的概率是 P(1,1) …) (橙色表示样本1的真实类别)
我们可以把下图上表转换成下图下表
下图下表看起来就是一个二分类问题
我们可以使用下图下表来获取一个新的针对整个模型的 ROC 曲线以及相应的 AUC 值