TP, TN, FP, FN

计数指标 说明
TP 预测为正,且预测对了
TN 预测为负,且预测对了
FP 预测为正,但预测错了,即 错报
FN 预测为负,但预测错了,即 漏报

Precision, Recall

既要查得准(Precision),又要查得全(Recall)

注意:以下计算主要是针对 二分类问题。当用在 多分类问题 时,需要注意是「求各个类别的指标的平均值」(Mean),还是「忽略具体类别,将样本混杂起来再求该指标」(Global)。

Accuracy(准确率)

$$ \text{Accuracy} = \frac{\text{T}}{\text{All}} = \frac {\text{TP} + \text{TN}} {\text{TP} + \text{TN} + \text{FP} + \text{FN}} $$

  • 准确率(Accuracy):所有样本中判断正确的比例。

Precision(精确率)

$$ \text{Precision} = \frac{\text{TP}}{\text{P}} = \frac {TP} {TP + FP} $$

  • 精确率(Precision):判断为正的样本中,实际为正的比例,又称 查准率

Recall(召回率)

$$ \text{Recall} = \frac {\text{TP}} {\text{TP} + \text{FN}} $$

  • 召回率(Recall):实际为正的样本中,判断为正的比例,又称 查全率

F-Score(F 值)

根据公式

$$ \frac{1}{\text{P}} + \frac{\beta^2}{\text{R}} = \frac{1 + \beta^2}{F_\beta} $$

可以推导出

$$ F_\beta = (1 + \beta^2) \frac{\text{P} \cdot \text{R}}{\beta^2 \cdot \text{P} + \text{R}} $$

代入不同的 $\beta$ 值,可以得到不同的 F-Score(对 Precision 与 Recall 的要求不同,$\beta$ 越高,对 Recall 的要求越高),如:

$$ \begin{aligned} F_1 &= 2 \times \frac {\text{P} \cdot \text{R}} {\text{P} + \text{R}} \\ F_2 &= 5 \times \frac {\text{P} \cdot \text{R}} {4\text{P} + \text{R}} \\ F_{0.5} &= 1.25 \times \frac {\text{P} \cdot \text{R}} {0.25\text{P} + \text{R}} \\ \end{aligned} $$

  • F 值(F-Score)根据 Precision 和 Recall 进行计算,是出于兼顾两者的考虑。
  • 最常用 F1-Score(即 $\beta = 1$),如果 $\beta$ 大于 1,则我们更关心 Recall,否则更关心 Precision

P-R 曲线

P-R Curve

$$ \text{P-R Curve: } \begin{cases} x = \text{Recall} \\ y = \text{Precision} \end{cases} $$

  • PR 曲线(Precision-Recall Curve):同时考虑了精确率、召回率。
  • 一般设定一个 阈值(如 0.5) 来判断样本为 Positive 还是 Negative,阈值越高,Recall 越高,Precision 越低

TPR, FPR, ROC, AUC

既要查得全(TPR=Recall),又要少把负的当正的(FPR)

TPR(真阳性率)

$$ \text{TPR} = \text{Recall} = \frac {\text{TP}} {\text{TP} + \text{FN}} $$

  • 真阳性率(True Positive Rate,TPR):实际为正 的样本中,判断为正的比例,又称 通过率

FPR(伪阳性率)

$$ \text{FPR} = \frac {\text{FP}} {\text{FP} + \text{TN}} $$

  • 伪阳性率(False Positive Rate,FPR):实际为负的样本中,判断为正的比例,又称 误检率

ROC 曲线

ROC Curve

$$ \text{ROC Curve: } \begin{cases} x = \text{FPR} \\ y = \text{TPR} \end{cases} $$

  • ROC 曲线(Receiver Operating Characteristic Curve,接收者操作特征曲线):同时考虑了误检率、通过率。
  • 一般设定一个 阈值(如 0.5) 来判断样本为 Positive 还是 Negative,阈值越高,FPR 和 TPR 都越高

AUC

$$ \text{AUC} = \int_0^1(\text{TPR}) d(\text{FPR}) $$

  • AUC(Area Under the ROC Curve,ROC 曲线下的面积):
  • 越高越好,随机猜测的 AUC 为 0.5

PR曲线 vs ROC曲线

  • PR 曲线横轴召回率(查得全),纵轴 精确率(查得准);ROC 曲线横轴 误检率(错得少),纵轴召回率。二者只差了一个维度。
  • 普通场景下二者皆可选(可能 PR 曲线用得多一些);
  • PR 曲线更关注精确率,ROC 曲线更关心误检率。在 更关注误检率(例如人脸识别)的场景下,我们优先选 ROC 曲线。
  • 正负样本分布不均衡或发生骤变时,
    • ROC 曲线 同时兼顾了正负样本,横轴误检率卡死的情况下,纵轴召回率比较稳定;
    • PR 曲线 只关注正样本,横轴召回率卡死的情况下,纵轴精确率变化未知;
    • 因此,如果我们更关心 分布不平衡或改变 的影响,则使用 PR 曲线,否则选 ROC 曲线。

AP, MAP, GAP

在不同Recall、不同类别上的平均精确率(Precision)

AP(单类平均精确率)

$$ \begin{aligned} \text{AP} &= \frac {\sum_{i=n}^n P_i} {m + n} \\ \text{AP@}k &= \frac {\sum_{i=1}^k P_i} {\min(m, k)} \\ \text{AP@}k &= \sum_i (R_i - R_{i-1})P_i \end{aligned} $$

其中 $m$ 是正样本数量,$n$ 是预测为正的样本的数量,$i$ 为索引的阈值

MAP(多类平均精确率)

$$ \begin{aligned} \text{MAP} &= \frac {\sum_{j=1}^C ap_j} {C} \\ \text{MAP@}k &= \frac {\sum_{j=1}^C ap_j@k} {C} \end{aligned} $$

其中 $C$ 是类别数量。

  • 多类别平均精确率(Mean Average Precision,MAP)表示 在多分类的场景下,各个类别的 AP 的均值

GAP(全局平均精确率)

  • 全局平均精确率(Global Average Precision,GAP)用于 Multi-label 分类,即忽略样本的具体类别之后计算的 AP
  • Reference

Sensitivity, Specificity

让Positive尽量通过,让Negative尽量通不过

Sensitivity(灵敏度)

$$ \text{Sensitivity} = \text{TPR} = \text{Recall} = \frac {\text{TP}} {\text{TP} + \text{FN}} $$

Specificity(特异度)

$$ \text{Specificity} = \text{TNR} = \frac{\text{TN}} {\text{TN} + \text{FP}} $$

参考