先修:18 告警与分类计数;19—20 条件概率与贝叶斯公式;21 期望、方差与相关性;22 抽样误差界
值班人员最初的困惑是:故障检出99%,为什么收到的告警只有一半是真的?走过前五章,我们会换分母,会计算条件概率,也知道样本比例会波动。现在回到原处,追问更实际的一件事:怎样收集证据,才能让评估结论值得相信?
“公式算对了”只是其中一环。若故障标签不可靠、只核查告警,或者拿同一批记录反复挑选检测器,最后再精确的除法也回答不了原来的问题。本章仍使用原创虚构台账,把一次评估从约定对象到写出结论走完整;所有数字都不是亲测结果。
评估开始以前,先写下要数什么
假设我们要评估某类设备在正常生产期间的检测表现。目标总体必须进一步注明设备范围、运行条件与时间范围;停机维修期间是否包含,也要预先约定。为了延续第18章,每条记录仍是“某台设备的一段五分钟”,同一设备的窗口不重叠,同窗内多次通知只计一次告警。
D表示“这个窗口确有约定范围内的故障”,E表示“检测器在这个窗口发出告警”。故障标签取自事后核查,告警取自系统记录。两份记录应分别保存,再按设备与窗口标识对齐。窗口缺失、标签暂时无法确定的情况,应单列并报告数量,不能悄悄划为健康。
这段约定会限制结论:窗口检出率并不等于独立事故检出率。一次持续十五分钟的故障可占三个窗口,检测器只在最后一个窗口响过,便是三个故障窗口检出一个;若另问“这次事故有没有被发现”,答案却是有。要评估事故层面的及时发现,就须另定事故起止、允许延迟和合并告警的规则,重新计数。
核验标签也需要证据。可以按预先写好的故障定义,交叉检查维修记录、独立传感器和人工复核结果;有分歧时采用事先约定的复审程序。条件允许时,核查者先不看检测器的告警结论,以减少被它引导的可能。告警不能同时充当“有故障”的判据,否则检测器会被自己的答案验证。
尤其要覆盖未告警窗口。只查告警,至多知道被查告警中多少为真,无法数出安静窗口里的漏报。下面为便于完整说明,假定全部10000个窗口都获得了可靠标签。真实工作若只能抽查,须另行记录抽样规则;告警和未告警的抽查比例不同,不能把抽到的行直接当成全体台账。
先冻结检测器,再接收新证据
评估开始前,应固定检测器版本、阈值、输入处理规则,以及时间范围、排除条件和报告指标。调阈值可以在开发数据上做;最终证据则来自未用于这些选择的新数据。1
为什么要划这条界线?假如看完一批测试结果,发现某个阈值分数更高就选它,再把同一批分数当作该阈值的独立证明,选择过程已经利用了这批数据的偶然特点。反复换方案直到满意,并不会让最后一次结果自动独立。
在本例中,一个可执行的安排是:先封存规则,随后收集预定时间段的所有合格窗口,不因中途成绩好看而提前结束。若评估后修改阈值,就记录为新版本,在新的保留数据上再验证。按时间先后划分有助于避免直接使用未来记录,但相邻窗口仍可能相关,时间切开并不是独立性的证明。
这里有两种需要分清的独立性。测试数据未参与方案选择,说的是证据与开发过程的隔离;样本之间相互独立,说的是随机变量的联合分布。前者做到了,后者未必成立,新收集的连续窗口仍可能属于同一次故障。反过来,一批记录即使按iid模型抽来,反复用它挑阈值后,也不能把最终赢家视为预先固定的检测器,直接沿用原来的评估论证。两道条件都要检查。

图1:每一步都留下可复核的记录。箭头是工作顺序,不表示后续数据必然独立或与部署环境完全相同。
四格先相加,再做除法
低基准比例台账如下。TP是真故障且告警,FN是漏报,FP是健康却告警,TN是健康且安静。
| 核查标签 | 告警E | 未告警Eᶜ | 合计 |
|---|---|---|---|
| 故障D | TP=99 | FN=1 | 100 |
| 健康Dᶜ | FP=99 | TN=9801 | 9900 |
| 合计 | 198 | 9802 | 10000 |
先核对四格之和为10000,再写出四个比例:2
检出率=TP/(TP+FN)=99/100=0.99;
假阳性率=FP/(FP+TN)=99/9900=0.01;
精确率=TP/(TP+FP)=99/198=0.5;
准确率=(TP+TN)/10000=9900/10000=0.99。
检出率也叫召回率或灵敏度;精确率是告警中真故障的比例。它们的英文分别是recall、precision,准确率则是accuracy。名称相近,分母不可互换。
每个比值都要求自己的分母大于0:没有真实故障时,召回率无定义;没有健康窗口时,假阳性率无定义;没有告警时,precision无定义;没有记录时,accuracy无定义。不能把这些“无定义”直接当成0%或100%。

图2:颜色标出被纳入分母的格子,格子的大小不表示数量。对同一台账提不同问题,可用的记录数并不都是10000。
给这份成绩加一个最简单的对照:永远不告警。若故障基准比例为π,N个窗口中有Nπ个故障、N(1−π)个健康,这个规则把全部健康判对、全部故障判错,因此
accuracy=N(1−π)/N=1−π。
当π=0.01时,它同样得到99%准确率,却漏掉全部故障,召回率为0;没有告警,precision的分母为0,不能报成100%。这是一个明确反例:若目标是发现罕见故障,99% accuracy可以伴随任务彻底失败。
因此,本次评估应预先写明漏报和核查负担各自如何衡量,并报告它们,而非用一个总分替代目标。四格告诉我们发生了什么;漏掉哪类故障可以接受、多少次无效核查会压垮值班人员,还需要业务条件。
环境改变,哪些数字可以带过去
较高基准比例台账仍有10000个窗口:故障1000个,其中TP=990、FN=10;健康9000个,其中FP=90、TN=8910。检出率仍为0.99,假阳性率仍为0.01,accuracy仍为0.99,precision却是990/1080=11/12。
把这种变化写成第20章的条件概率。令a=P(E|D),b=P(E|Dᶜ),π=P(D),并取0<π<1、P(E)>0。真告警的概率是aπ,误报告警的概率是b(1−π),两种来源互斥且覆盖全部告警,所以
P(E)=aπ+b(1−π),
precision=P(D|E)=aπ/aπ+b(1−π)。
这条式子把需要核查的条件摆到了桌面上。若迁移时a、b保持不变,precision仍可能随π改变。例如取π=0.001,构造100000个窗口:故障100个,TP=99、FN=1;健康99900个,FP=999、TN=98901。于是
precision=99/(99+999)=99/1098=11/122,约9.02%。
故障更少,健康窗口送来的误报就更占上风。把故障样本刻意增多,确实便于研究检出情况,但那份数据直接算出的precision,不代表日常部署的告警组成。
这里“a、b保持不变”是一项迁移假设,不是固定版本就能保证的事实。新设备、不同故障类型和噪声变化,都可能改变两组内的表现。因此,应在新环境分别复核基准比例、检出率和假阳性率。公式可靠地连接这些量,不能替我们保证输入不变。
一万个窗口,究竟支持多精细的结论
第22章讨论过用伯努利样本平均估计比例。现在若要估计目标告警总体中的真故障比例p,样本就必须来自那个告警总体;每次核查所得Xᵢ,真故障记1,否则记0。这里的p是precision,不是全体窗口的故障率或告警率。
取正整数n及ε>0。在X₁至Xₙ独立同分布为Bernoulli(p)的模型下,令p̂=(X₁+…+Xₙ)/n。由第21—22章的结果,3
Var(p̂)=p(1−p)/n≤1/(4n),
P(|p̂−p|≥ε)≤1/(4nε²)。
想把偏差达到5个百分点的概率控制在5%以内,代入ε=0.05并要求右边≤0.05,得到
1/4n×(0.05)²≤0.05,即n≥2000。
这是充分而保守的样本量条件,不是最小样本量,更不是每次都准。概率针对按此模型反复抽样产生的p̂;观察结束后,不能直接改口成“固定的p有95%概率落在这次估计值附近”。
低基准台账虽有10000行,告警只有198行;若研究precision,不能把10000当作上述n。若研究灵敏度,相关组只有100个真故障窗口,也不能借用全部10000行。并且,198与100首先只是各组计数;是否能作为独立同分布样本使用,仍须检查采样机制。
若已准确核查固定台账中的全部198条告警,这张台账的precision恰是1/2,没有“尚未抽到的台账行”带来的误差。要推广到未来告警,才重新面对代表性、相关性与分布变化。对有限总体不放回抽样,样本并不独立,应使用相应的抽样模型;不能把本章的iid推导原样套上去。

图3:增加行数、打乱顺序或重跑测试,都不会自动消除这些联系。如何分组、隔离和重新收集证据,应根据实际来源设计。
同一次故障可使连续窗口一起异常,重复通知则可能只是同一结果的复制。第21章已经证明,复制n份的平均仍是原变量,方差不会按1/n下降。应保留事故和设备标识,识别成组记录,防止同一来源跨开发与测试;必要时按组或时间段重新设计评估。这样做减少明显问题,却不等于已经证明所有组相互独立。若系统随时间变化,也不能只靠累积更长的旧记录修复非平稳性。
让结论能被下一位核查者重做
一次可执行的评估可以这样落地:开始前保存一份协议,写明目标设备与时间、五分钟窗口、故障定义、去重及缺失处理办法,并封存检测器版本、阈值和主要指标。按协议收集后续数据,保留原始告警和独立标签依据;核查覆盖安静窗口,争议标签留下复审记录。
随后用唯一窗口标识合并两份记录,检查总数与重复项,列出四格及各指标分母。把全不报基线放在旁边,对照原定的检出目标和核查负担。涉及抽样误差时,明确抽了谁、如何抽、用了什么模型,分开列出计数事实与条件性的误差界。更改检测器后,另留新数据验证;部署对象改变后,重新核查迁移假设。
报告的边界同样属于结果。99/198=1/2、全不报准确率为1−π,以及iid条件下的切比雪夫界,都是各自条件成立时可靠的数学结论。标签是否正确、样本是否代表目标总体、记录是否独立、未来是否稳定,则需要实证支持。两类话写清楚,读者才能知道哪些部分可复算,哪些部分要补证据。
到这里,本部从“一声告警是否可信”走到了“一份评估为何可信”。下一部转向信息与编码:我们还会把不确定性压缩成便于比较的量,再问怎样表达和传递信息。那是新的目标与定义;本部的比例、方差和误差界,也仍各自回答不同的问题。
顺手试一下
题目1: 某份虚构部署台账有100000个窗口,四格为TP=99、FN=1、FP=999、TN=98901。求accuracy与precision,再求全不报规则的accuracy和召回率。只按accuracy选规则,会发生什么?
**提示:**准确率的分母是100000,precision的分母是告警数;全不报只把健康窗口判对。
**参考答案:**检测器accuracy=(99+98901)/100000=99%,precision=99/1098=11/122,约9.02%。全不报accuracy=99900/100000=99.9%,召回率为0。因此仅按accuracy会偏向完全不找故障的规则。它的precision无定义;这进一步说明,评价准则必须对应任务目标。
题目2: 某人只复核10000个窗口中的198条告警,确认99条有故障,其余窗口未核查。他报告“precision为50%,召回率为99%”,又用n=10000套用本章误差界,声称足以满足5个百分点、5%的要求。他还在这批记录上试了20个阈值,只保留分数最高的结果。这份报告哪些结论成立,哪些需要补证据?
**提示:**把已知标签填进四格,看看哪两格仍空着;再分别检查抽样对象与检测器选择过程。
**参考答案:**若198条告警全部核验准确,这份告警列表的precision确为99/198=50%。FN、TN尚未知,所以不能得出召回率99%;必须按可靠设计核查未告警窗口,寻找漏报。全部10000行也不能充当precision的iid样本数。对这份完整列表本身无需估计,对目标总体作推断则须说明代表性和抽样机制;即使198条符合iid模型,也未达到n≥2000这一充分条件,不能声称已由该界获得所需保证。反复看测试结果选阈值,使这批数据参与了方案选择。应固定选定版本与规则,再取得未参与选择的新证据,并在报告中保留选择过程、核查范围与限制。
参考与延伸
1 Google官方《Machine Learning Crash Course》,Datasets: Dividing the original dataset。核对开发、验证与最终测试的区分,以及重复使用测试集、重复样本带来的评估问题。
2 同课程,Classification: Accuracy, recall, precision, and related metrics。核对四种指标的分母及类别不均衡时accuracy的局限。
3 麻省理工学院,Jeremy Orloff、Jonathan Bloom,18.05课程Reading 6c: Appendix,第3节,第2—3页。核对切比雪夫不等式及样本平均的方差与适用条件。
本文台账、评估协议、练习与图解均为原创教学构造,不是真实系统的评测报告;参考资料用于核对概念和数学规则。
作者:Jiancheng Wang · 数学之美(独立原创)