【机器学习】混淆矩阵(confusion matrix)TP TN FP FN - 指南

positive是攻击 negative是正常
这四个是**混淆矩阵(confusion matrix)**里的核心计数,衡量分类结果和真实标签的对应关系。

二分类(只有“正/负”两类)时

真实\预测预测为正(attack)预测为负(normal)
真实为正(attack)TP(True Positive,真正)模型把攻击判成攻击FN(False Negative,假负/漏报)模型把攻击判成正常
真实为负(normal)FP(False Positive,假正/误报)模型把正常判成攻击TN(True Negative,真负)模型把正常判成正常
  • TP:抓到的真攻击数
  • TN:放过的真正常数
  • FP(误报):正常被当成攻击
  • FN(漏报):攻击被当成正常

常见派生指标(供你对照前面公式):

  • Precision = TP / (TP + FP)(报出来的有多少真攻击)
  • Recall = TP / (TP + FN)(真攻击有多少被抓到)
  • FPR = FP / (FP + TN)(正常流量被误判的比例)
  • Accuracy = (TP + TN) / (TP + FP + TN + FN)

谁要就是注意:“正类(Positive)”先定义清楚。在安全场景里,通常把攻击视为正类、正常为负类。

多分类(多个攻击类型)时

  • 某一类 (k)为“正类”,把其他所有类当作“负类”,同样能数出 (TP_k, FP_k, TN_k, FN_k)。
  • 逐类算 Precision/Recall/F1,再做宏平均(macro):对所有类的指标取算术平均,让每个类同等权重。

小例子(入侵检测)

  • 100 个样本里有 20 个攻击、80 个正常。

  • 模型抓到 18 个攻击(其中 2 个其实是正常),漏掉 2 个攻击;把 78 个正常判对。

    • TP=18(真攻判攻)
    • FP=2(正常判攻 → 误报)
    • FN=2(攻判正常 → 漏报)
    • TN=78(正常判正常)

这样你就能把任何结果表转换成 TP/TN/FP/FN,再按需要算 accuracy、macro_f1、macro_precision、macro_recall、macro_fpr 等。
f
给你一套“1 张图 + 3 口诀 + 4 步法”,快速吃透并记住 TP/TN/FP/FN 及常用指标。

1 张图(固定方向)

行=真实列=预测刻在脑子里

                预测 Positive   预测 Negative
真实 Positive      TP(真正)         FN(漏报)
真实 Negative      FP(误报)         TN(真负)

只要记住:P 行列是“正(Positive)”

  • 落在“真实正 且 预测正”→ True Positive(TP)
  • “真实正 但 预测负”→ False Negative(FN,漏掉了正)
  • “真实负 但 预测正”→ False Positive(FP,误把负当正)
  • “真实负 且 预测负”→ True Negative(TN)

3 口诀(安在安全场景更好记)

  1. “报出来的准不准——看 Precision(纯度)”
    ( \textbf{Precision} = \frac{TP}{TP+FP} )
    想象 SOC 告警列表:越少 FP,越“纯”

  2. “该抓的抓到了没——看 Recall(覆盖)”
    ( \textbf{Recall} = \frac{TP}{TP+FN} )
    真攻击里有多少被抓到;越少 FN,越不漏

  3. “正常流量被冤枉没——看 FPR(误报率)”
    ( \textbf{FPR} = \frac{FP}{FP+TN} )
    在所有真实正常里被误判为攻的比例;边缘/线上最敏感

F1(调和平均)= 在“纯度 vs 覆盖”之间求平衡:
( \textbf{F1} = 2\cdot\frac{\text{Prec}\cdot\text{Rec}}{\text{Prec}+\text{Rec}} )

4 步法(任何题目 10 秒内算清)

Step 1:画 2×2 表(行真列预)。
Step 2:把样本逐条或按数量填入四格 → 得到 TP/FP/FN/TN。
Step 3:按需代入公式:

  • Accuracy = (TP+TN)/(TP+FP+FN+TN)
  • Precision/Recall/FPR/F1(如上)
    Step 4:一句解读:
  • Precision 高=告警“干净”(少 FP)
  • Recall 高=“不漏”(少 FN)
  • FPR 低=“少扰民”
  • Accuracy只做全局参考,类别不平衡时别当真

小联想(更好记)

  • FP = False Positive = 误报:把例“判成正”(P)→ 叫假正
  • FN = False Negative = 漏报:把例“判成负”(N)→ 叫假负
  • TP/TN 是对的(True),FP/FN 是错的(False)。
  • 英文快记:P=Purity(纯度)R=Recall(召回/覆盖)FPR=False alarm rate

什么时候看哪个?

  • 线上/边缘:优先 FPR(误报率) 低延迟低
  • 安全漏不起:优先 Recall 高(宁可多看几条)。
  • 综合对比:看 F1(或 macro-F1);多分类用 macro让每类同等权重。

5 秒心法(背下来就行)

“行真列预,TPTN 对;FP 误报,FN 漏报;纯度看 P,覆盖看 R,打平看 F1,扰民看 FPR。”

posted @ 2025-11-07 15:23  clnchanpin  阅读(339)  评论(0)    收藏  举报