公式与约定 · Definitions

公式与约定

本站是教学用的计算工具,评估指标没有法规条文或「官方原文」可以引用。公式采用通行的数学定义;定义没有规定、各家做法不一的地方(比如分母为 0),下面逐条写明本站怎么处理,并标为「本站约定」。

01

公式一览

二分类里 TP、FP、FN、TN 分别是真正例、假正例(误报)、假负例(漏报)、真负例。混淆矩阵的行是真实类别,列是预测类别。

指标定义含义
准确率 Accuracy(TP + TN) / (TP + FP + FN + TN)全部样本中判对的比例
精确率 PrecisionTP / (TP + FP)判为正的样本中真为正的比例
召回率 Recall(TPR)TP / (TP + FN)真为正的样本中被判为正的比例
特异度 Specificity(TNR)TN / (TN + FP)真为负的样本中被判为负的比例
假正率 FPRFP / (FP + TN) = 1 − 特异度真为负的样本中被误判为正的比例
阴性预测值 NPVTN / (TN + FN)判为负的样本中真为负的比例
F12TP / (2TP + FP + FN) = 2PR / (P + R)精确率 P 与召回率 R 的调和平均
(1 + β²)TP / ((1 + β²)TP + β²FN + FP)β > 1 偏向召回率,β < 1 偏向精确率
平衡准确率(召回率 + 特异度) / 2两类各自判对比例的平均
MCC(TP·TN − FP·FN) / √((TP+FP)(TP+FN)(TN+FP)(TN+FN))预测与真实标签的相关系数,−1 到 1
AUCROC 曲线下面积(梯形法)随机一对正负样本排对的概率,同分记 0.5
APΣ (Rₖ − Rₖ₋₁) · PₖPR 曲线的阶梯面积,不插值
宏平均(1/k) Σ 各类指标每个类别同等权重
加权平均Σ 支持数ᵢ × 指标ᵢ / Σ 支持数按真实样本数加权
微平均先加总各类 TP、FP、FN 再算单标签多分类时等于准确率
MAEΣ|yᵢ − ŷᵢ| / n平均绝对误差
MSEΣ(yᵢ − ŷᵢ)² / n均方误差
RMSE√MSE均方根误差
MAPE(100% / m) Σ |(yᵢ − ŷᵢ) / yᵢ|(只算 yᵢ ≠ 0)平均绝对百分比误差
1 − Σ(yᵢ − ŷᵢ)² / Σ(yᵢ − ȳ)²相对「一直猜平均值」的改进
02

本站约定

以下 12 条都是本站归纳的计算口径,不是任何标准或教材的原文。同一个数据在其他工具里得到不同结果时,先对照这里。

  1. 分母为 0 记为「无定义」本站约定

    任何指标只要分母为 0(例如模型一个正类都没判出时的精确率、数据里没有负样本时的特异度),结果记为「无定义」,不自动换成 0 或 1。常见的机器学习库在这种情况下多数返回 0 并给出警告,所以你在别处看到的数字可能是 0,这里看到的是「无定义」,两者说的是同一件事。

  2. F1 用计数形式计算本站约定

    F1 按 2TP / (2TP + FP + FN) 计算,与「精确率和召回率的调和平均」在两者都有定义时完全相等;好处是精确率无定义(TP + FP = 0)而数据里有正样本时,F1 仍然能算出 0。只有 TP、FP、FN 全为 0 时 F1 才无定义。Fβ 同理。

  3. MCC 分母为 0 时无定义本站约定

    混淆矩阵只要有一整行或一整列为 0(例如模型全部判为正),MCC 的分母为 0,本站记为无定义,而不是 0。

  4. 分数大于或等于阈值判为正类本站约定

    拖动阈值时,分数 ≥ 阈值的样本判为正类。分数恰好等于阈值的样本归入正类,这一点会影响分数有重复值时的混淆矩阵。

  5. 同分样本一起翻转本站约定

    画 ROC 与 PR 曲线时,把所有不同的分数从高到低依次当作阈值;分数相同的样本在同一步一起从负类变成正类。因此同分的正负样本在 ROC 上表现为一段斜线,这段斜线下的面积恰好等于「同分算半对」。

  6. AUC 用梯形法本站约定

    AUC 把 ROC 曲线上相邻两点连成直线,求折线下面积(梯形法)。它与「随机抽一个正样本和一个负样本,正样本分数更高的概率(同分记 0.5)」在数学上相等,测试里两种算法逐一核对。没有正样本或没有负样本时 AUC 无定义。

  7. AP 用阶梯求和,不插值本站约定

    平均精确率 AP = Σ(Rₖ − Rₖ₋₁)·Pₖ,k 按阈值从高到低,R₀ = 0。PR 曲线按同样的阶梯画出。有些资料用「插值」的 AP(取右侧最大精确率),数值会偏高,本站不用。没有正样本时 AP 无定义。

  8. 多分类平均里无定义项按 0 计本站约定

    宏平均与加权平均需要每个类别都有一个数。某一类的精确率或召回率无定义时,本站按 0 计入平均,并在结果下方写明是哪一类的哪一项。微平均把所有类别的 TP、FP、FN 先加总再算,单标签多分类时微平均精确率、召回率、F1 都等于准确率。

  9. MAPE 跳过真实值为 0 的样本本站约定

    相对误差要除以真实值,真实值为 0 时算不出。本站计算 MAPE 时跳过这些样本,并显示跳过了几个;如果全部被跳过,MAPE 无定义。真实值接近 0 时 MAPE 会被放得很大,这是这个指标本身的性质。

  10. R² 在真实值全相同时无定义本站约定

    R² = 1 − Σ(yᵢ − ŷᵢ)² / Σ(yᵢ − ȳ)²。真实值全部相同时分母为 0,本站记为无定义。R² 可以是负数,表示模型还不如一直猜真实值的平均数。

  11. 标签的写法本站约定

    二分类的真实标签认 1 / 0,也认 正 / 负、是 / 否、true / false、yes / no,−1 视为负类。分数可以是概率,也可以是任意实数(例如模型的原始打分),只要越大越倾向正类。带 % 的分数会除以 100。第一行不像数据时当作表头跳过;以 # 开头的行视为注释。

  12. 显示精度本站约定

    指标显示 4 位小数,代入式里的中间量最多保留 6 位小数。计算过程全程使用双精度浮点数,只在显示时四舍五入。

03

正确性怎么核对

没有官方原文可对照,正确性靠测试。页面、交互和测试共用同一份计算代码,每次改动计算代码都要重新通过以下检查:

  1. 手算样例:TP 15、FP 45、FN 5、TN 935 这组数(笔记里的例子)的准确率 0.95、精确率 0.25、召回率 0.75、F1 0.375、特异度 935/980、MCC 13800/√(60×20×980×940),逐项与手算分数比对。
  2. 边界:全对、全错、全部判正、全部判负、没有正样本、没有负样本、样本数为 0,每种情况下哪些指标有值、哪些无定义,逐项断言。
  3. F1 与「精确率和召回率的调和平均」在 500 组随机混淆矩阵上相差小于 10⁻¹²;Fβ 在 β = 1 时等于 F1;平衡准确率等于召回率与特异度的平均。
  4. AUC:梯形法与「正负样本两两比较(同分记 0.5)」在 300 组随机数据(含大量同分)上相差小于 10⁻¹²;首页样例 AUC = 78/96。完美排序 AUC = 1,完全反序 AUC = 0。
  5. AP:用另写的逐样本参考实现核对;完美排序 AP = 1;所有分数相同时 AP 等于正类占比。
  6. 阈值:阈值取每一个不同分数时的混淆矩阵,与 ROC/PR 曲线上对应点的 TP、FP 完全一致;阈值高于所有分数时全部判负。
  7. 多分类:由标签对生成的混淆矩阵各行之和等于每类样本数;微平均三项都等于准确率;宏平均与加权平均与逐类手算一致;无定义项被列出并按 0 计入。
  8. 回归:MAE、MSE、RMSE、R² 与手算样例一致;预测全对时误差为 0、R² 为 1;一直预测平均数时 R² 为 0;MAPE 跳过真实值为 0 的样本并正确计数。
  9. 解析:表头、注释行、中文逗号、制表符、百分号、非法行的报错与行号,都有测试。

发现某个结果和你的手算不一致,欢迎留言,附上输入数据即可。

04

术语出处(延伸阅读,非依据)

  • MCC 以 B. W. Matthews 命名,见其 1975 年发表于 Biochimica et Biophysica Acta 的论文(比较 T4 噬菌体溶菌酶二级结构的预测与观测)。
  • ROC 分析在机器学习中的用法,可参考 T. Fawcett《An introduction to ROC analysis》,Pattern Recognition Letters,2006 年第 27 卷。
  • F 值(F-measure)源自信息检索领域,常引 C. J. van Rijsbergen 1979 年的著作《Information Retrieval》。

以上只说明术语来源,本站的公式和约定以本页为准,更新于 2026-09-22。