P3-8.5 如何把多个比较列组合成复核优先顺序?¶
Section ID:
P3-8.5Version:v2026.09.20
比较表的列很多,并不意味着必须把每一列都合成一个分数。建立复核候选队列时,要区分决定顺序的列与为解释依据而保留的列。相同数据在不同排序政策下可以得到不同顺序。优先级是政策应用的结果,不是观察值自动具备的属性。
先固定一行与各输入列的含义¶
下面是三个已选为复核对象的比较区间的虚拟资料。每行不是一次动作,而是包含多次已完成动作的比较区间,因此标识为window_id。A、B、C是本节内部标识,不是直接延续前一节的同字母行。这里只决定已选对象之间的顺序,不决定是否纳入复核。
| 输入列 | 本例中的含义 |
|---|---|
| window_id | 不同比较区间的唯一标识 |
| diff_mean | 近期各动作后段均值的平均值−基线对应平均值,单位L/min |
| recent_count | 近期区间内不同的已完成动作数 |
| decline_count | 后段均值−前段均值 ≤ −0.30 L/min的近期动作数,包含边界且每次只计一次 |
| safety_related | 在预先规定的工艺复核分类中属于安全相关项目则为yes,否则为no |
下降条件与P3-7.2相同。safety_related来自工艺分类记录,不由差值或样本数计算。yes不表示已经发生事故或超限,no也不保证安全。需要适用独立紧急响应程序时,不能用本排序练习替代。
假定所需测量与分类标记齐备,各基线与近期组的测量定义及运行条件匹配,三个区间的差值可以用同一流量单位比较。不能把缺失的安全分类填为no,也不能直接排序单位不同的差值。
并列读取差值与规则满足次数¶
| window_id | diff_mean (L/min) | recent_count | decline_count | safety_related |
|---|---|---|---|---|
| A | -0.35 | 20 | 14 | yes |
| B | -0.35 | 3 | 1 | no |
| C | -0.18 | 18 | 12 | yes |
下降比例为decline_count/recent_count:A为14/20=70%,B为1/3≈33.3%,C为12/18≈66.7%。这些数值可替代未定义的重复分数,但不包含发生顺序,不能读作连续下降次数。
差异幅度是去掉正负号后的绝对值。A与B为|−0.35|=0.35,C为|−0.18|=0.18 L/min。绝对值丢失了增加或减少的方向,因此仍要保留原符号。本政策同等处理两个方向的变化幅度;若实际目的是检测下降,则需要另行规定考虑方向的规则。
不能仅凭20次、18次或较小的离散程度就认证“可信度高”。还需检查观察覆盖范围、动作间依赖与基线适用性。B样本较少也不会自动决定它排最后。
政策1:安全相关分类、差异幅度、ID¶
虚拟政策queue-v1使用以下顺序。前一项已经决定先后时,后一项不能推翻该顺序。
- 将
safety_related=yes的区间排在no之前。 - 相同分类内,
diff_mean绝对值较大的在前。 - 两项都相同,则按
window_id的字母升序排列。
先把A、C分入yes组,B分入no组。yes组内0.35 > 0.18,所以A在C前,结果为A → C → B。C在B前是因为第一项分类规则,而非故障概率更高或样本更多。
政策2:差异幅度、ID¶
用于对比的虚拟政策queue-v2仅采用绝对值降序 → ID升序,不将安全相关分类用于排序。A和B都是0.35,用ID打破并列,A在前;0.18的C在后,结果为A → B → C。这两个政策用于比较计算,并未验证哪一个更适合实际运行。
| window_id | queue-v1名次 | queue-v2名次 | 决定顺序的关键理由 |
|---|---|---|---|
| A | 1 | 1 | v1为yes组内较大差值;v2与B并列后按ID优先 |
| B | 3 | 2 | v1属于no组;v2差值大于C |
| C | 2 | 3 | v1属于yes组;v2差值最小 |
两个政策都不把下降比例与近期次数用于排序。保留这些列是为了说明观察依据与解释局限。离散程度和模式摘要也未纳入本次排序规则。因此,“A因重复程度高而排第一”的解释与实际规则不符。若要利用这些列改变顺序,必须在新政策中明确它们的优先次序与并列处理规则。
把比较依据连接到复核优先级¶
flowchart TD
A["已核查的比较行"] --> B["政策指定的排序列"]
B --> C["应用优先次序与并列规则"]
C --> D["名次与政策版本"]
A --> E["保留次数与比例作为依据"]
E --> F["区分局限说明与排名理由"]
D --> F
输出保留window_id、rank、policy_version,并关联所用输入行。排名1表示在当前候选集合中先复核,不是故障概率为1或确诊。按ID处理并列是保持顺序一致的办法,并非名称A本身就是更重要的依据。
自己改变顺序¶
如果只把B的diff_mean改为−0.40,各政策会得到什么顺序?随后回到原表,只把C的decline_count从12改为18,名次会变化吗?
解析:第一次修改中,queue-v1先看安全相关分类,因此仍为A → C → B;queue-v2先看差异幅度,因此变为B → A → C。第二次修改只使C的下降比例变为18/18=100%。两个政策都不用这个比例,所以仍保持原顺序A → C → B与A → B → C。100%也不是故障概率。
检查清单¶
- 能否解释行单位、每个输入列及下降比例的分子与分母?
- 能否复现两种政策与并列处理,而不把未使用的列说成排名原因?
- 能否区分名次与故障概率,并保留政策版本和输入依据?
来源与参考资料¶
- Python官方文档,Sorting Techniques — 参考其按顺序比较多个排序键、并列时使用下一键的原理。数据与两种运行政策是本书自行构造的虚拟示例。查阅日期:2026-09-20。