3、测试集设计原则:掌握代表性、多样性、平衡性、可重复性等测试集设计基本原则

TinyML 测试集不是简单的“数据打包”,而是对目标部署环境的工程化抽象。与云端 AI 测试不同,TinyML 模型部署在资源受限的 MCU 上,其输入信号受传感器噪声、供电波动、温漂、个体差异等多重因素影响。若测试集设计不当,极易出现“实验室精度高、现场失效”的典型故障。本章围绕代表性、多样性、平衡性、可重复性四大核心原则,结合边界样本与长期漂移场景,给出可落地的测试集构建方法论。

测试集设计四大原则 代表性 部署环境分布匹配 多样性 覆盖工况/个体/环境 平衡性 类别/难度/场景均衡 可重复性 固定种子/版本/环境 实施关键动作 现场数据采集 边界样本注入 类别重采样 版本哈希锁定 输出:高置信度 TinyML 测试集

上图展示了四大原则的关联关系:代表性定义“测什么”,多样性定义“覆盖多广”,平衡性定义“分布是否合理”,可重复性定义“结果是否可信”。四者相互制约,例如过度追求多样性可能导致类别失衡,而严格平衡又可能牺牲代表性。实际构建时需根据部署场景动态调整权重。

3.1 核心原理:从“数据量思维”转向“场景覆盖思维”

传统测试集构建往往以“总量越大越好”为目标,但在 TinyML 场景下,由于 MCU 的 Flash/RAM 限制,模型无法容纳海量参数,测试集也不可能无限扩充。真正决定测试质量的是场景覆盖度——即测试集是否包含了部署环境中可能出现的各种信号形态。

代表性原则要求测试集的统计分布与真实部署环境一致。例如,若目标设备用于工业电机振动监测,测试集应包含不同转速、不同负载、不同轴承磨损阶段的振动信号,而非仅采集实验室标准工况数据。多样性原则则强调覆盖“长尾场景”——包括极端温度、电磁干扰、传感器老化、安装偏差等非理想条件。平衡性原则要求各类别样本数量、难度级别、场景类型保持合理比例,避免模型因训练/测试偏差而产生“虚假精度”。可重复性原则确保同一测试集在不同时间、不同设备上运行得到一致结果,这是模型回归测试和版本对比的基础。

关键认知:TinyML 测试集不是“一次性交付物”,而是随部署环境演进的“活资产”。每次现场反馈、每次传感器更换、每次固件升级,都应触发测试集的增量更新。

3.2 判断方法与操作流程:四步构建法

构建高质量测试集需遵循系统化流程,以下四步可操作性强,适用于大多数 TinyML 场景。

  1. 场景清单化:列出所有已知部署场景,包括正常工况、边界工况、故障工况、极端环境。每个场景需明确传感器类型、采样率、信号特征、环境参数(温度/湿度/振动等)。
  2. 数据采集与标注:按场景清单采集原始数据,使用统一标注规范。标注需包含类别标签、场景标签、时间戳、设备 ID。对于边界样本(如阈值附近的信号),建议双人独立标注并交叉验证。
  3. 重采样与增强:针对类别不平衡问题,采用过采样(复制少数类)、欠采样(随机剔除多数类)或合成少数类过采样技术(SMOTE)等方法。但需注意,TinyML 信号数据(如加速度计、麦克风)不宜使用图像领域的随机裁剪/旋转增强,应使用加噪、时间拉伸、幅值缩放等物理可解释的增强方式。
  4. 版本固化与校验:将最终测试集打包为固定版本,记录数据文件哈希值、采集设备参数、环境条件、标注规范版本。每次测试前校验哈希值,确保测试集未被意外修改。
步骤关键输入输出物质量检查点
场景清单化部署现场调研、历史故障记录场景-信号映射表是否覆盖所有已知工况?
数据采集传感器原始数据、标注工具带标签的原始数据集标注一致性(Kappa系数 > 0.8)
重采样与增强类别分布统计、增强策略平衡后的测试集类别比例偏差 < 5%
版本固化哈希工具、版本管理测试集包(含元数据)哈希校验通过、元数据完整

3.3 案例拆解:工业电机轴承故障检测测试集构建

某工厂部署 TinyML 振动监测节点,用于预测轴承故障。初始测试集仅包含实验室采集的 3 种工况(正常、内圈故障、外圈故障),各 1000 条样本,模型测试精度达 98%。但现场部署后误报率高达 30%。

根因分析:现场电机转速波动范围(800-3000 RPM)远大于实验室(1500 RPM 固定);且存在负载突变、启停瞬态、齿轮箱耦合振动等实验室未覆盖场景。此外,现场传感器安装位置存在差异,导致信号幅值偏移。

重构过程:

  • 重新采集现场数据:连续 2 周记录 5 台电机的振动信号,覆盖不同转速、负载、温度条件,共获取 12,000 条样本。
  • 边界样本注入:人为构造转速临界值(如 1490-1510 RPM 区间)、幅值阈值附近的样本,共 800 条。
  • 类别平衡:正常样本 5,000 条,内圈故障 3,500 条,外圈故障 3,500 条,比例接近 1.4:1:1,避免多数类主导。
  • 可重复性保障:所有数据按时间戳排序后,使用固定随机种子(seed=42)划分训练/测试集,并记录每个文件的 SHA-256 哈希值。

结果对比:重构后测试集上模型精度降至 91%,但现场误报率从 30% 降至 4%。虽然“实验室精度”下降了 7 个百分点,但真实部署性能显著提升。代价是数据采集和标注耗时增加 3 周,但避免了后续频繁的现场调参。

风险提示:不要为了追求测试集“好看”而剔除难样本。若测试集精度远高于现场表现,说明测试集存在“幸存者偏差”,必须重新审视场景覆盖是否完整。

3.4 常见误区与总结复盘

误区一:测试集与训练集同源。若测试集与训练集来自同一批次数据,模型可能只是“记住”了数据特征而非学习到泛化规律。正确做法是使用不同时间段、不同设备、不同环境的数据构建测试集。

误区二:盲目追求类别完全均衡。在异常检测场景中,正常样本天然占绝大多数。强行均衡会导致测试集偏离真实分布,使模型对异常过于敏感。此时应使用“分层抽样”保持自然比例,同时单独构建“边界样本集”用于专项测试。

误区三:忽略时间漂移。传感器会随时间老化,环境也会季节性变化。若测试集只包含短期数据,无法验证模型的长期稳定性。建议在测试集中加入“时间切片”——即从不同月份、不同季节采集的数据子集。

误区四:可重复性仅指“固定随机种子”。真正的可重复性还包括:数据采集硬件的校准状态、预处理代码版本、模型推理框架版本、MCU 的浮点运算模式(FP32/FP16/INT8)。任何环节变化都可能导致测试结果不可比。

实践建议:为每个 TinyML 项目建立“测试集版本日志”,记录每次变更的原因、内容、影响范围。当现场出现误报时,可快速回溯是模型问题、数据漂移还是测试集缺陷。

总结而言,测试集设计四大原则并非孤立指标,而是一个系统工程。代表性是根基,多样性是保障,平衡性是调节器,可重复性是信任基石。在实际操作中,建议采用“最小可行测试集”策略:先构建覆盖核心场景的小规模测试集(约 500-1000 条样本),快速验证模型可行性;随后根据现场反馈迭代扩充,逐步加入边界样本和长尾场景。这种渐进式策略既能控制成本,又能保证测试集与部署环境的动态匹配。