从前慢

PR 曲线与 ROC

初学机器学习,看到 P-R 曲线(查准率-查全率曲线)和 ROC(Receiver Operating Characteristic),总感觉有些迷惑,这两个东西都在讲根据综合评定一个算法的准确和召回,不是在讲同一个事情么,有什么区别?为什么要搞出来两个曲线呢?

混淆矩阵

要理解 ROC 与 P-R 曲线,必须要先知道一个混淆矩阵的概念。

In the field of machine learning and specifically the problem of statistical classification, a confusion matrix, also known as an error matrix,[4] is a specific table layout that allows visualization of the performance of an algorithm, typically a supervised learning one (in unsupervised learning it is usually called a matching matrix). Each column of the matrix represents the instances in a predicted class while each row represents the instances in an actual class (or vice versa).

这是 Wikipedia 上对混淆矩阵的定义,看得可能有点晕,我们看个表你就知道了:

预测为正例 预测为反例
真实正例 TP(真正例) FN(假反例)
真实反例 FP(假正例) TN(真反例)

混淆矩阵其实就是真实的正反例跟预测的正反例两个集合之间的关系。

PR 曲线与 ROC 的定义

知道了混淆矩阵,再让我们来看一下查准率 P 与查全率 R,查准率是指预测模型的结果当中,有多少正例是预测对的,查全率是指,在真实结果当中的正例中,有多少被你模型预测出来了。用公式表示即:

$$P = {TP \over TP + FP}$$

$$R = {TP \over TP + FN}$$

查全率和查准率是一对矛盾的个体,一般来说,查准率高则查全率会低,查全率高则查准率会低。为了让我们综合地来考量一个模型的好坏,就有了 P-R 曲线。

P-R曲线

这里横轴是查全率,纵轴是查准率,而 P-R 曲线就是一个向右上方凸出的曲线。

而 ROC 曲线是什么呢,ROC 也是坐标轴中的一个根线,只是横轴和纵轴不一样。ROC 的纵轴是”真正例率”(Ture Positive Rate 简称 TPR),横轴是”假正确率”(False Positive Rate 简称 FPR)。

$$TPR = {TP \over TP + FN}$$

$$FPR = {FP \over TN + FP}$$

简单来说,TPR 就是预测的正例在真实正例的比例,跟查准率一样。而 FPR 就是预测的正例在真实负例的比例。所以 ROC 曲线就跟 P-R 曲线掉了个个。

ROC 曲线

PR 曲线与 ROC 的关系

P-R 曲线与 ROC 曲线都是用来评估模型好坏的。而且,对于一个给定的包含正负样本的数据集,ROC曲线和P-R曲线存在一一对应的关系,也就是说。如果查全率不等于0,二者对应了完全一致的混淆矩阵。我们可以将ROC曲线转化为PR曲线,反之亦然。

因为平时在评估回归模型的时候,我们经常用 AUC (ROC 曲线下的面积)来评估,所以ROC 曲线对我们来说可能更常见一些。


参考资料: