【机器学习】混淆矩阵(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 等。

给你一套"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。"

相关推荐
陈广亮15 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬16 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia16 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区16 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两19 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪19 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
strayCat2325519 小时前
Clawdbot 源码解读 7: 扩展机制
人工智能·开源
王鑫星19 小时前
SWE-bench 首次突破 80%:Claude Opus 4.5 发布,Anthropic 的野心不止于写代码
人工智能
lnix19 小时前
当“大龙虾”养在本地:我们离“反SaaS”的AI未来还有多远?
人工智能·aigc