跳转至

P3-4.3 时点记录、动作样本和区间汇总有什么不同

Section ID: P3-4.3 Version: v2026.09.19

样本是当前问题中用于比较的一条案例。行是表的存储形式:时点记录、动作摘要和区间汇总都可以各占一行。 前一节区分了划分单位与计分单位,本节则观察:把同一批记录分组后,一行的含义如何变化。

9 行时点记录包含 3 次动作

下面是自行设计的虚构流量记录。event_id 标识一次动作,second 是该动作开始后经过的秒数,flow 的单位为 L/min。在这个小表中,(event_id, second) 共同标识一个观测行。不同动作的 second=1 并不表示同一个实际时刻。

event_id second flow
A 0 0.8
A 1 1.5
A 2 1.1
B 0 0.7
B 1 1.2
B 2 1.0
C 0 0.9
C 1 1.6
C 2 1.2

A, second=1 的 1.5 是 A 内一个时点的观测值。仅凭这一行,无法知道 A 整体的均值或最大值。对于“A 动作的平均流量是多少?”,A 的三行记录共同构成一个动作样本的材料。

先求动作均值,再按区间分组

先收集同一 event_id 的观测,计算均值和最大值。本例另行规定:B 属于过去的基准区间 baseline,A、C 属于近期区间 recent。这是教学设定,不能从表中的经过秒数或字母顺序推断出来。实际资料需要保留区间起止边界或明确的成员事件列表。

event_id point_count event_flow_mean event_flow_max window
A 3 1.133333 1.5 recent
B 3 0.966667 1.2 baseline
C 3 1.233333 1.6 recent

此时一行代表一次动作,标识符是 event_id。event_flow_mean 平均的是该动作内部的流量观测值。A 的计算为 (0.8 + 1.5 + 1.1) ÷ 3 = 3.4 ÷ 3 ≈ 1.133333 L/min。最大值 1.5 也来自这三个观测。这类摘要可以成为比较动作的特征,但无法保留时点变化的完整顺序。

接着收集属于同一 window 的动作摘要行。每个动作取一个均值,再求平均,使各动作占相同权重。

window member_events event_count window_flow_mean
baseline B 1 0.966667
recent A, C 2 1.183333

此时一行代表一个区间,本例的标识符是 window。近期均值为 (A 的均值 + C 的均值) ÷ 2 = (3.4/3 + 3.7/3) ÷ 2 ≈ 1.183333 L/min。第一次的分母 3 是观测数,第二次的分母 2 是动作数。 表中显示六位小数,实际计算使用未四舍五入的数值。

本例每次动作都有三个观测,因此直接平均近期的六个原始观测也会得到同样结果。观测数不相同时,两种计算可能不同。P3-5.1 将讨论权重差异;这里先分清 event_flow_mean 和 window_flow_mean 各自汇总什么。

基准区间仅有 B 一次动作,用于展示计算结构,不能据此判断它充分代表平常状态。近期均值约高出 0.216667 L/min,也不直接意味着状态恶化或故障。

从汇总行追溯原始记录

检查近期均值时,沿着 recent → A、C → 每次动作的 0、1、2 秒记录 追溯。图中的箭头表示计算方向;复核结果时则沿相反方向查找成员动作与观测。

flowchart TD
    A["A: 3 个观测"] --> AM["动作 A<br/>均值 1.133333"]
    B["B: 3 个观测"] --> BM["动作 B<br/>均值 0.966667"]
    C["C: 3 个观测"] --> CM["动作 C<br/>均值 1.233333"]
    AM --> R["recent: A, C<br/>均值 1.183333"]
    CM --> R
    BM --> P["baseline: B<br/>均值 0.966667"]

因此同一批资料可以表示为9 行时点表、3 行动作表、2 行区间表。行数减少并不意味着原来的事件消失了。不过,如果只留均值而丢掉原始记录及其关联,就无法还原原来的变化形状。实际累积多个期间时,需要保存不同区间的 ID 和成员范围,不能反复只用 recent 这个角色名称。

问题改变时,区间也可以成为样本

对于“本次动作与其他动作有什么不同?”,一次动作就是样本。对于“最近 20 次动作组成的区间与此前 20 次动作区间的平均流量相差多少?”,一个区间就可以作为比较样本。此时 event_count 和 window_flow_mean 描述的是区间。没有必要把样本固定为动作,或把特征固定为动作摘要。

这个小例子的近期区间实际上只有 A、C 两次动作。提出“最近 20 次”的问题,并不会使本表提供 20 次动作的依据。即使把一个区间计为一条样本,也要另外记录其中的事件数。

改变区间归属,检查计算对象

假设把 C 从 recent 移到 baseline,先写出三个层级的行数和两个区间的均值。原始观测值保持不变。

答案仍是 9 行、3 次动作、2 个区间。近期只剩 A,均值为 1.133333;基准区间对 B、C 的均值再次求平均:(2.9/3 + 3.7/3) ÷ 2 = 1.1 L/min。A、B、C 各自的均值不变,但区间成员与均值改变。这就是读取区间均值时还要检查成员事件的原因。

现在改为从资料中排除 C 的全部三个观测。结果是 6 行、2 次动作、2 个区间,近期均值为 A 的 1.133333。它与前一练习的近期均值相同,但前一练习的 C 属于基准区间,这次则不属于任何区间。仅凭均值无法知道纳入了哪些资料。

检查清单

  • 能否解释时点表的 (event_id, second)、动作表的 event_id、区间表的 window 分别标识什么?
  • 能否区分 A 的均值除以 3 与近期区间均值除以 2 的含义?
  • 能否把近期的 1.183333 追溯到 A、C 的六个原始观测?
  • 能否说明移动 C 或排除 C 如何改变行数、均值和成员事件?
  • 是否提出了以区间为样本的问题,并另外记录实际包含的事件数?

来源与参考资料

  • W3C,PROV-Overview。为记录资料的生成过程与派生关系提供一般依据。本节三张表及数值是自行设计的虚构案例,不是 W3C 规定的三层分类。/ 查阅日期:2026-09-19
  • Google for Developers,Machine Learning Glossary: example。example 是由特征表示的一条案例,可以有标签,也可以没有标签。本节选择动作或区间,是根据问题做出的案例设定。/ 查阅日期:2026-09-19