第3章:输入数据准备——数据来源、数据清洗、数据标注与格式规范
仿真原型验证的可信度高度依赖输入数据的质量。从真实系统、历史故障库或合成生成器获取原始数据后,必须经过系统化的清洗、标注与格式转换,才能驱动仿真模型产生有意义的验证结论。本章依次拆解这四个阶段的关键操作与规范。
3.1 数据来源分类与适配策略
仿真验证的输入数据通常来自三种渠道,每种渠道的噪声特征、覆盖范围和合规要求不同,需要采用差异化的接入策略。
| 来源类型 | 典型示例 | 优势 | 常见问题 |
|---|---|---|---|
| 真实运行日志 | 生产服务器 trace、CAN 总线报文、APM 监控快照 | 高真实性、可直接复现现场场景 | 含 PII 数据、时序不连续、采样率不均 |
| 历史故障库 | 缺陷回归集、安全事件记录、事故重现数据 | 覆盖边缘与异常路径 | 数据稀疏、标签粒度粗、场景上下文缺失 |
| 合成生成器 | 模型 Fuzz 输出、对抗样本、参数扫描器 | 批量可控、可覆盖极端边界 | 与现实分布偏差大、需校准 |
选源原则:对于功能安全等级 ASIL-B 以上的验证项,至少使用两种来源的数据做交叉注入,避免单一来源的统计偏差被带入仿真结果。
3.2 数据清洗流水线
原始数据进入仿真流水线前,必须经过以下四道清洗工序。缺失值处理、异常值检测、去重与时间对齐是保证仿真输入一致性的基础。
- 缺失值处理:对连续型字段采用线性插值,对离散枚举字段采用前值填充,丢弃缺失率超过 30% 的特征列。
- 异常值检测:使用 IQR 或 Z-score 方法识别离群点,结合业务规则(如速度不超过物理极限)进行修正或剔除。
- 去重与归并:基于时间戳 + 关键字段的哈希值做精确去重,防止重复注入导致覆盖率虚增。
- 时间对齐:将所有信号统一到公共时间基(如系统启动后相对毫秒),必要时使用样条重采样到固定周期。
清洗验证指标:清洗后数据应满足:缺失率 < 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 流程图汇总了从原始数据到仿真输入就绪的完整链路,突出四个阶段间的数据流与关键质检关卡。
3.6 常见避坑指南
时序对齐遗漏:多源数据在合并时容易忽略时钟基准差异,导致信号错位一个采样周期。解决方法是在清洗阶段统一将时间戳转为单调递增的相对毫秒,并做交叉相关性检查。
标签膨胀控制:标注时不要为每个细微信号变化都创建新标签,应保持在三级标签体系内。建议每周运行一次标签字典去重与合并,控制标签总数在 500 个以内。
自动化注入检查:在数据进入仿真器前加一道“预演检查”,用轻量级 proxy 模型跑一个采样点,验证数据格式与标签路径能被正确解析,避免全量注入后才发现格式错误。
完成上述四步准备后,输入数据即可交付给仿真执行引擎。下一阶段将聚焦模型校准方法,确保仿真参数与真实系统响应的一致性。