目录

  1. 概述
  2. 准确率
  3. 精确率(查准率)和召回率(查全率)
  4. $F_1$ 值和 $F_{\beta}$ 值
  5. ROC 曲线及其 AUC 值
  6. 附录

概述

大部分的机器学习指标(准确率、查准率、召回率、F1 值、ROC 曲线的 AUC 值)都可以直接或者间接的通过混淆矩阵进行计算。对于一个简单的二分类任务,可以得到下图的混淆矩阵(Confusion Matrix)


Actual class
positive classnegative class
Predicted classpositive classTrue Positive(TP)False Positive(FP)
negative classFalse Negative(FN)True Negative(TN)

❓ 什么是混淆矩阵?

混淆矩阵中的行数据表示数据在模型上的预测类别(predicted class/predicted condition),列表示数据的真实类别(actual class/true condition)。在看混淆矩阵时,要分清样本的真是类别和预测类别,有些地方的行列表示可能和这里不一致。

通过混淆矩阵,可以很直观地看清一个模型在各个类别(positive 和 negative)上分类的情况

真实类别为positive,模型预测的类别也为positive
FP预测为positive,但真实类别为negative,真实类别和预测类别不一致
FN预测为negative,但真实类别为positive,真实类别和预测类别不一致
TN真实类别为negative,模型预测的类别也为negative

TP、FP、TN、FN 第二个字母表示样本被预测的类别,第一个字母表示样本的预测类别与真实类别是否一致

准确率

准确率表示预测正确的样本(TP 和 TN)在所有样本(all data)中占的比例,在数据集不平衡时,准确率将不能很好地表示模型的性能,此时应该选择其他指标

准确率(Accuracy)计算公式如下:

$$
\text { accuracy }=\frac{T P+T N}{T P+T N+F P+F N}=\frac{T P+T N}{\text { all data }}
$$

精确率(查准率)和召回率(查全率)

positive class 的精确率表示在预测为 positive 的样本中真实类别为 positive 的样本所占比例;
positive class 的召回率表示在真实为 positive 的样本中模型成功预测出的样本所占比例

positive class 的精确率 (precision) 计算公式如下:

$$
\text { precision }=\frac{T P}{T P+F P}=\frac{T P}{\text { 预测为 positive的样本 }}
$$

positive class 的召回率 (recall) 计算公式如下:

$$
\text { recall }=\frac{T P}{T P+F N}=\frac{T P}{\text { 真实为 positive的样本 }}
$$

positive class 的召回率只和真实为 positive 的样本相关,与真实为 negative 的样本无关;而精确率则受到两类样本的影响。

$F_1$ 值和 $F_{\beta}$ 值

$F_{1}$ 值的计算公式如下:

$$
F_{1}=\frac{2}{\frac{1}{\text { precision }}+\frac{1}{\text { recall }}}=\frac{2 \cdot \text { precision } \cdot \text { recall }}{\text { precision }+\text { recall }}
$$

$F_{1}$ 值就是精确率和召回率的调和平均值, $F_{1}$ 值认为精确率和召回率一样重要。

$F_{\beta}$ 值的计算公式如下:

$$
F_{\beta}=\frac{1+\beta^{2}}{\frac{1}{\text { precision }}+\frac{\beta^{2}}{\text { recall }}}=\frac{\left(1+\beta^{2}\right) \cdot \text { precision } \cdot \text { recall }}{\beta^{2} \cdot \text { precision }+\text { recall }}
$$

在 $\beta=1$ 时,$F_{\beta}$ 就是 $F_1$,此时 $F_\beta$ 认为 精确率和召回率一样重要,当 $\beta>1$ 时, $F_{\beta}$ 认为召回率更重要,当 $0<\beta<1$ 时,$F_{\beta}$ 认为精确率更重要

ROC 曲线及其 AUC 值

AUC 全称为 Area Under Curve,表示一条曲线下面的面积,ROC 曲线的 AUC 值可以用来对模型进行评价

ROC 曲线的纵坐标 True Positive Rate (TPR) 在数值上就等于 positive class 的 recall, 记作 recall positive, 横坐标 False
Positive Rate (FPR) 在数值上等于(1-negative class 的 recall), 记作 $(1$ - recall negative $)$ 如下所示:

$$
\begin{aligned}
\text { TPR } &=\frac{T P}{T P+F N} \
&=\text { recall }_{\text {positive }}
\end{aligned}
$$

$$
\begin{aligned}
\mathrm{FPR} &=\frac{F P}{F P+T N}=\frac{F P+T N-T N}{F P+T N} \
&=1-\frac{T N}{F P+T N} \
&=1-\text { recall }_{\text {negative }}
\end{aligned}
$$

通过对分类阈值 $\theta$ (默认 0.5)从大到小或者从小到大依次取值,我们可以得到很多组 TPR 和 FPR 的值,将其在图像中依次画出就可以得到一条 ROC 曲线,阈值 $\theta$ 取值范围为[0,1]。

ROC 曲线在图像上越接近左上角(0,1)模型越好,即 ROC 曲线下面与横轴围成的面积(AUC 值)越大越好。直观上理解,纵坐标 TPR 就是 $recall_{positive}$ 值,横坐标 FPR 就是$(1-recall_{negative})$,前者越大越好,后者整体越小越好,在图像上表示就是曲线越接近左上角(0,1)坐标越好。

附录

混淆矩阵、准确率、精确率/查准率、召回率/查全率、F1 值、ROC 曲线的 AUC 值