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 口诀(安在安全场景更好记)
-
"报出来的准不准------看 Precision(纯度)"
( \textbf{Precision} = \frac{TP}{TP+FP} )
想象 SOC 告警列表:越少 FP,越"纯"。
-
"该抓的抓到了没------看 Recall(覆盖)"
( \textbf{Recall} = \frac{TP}{TP+FN} )
真攻击里有多少被抓到;越少 FN,越不漏。
-
"正常流量被冤枉没------看 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。"