第3章:输入数据准备——数据来源、数据清洗、数据标注与格式规范

仿真原型验证的可信度高度依赖输入数据的质量。从真实系统、历史故障库或合成生成器获取原始数据后,必须经过系统化的清洗、标注与格式转换,才能驱动仿真模型产生有意义的验证结论。本章依次拆解这四个阶段的关键操作与规范。

3.1 数据来源分类与适配策略

仿真验证的输入数据通常来自三种渠道,每种渠道的噪声特征、覆盖范围和合规要求不同,需要采用差异化的接入策略。

来源类型 典型示例 优势 常见问题
真实运行日志 生产服务器 trace、CAN 总线报文、APM 监控快照 高真实性、可直接复现现场场景 含 PII 数据、时序不连续、采样率不均
历史故障库 缺陷回归集、安全事件记录、事故重现数据 覆盖边缘与异常路径 数据稀疏、标签粒度粗、场景上下文缺失
合成生成器 模型 Fuzz 输出、对抗样本、参数扫描器 批量可控、可覆盖极端边界 与现实分布偏差大、需校准
选源原则:对于功能安全等级 ASIL-B 以上的验证项,至少使用两种来源的数据做交叉注入,避免单一来源的统计偏差被带入仿真结果。

3.2 数据清洗流水线

原始数据进入仿真流水线前,必须经过以下四道清洗工序。缺失值处理、异常值检测、去重与时间对齐是保证仿真输入一致性的基础。

  1. 缺失值处理:对连续型字段采用线性插值,对离散枚举字段采用前值填充,丢弃缺失率超过 30% 的特征列。
  2. 异常值检测:使用 IQR 或 Z-score 方法识别离群点,结合业务规则(如速度不超过物理极限)进行修正或剔除。
  3. 去重与归并:基于时间戳 + 关键字段的哈希值做精确去重,防止重复注入导致覆盖率虚增。
  4. 时间对齐:将所有信号统一到公共时间基(如系统启动后相对毫秒),必要时使用样条重采样到固定周期。
清洗验证指标:清洗后数据应满足:缺失率 < 1%、异常值占比 < 0.5%、时间戳单调递增且无大于 2 倍采样周期的间隙。

3.3 数据标注规范与标签体系

仿真输入数据需要携带语义标签,以便验证引擎按场景分类调度。推荐采用三级标签结构:场景级、事件级、信号级。

标签层级 示例值 用途
L1: 场景级 “高速跟车 / 城区十字路口 / 夜间泊车” 筛选验证用例集,计算场景覆盖率
L2: 事件级 “前车急刹 / 行人横穿 / 车道线消失” 触发模型中的特定安全机制
L3: 信号级 “油门开度异常 / 转向角跳变 / 通信超时” 闭环注入故障,度量鲁棒性

标注存储推荐使用 JSON Lines 格式,每行包含时间戳、信号名、标签路径与原始数值。以下是一个信号级标注示例:

{"ts": 15420, "sig": "brake_pressure", "label": ["scenario:highway_follow", "event:hard_brake", "sig:abnormal"], "value": 85.3}
{"ts": 15421, "sig": "yaw_rate", "label": ["scenario:highway_follow", "event:hard_brake", "sig:normal"], "value": 0.12}
{"ts": 15422, "sig": "wheel_speed_FL", "label": ["scenario:highway_follow", "event:hard_brake", "sig:normal"], "value": 22.4}
标注一致性检查:同一验证批次的所有数据必须使用同一版本标签字典,标签路径中不允许出现拼写变体或同义别名。建议在注入前运行自动化标签校验脚本。

3.4 数据格式规范与校验

仿真引擎对输入格式有严格约束,所有数据必须以标准容器类型交付。以下为推荐的数据格式规范要求:

  • 信号时间序列:Parquet 列存格式,每列为一个信号,行索引为单调递增绝对时钟。
  • 场景描述文件:YAML 或 TOML 格式,包含场景名称、标签列表、起止时间与初始条件。
  • 故障注入指令集:JSON 格式,明确故障类型、注入时间窗、目标信号与扰动参数。

格式校验工具链应包含以下三项检查:

  • 架构检查:列数、列名、数据类型是否与仿真接口定义 (SID) 匹配。
  • 范围检查:每个信号的数值是否在物理合理区间内。
  • 引用完整性:场景文件中引用的标签 ID 必须在标签字典中注册。
# 格式校验示例命令(使用内置 validator 工具)
validator --input data/traces/ --schema schema/signal_schema.yaml --dict labels/v2.1.json --check-references

3.5 数据准备流程总图

下方 SVG 流程图汇总了从原始数据到仿真输入就绪的完整链路,突出四个阶段间的数据流与关键质检关卡。

输入数据准备流程总图 输入数据准备流程总图 ① 数据来源 日志 / 故障库 / 合成生成 真实日志 历史故障库 合成生成器 ② 数据清洗 缺失处理 / 异常检测 / 去重 / 时间对齐 ③ 数据标注 场景 / 事件 / 信号 三级标签 ④ 格式规范 Parquet / YAML / JSON 校验 就绪仿真输入 质检关卡 来源多样性 >= 2 缺失率 < 1% 标签字典版本一致 架构/范围/引用校验 不通过则回退

3.6 常见避坑指南

时序对齐遗漏:多源数据在合并时容易忽略时钟基准差异,导致信号错位一个采样周期。解决方法是在清洗阶段统一将时间戳转为单调递增的相对毫秒,并做交叉相关性检查。
标签膨胀控制:标注时不要为每个细微信号变化都创建新标签,应保持在三级标签体系内。建议每周运行一次标签字典去重与合并,控制标签总数在 500 个以内。
自动化注入检查:在数据进入仿真器前加一道“预演检查”,用轻量级 proxy 模型跑一个采样点,验证数据格式与标签路径能被正确解析,避免全量注入后才发现格式错误。

完成上述四步准备后,输入数据即可交付给仿真执行引擎。下一阶段将聚焦模型校准方法,确保仿真参数与真实系统响应的一致性。