跳转至

P3-4.4 哪些信号说明样本单位抓错了

Section ID: P3-4.4 Version: v2026.09.19

同一个标签出现在多行中,并不意味着样本单位一定错误。表格可能只是把一次动作的结果关联到各个时点记录。警告要求检查原来的对象与计算范围,并不是数据错误或设备故障的确定判定。

前一节展示了同一批资料如何转换为时点表、动作表和区间表。本节区分误读表格单位的线索,以及检查后真正需要修改的部分。

发现信号后要检查什么

可见信号 先检查什么 检查后可能的判断
同一事件的标签重复出现 标签属于时点还是整次动作? 可能是有意重复存储,也可能在汇总时把行数错当成事件数
仅凭一行无法解释均值或斜率 计算所用的事件、观测区间和单位 把多个观测计算出的特征关联到一行,可以是合理的
“这一条案例”的含义不清 语句指的是时点、动作还是区间? 重新检查比较对象与表格单位是否一致
同一事件同时出现在训练和评估中 目标是新事件,还是已见事件的其他时点? 评估新事件的表现时,需要按事件分开

仅凭 flow_mean 这个名字,无法判断它是动作均值还是近期区间均值,需要写明计算对象。同样,把 duration_seconds 解释为动作时长,需要开始与结束边界。下方 A 的最后一个观测在第 17 秒,但没有结束标记,因此不能据此确定完整动作的时长。

把多个观测计算出的值存放在时点行上,本身并不是错误。应检查其观测区间和可用时间是否符合问题。例如,只有动作结束后才能计算的全程均值,不能用作该动作进行中的预测输入。

18 个阳性行代表 1 次阳性动作

虚构原始日志 CSV 包含 36 条时点记录。event_id 标识动作,second 是动作开始后经过的秒数,flow 的单位是 L/min。本练习的 review_needed 是赋予整次动作的虚构标签:1 表示标记为需要复核,0 表示未标记为需要复核。它不是真实故障标签,也不是每个时点的故障判定。

先确认同一事件内的标签一致,再比较行数与标签之和:

event_id 时点行数 重复存储的标签 行标签之和 每次动作只计一次的复核对象数
A 18 1 18 1
B 9 0 0 0
C 6 1 6 1
D 3 0 0 0
合计 36 — 24 2

将 A 的 18 行中的 1 相加得到 18,但这些行复制的是同一次动作的标签,所以复核对象只有 A 这一次动作。全表则是 18 + 6 = 24 个阳性行,对应 A、C 两次动作。报告“有 24 次动作需要复核”,就是误读了汇总单位。

还要看分母。阳性行比例为 24/36 ≈ 66.7%,标记为需复核的动作比例为 2/4 = 50%。它们回答不同的问题。在行比例中,A 占的行数是 D 的六倍。这里的两个比例都不是模型准确率或故障概率。

B、D 的标签之和为 0,但 0 也分别重复存储在 9 行、3 行中。仅凭标签之和,会漏掉阴性标签的重复。应同时检查每个事件的行数和标签一致性。

改变警告阈值后,哪些事件还会被选中

打开资料,数出四个事件各自的行数,再调整 repeat_warning_threshold。本练习的规则是:对于标签一致的事件,若 行数 > 阈值,就将其列为单位检查对象。这是筛选重复存储检查对象的虚构规则,不是故障阈值或标准质量要求。行数包括第一行。

repeat_warning_threshold 被选中的 event_id 检查对象动作数
1 A, B, C, D 4
3 A, B, C 3
9 A 1
18 无 0

阈值从 1 提高到 3 后,D 被排除。D 有 3 行,不满足 3 > 3。阈值为 9 时,B 也因等于阈值而被排除,只剩 A。如果只显示“是否至少有一个对象被选中”,阈值 1、3、9 的结果都会是 yes,因此需要一起查看名单和数量。

阈值为 18 时警告消失,但原始表与标签没有改变。标记为需复核的仍是 A、C 两次动作。单位检查对象数与标签所指的复核对象数不同。 减少警告也不意味着数据错误已被修复。

合并前先检查标签冲突

现在假设 A 的 18 行中有一行改为 review_needed=0。行标签之和变为 17,但 A 内出现了 0、1 两种冲突标签。在当前“一次动作一个标签”的设定下,应先检查这种冲突。提高重复警告阈值并不能解决它。

用 max() 选择 1,或只保留第一行,都会掩盖不一致。需要检查原始标签记录与关联规则:是否混入了修订前后的标签,或把时点判定误当成了动作标签?确认前,不应确定 A 的动作标签。反过来,如果标签本来就描述各个时点,那么同一次动作中出现不同值可能是合理的。

从信号返回汇总规则检查

下图展示发现重复存储后的判断顺序。先确认标签对象及一致性,再让计数单位与报告对象相符。

flowchart TD
    A["发现重复存储"] --> B["检查标签对象与范围"]
    B --> C{"每次动作一个标签?"}
    C -->|否| D["检查对应对象的标签定义"]
    C -->|是| E{"动作内标签是否一致?"}
    E -->|否| F["检查原始记录与关联规则"]
    E -->|是| G["按问题检查汇总与划分单位"]

最后,请改写“阈值为 3 时有 3 个警告,所以有 3 次故障动作”。参考答案是:“A、B、C 三次动作被选为重复存储与单位检查对象。原始复核标签为 1 的是 A、C 两次动作;仅凭这些资料无法确定是否发生故障。”

检查清单

  • 能否解释 A 的 18 个阳性行为何只代表 1 次需复核动作?
  • 能否区分 24/36 与 2/4 的分子、分母?
  • 能否说明阈值 1→3 时 D 被排除的原因,以及阈值 18 时警告消失后哪些事实仍未改变?
  • 是否确认了标签之和为 0 的 B、D 也有重复存储?
  • 是否检查原来的对象与记录,而不是任意合并冲突标签?
  • 能否区分单位检查对象、复核标签与设备故障?

来源与参考资料

  • Google for Developers,Machine Learning Glossary: label。用于确认标签的一般含义。本节的 review_needed 含义和重复检查规则是虚构案例的设定。/ 查阅日期:2026-09-19
  • scikit-learn developers,Cross-validation for grouped data。为评估训练中未见过的组时按组分开提供依据,并不将重复存储本身判定为错误。/ 查阅日期:2026-09-19