跳转至

P3-3.1 为什么不能把原始数据立刻读成学习问题

Section ID: P3-3.1 Version: v2026.09.19

原始数据中有表和时间记录,并不表示当前监督学习问题所需的输入与结果已经定义。记录下来的原始数据也是数据集。这里要确认的不是数据集是否存在,而是如何把它组织成服务于特定问题的候选数据集。

这里把问题表示结构理解为连接样本、输入和目标的设计。可以先想到分类或预测,但仅凭问题名称,不能认定现有数据已经准备就绪。

来看一种情况:每一次自动执行动作,都会留下控制参数时间序列和传感器时间序列。看到这种表时,通常最先跳出来的是下面这些想法。

  • 既然有传感器值,就能改成异常检测问题。
  • 动作结果有些差异,那就可以改成分类问题。
  • 如果时序很长,也许能直接送进时序预测问题。

这些想法本身并不一定错。问题在于,在 什么算一条案例、到底想预测什么、监督学习标签(supervised learning label)是否真的存在都还没定下来之前,学习问题框架就先出现了。在这种状态下,我们还没有定义数据问题,只是比数据本身更早地先想出了学习问题框架。

但如果把原始数据当作已经可以直接用于当前监督学习问题的表,就会漏掉重要问题。

最容易先想到的问题 实际上更应该先问的问题
该把它读成什么学习问题? 什么该算一条样本(sample)?
标签该放什么? 现在真的已经有稳定标签了吗?
怎样提高准确率? 该重新整理成什么表,比较才会成立?

这个差别不只是顺序问题。第一次看原始数据时,更需要做的不是选择学习问题,而是 重新追问这张表到底是什么。你现在看到的是按时点记录的测量值、一次动作的摘要,还是某个近期区段的聚合,这会让后面所有关于 feature、baseline、target 的说明都发生变化。

例如,只看下面这一小段原始数据,学习问题框架就可能过早跳出来。

event_id second pressure flow
A 0 1.0 0.0
A 1 2.0 1.4
A 2 2.4 1.6

只看这张表,很容易想到分类问题、预测问题或时间序列学习问题。表中一行是一个时点的记录。尚未决定的是:直接把这一行作为样本,还是按动作分组,以及要预测什么结果。因此,立刻选择学习问题形式,就会让形式走在问题本身前面。

本例讨论的是以一次动作为一个样本,对动作结果进行分类。这需要把输入记录与事件级结果标签连接起来,并确认标签的判定依据。并不是说无标签数据集或监督学习以外的分析无法存在。

独立检查项 需要核对的依据 当前 CSV 的状态
标签列存在 是否真的有 review_label 列 不存在
事件级连接 每个事件是否对应一个结果,且没有缺失或冲突值 没有该列,尚未确认
判定标准 谁按什么标准及版本确定结果 没有依据,尚未确认

把同一标签重复填入一个事件的所有行,可能通过连接检查。但它来自实际检查还是任意规则、各事件是否采用一致标准,仍需单独确认。

从源记录到学习问题所需的决定

如果按 原始记录 -> 先补空着的问题 -> 再整理样本和标签候选 这条顺序重读,就会更清楚:为什么不能太早把原始数据提升成学习问题。

flowchart TD
    A[读取原始记录] --> B[确定样本单位与输入范围]
    B --> C[确认结果记录是否存在]
    C --> D[核对事件级连接与判定依据]
    D --> E[缺乏依据的项目保留为未确认]
    E --> F[判断当前问题还需要什么资料]

分别确认标签列、连接与判定依据

p3_3_1_source_operation_log.csv 是本书编制的虚构动作日志。每行是一次动作中某一秒的传感器记录,A~I 共九次动作,每次四条记录。event_id 标识动作,second 表示观测时刻。文件有 flow,但没有 review_label。

请判断这些记录能否用于动作结果分类。针对每种情况,将标签列存在、事件级连接、判定标准分别标为 已确认 / 条件不满足 / 未确认。③、④是假设增加的资料,不在原始 CSV 中。

情况 已提供的依据
① 选择原文件的 review_label 作为结果 没有该列
② 选择原文件的 flow 作为动作结果 A 在 0、1、2 秒的值分别为 0.0、1.4、1.6,是时点测量值
③ 收到独立结果表 每个事件对应一个 pass 或 fail,但没有判定文档
④ 在③上增加判定文档与检查历史 本练习假定已确认负责人、标准版本及应用历史,且所有事件采用相同标准

①不满足标签列存在条件。连接与判定标准因缺乏资料而未确认。②已确认列存在,但测量值并非当前问题所需的事件级结果标签。也没有把传感器值转换成结果类别的依据,所以判定标准仍未确认。

③已确认列存在及事件级连接,但判定标准未确认。仅凭 pass 一词无法知道通过了什么。④确认了本练习的三个检查项,但输入范围与评估方法尚未确定,因此不能据此认定所有训练准备都已完成。

现在把问题改为“用 0~2 秒的记录预测 3 秒的流量”。A 的输入是 0、1、2 秒记录,目标是 3 秒的 flow=1.2。不能把该流量或之后的记录混入输入。同一 flow 列在明确问题与时点后,也可以提供目标值。

最后写一条判断备忘录:“当前结果分类缺少事件级标签及判定依据。可以比较、探索传感器记录,标签依据需另行确认。”同时记录原文件版本及新增结果表、判定文档的来源,才能日后重新核对判断。

能够比较或汇总传感器记录,与拥有学习预期结果的依据,是不同的判断。应写下当前问题所需的样本、输入与目标的对应关系,并把缺乏依据的项目保留为未确认。

检查清单

  • 能否区分原始日志本身是数据集与当前监督学习问题是否准备就绪?
  • 能否分别判定①~④的标签列存在、事件级连接与判定标准?
  • 能否解释为什么每个事件都有一个结果,仍不代表其含义已经明确?
  • 预测 A 在 3 秒的流量时,能否分开输入记录与目标值?
  • 是否用一句话写下当前可以探索什么、还需确认什么标签依据?

来源与参考资料

  • Google for Developers, Machine Learning Glossary:label、labeled example、unlabeled example。用于确认监督学习的输入与结果角色,以及无标签案例的区别。 原文 / 确认日期: 2026-09-19
  • Google for Developers, Machine Learning Glossary:label leakage。用于确认把透露待预测结果的信息混入输入的问题。 原文 / 确认日期: 2026-09-19
  • W3C, PROV-Overview (2013)。用于支持追踪数据生成涉及的对象、活动、人员及处理步骤与版本。 原文 / 确认日期: 2026-09-19