第二节 机器学习中训练集、验证集、测试集的定义、作用及常见划分比例
在进入 Edge Impulse 平台操作之前,必须先建立对数据集划分的清晰认知。训练集、验证集、测试集是机器学习工程中最基础也最关键的三个概念,它们共同决定了模型能否从历史数据中学习到可泛化的规律,而非仅仅“背下”训练样本。对于边缘端部署场景,数据划分策略还会直接影响模型在真实硬件上的推理表现。本节将系统讲解三类数据集的定义、作用、常见划分比例,并结合 Edge Impulse 的实际工作流说明如何应用这些原则。
上图展示了三类数据集在机器学习工作流中的位置与关系。原始数据经过划分后,训练集用于模型参数学习,验证集用于超参数调优和模型选择,测试集则模拟真实场景进行最终评估。三者之间是严格的“隔离”关系——测试集绝不能参与训练或调参过程,否则评估结果将失去可信度。下面逐一展开讲解。
2.1 训练集:模型学习的“教材”
核心定义:训练集(Training Set)是用于拟合模型参数的数据子集。在 Edge Impulse 中,训练集样本会经过特征提取、信号处理、神经网络前向/反向传播等流程,模型通过最小化损失函数来逐步调整内部权重,从而学习输入特征与标签之间的映射关系。
关键作用:
- 参数学习:神经网络的权重、偏置,或传统机器学习模型的系数,全部由训练集数据决定。
- 特征分布建模:模型从训练集中统计各特征的出现频率、取值范围、相关性等,形成对数据分布的内部表征。
- 损失函数优化:训练过程通过梯度下降等算法,在训练集上不断降低预测误差。
在 Edge Impulse 中,训练集通常占据最大比例(70%~80%)。例如,一个包含 1000 条加速度计数据的动作识别项目,训练集会分配 700~800 条样本。训练集的质量直接决定了模型能力的上限——如果训练集中噪声过多、类别不均衡或标注错误,后续无论怎么调参都难以获得理想效果。
2.2 验证集:模型调优的“模拟考”
核心定义:验证集(Validation Set)是从训练数据中额外留出的一部分样本,用于在训练过程中评估模型表现,指导超参数调整和模型结构选择。验证集不参与梯度更新,但会参与决策过程——比如决定学习率、网络层数、正则化系数等。
关键作用:
- 超参数调优:Edge Impulse 的“NN Classifier”页面中,学习率、训练周期数、隐藏层神经元数量等参数,需要通过验证集表现来确定最优组合。
- 早停(Early Stopping):当验证集损失连续多个 epoch 不再下降时,训练应提前终止,防止过拟合。
- 模型选择:在多个候选模型(如不同结构的神经网络、不同特征提取方法)之间做比较时,以验证集指标为准。
验证集的比例通常为 10%~15%。在 Edge Impulse 中,验证集一般从训练集中再划分出来,而不是单独从原始数据中切分。例如,原始数据 1000 条,先分出 150 条作为测试集,剩余 850 条中再分出 100 条作为验证集,最终训练集为 750 条。
2.3 测试集:模型部署前的“终考”
核心定义:测试集(Test Set)是在模型训练和调优全部完成后,用于最终评估模型泛化能力的数据子集。测试集在训练过程中完全不可见,模拟的是模型部署后遇到的全新数据。
关键作用:
- 泛化能力评估:测试集准确率、F1 分数等指标,是判断模型是否真正“学会”而非“背会”的唯一依据。
- 部署决策:在 Edge Impulse 中,测试集评估通过后,模型才会被允许导出为 TensorFlow Lite、OpenMV 或 Arduino 库等部署格式。
- 对比基准:测试集指标可作为后续模型迭代的基准线,用于衡量每次改动是否真正带来性能提升。
2.4 常见划分比例与选择依据
| 划分方案 | 训练集 | 验证集 | 测试集 | 适用场景 |
|---|---|---|---|---|
| 经典比例 | 70% | 15% | 15% | 数据量中等(1000~10000 条),需要平衡训练与评估 |
| 大数据倾向 | 80% | 10% | 10% | 数据量充足(>10000 条),验证集和测试集绝对数量足够 |
| 小数据保护 | 60% | 20% | 20% | 数据量较少(<500 条),需要保证验证和测试的可靠性 |
| 极端情况 | 90% | 5% | 5% | 数据量极大(>100000 条),少量评估样本已足够 |
选择划分比例时需考虑三个因素:数据总量(总量越大,验证/测试集比例可越小)、类别均衡性(每个类别在三个集合中都要有足够样本)、任务复杂度(复杂任务需要更多验证集来调参)。Edge Impulse 默认采用 80/10/10 划分,但建议根据实际数据量调整。
2.5 案例拆解:智能家居语音唤醒词识别项目
背景与约束:某团队使用 Edge Impulse 开发一个针对“小爱同学”唤醒词的识别模型,目标部署在低功耗 MCU 上。团队采集了 3 位说话人、每人 200 条、共 600 条音频样本,每条时长 1 秒,采样率 16kHz。约束条件:MCU 内存仅 256KB,模型需在 50ms 内完成推理。
初始现象与目标:团队最初使用默认的 80/10/10 划分,即 480 条训练、60 条验证、60 条测试。训练后模型在测试集上准确率达到 97%,但部署到真实环境中,唤醒率骤降至 82%,误唤醒率明显上升。
关键输入数据与指标:
- 训练集准确率:99.2%
- 验证集准确率:96.8%
- 测试集准确率:97.0%
- 真实环境唤醒率:82.3%
- 真实环境误唤醒率:每 10 分钟 3.2 次
分析判断过程:团队发现测试集准确率与真实环境差距巨大,怀疑数据划分存在两个问题:第一,600 条样本中,3 位说话人的数据被随机打乱后划分,导致训练集和测试集中都包含同一位说话人的不同样本,模型“记住”了说话人特征而非唤醒词本身;第二,测试集仅 60 条,统计波动大,置信区间过宽。
实际操作步骤:
- 改为按说话人分层划分:将 3 位说话人的数据分别按 70/15/15 切分,确保训练集包含 2 位完整说话人(约 420 条),验证集和测试集各包含 3 位说话人的部分样本(各 90 条)。
- 在 Edge Impulse 的“Data acquisition”页面,使用“Split by label”功能,并手动指定按说话人 ID 分组。
- 增加数据增强:对训练集中的音频添加轻微噪声、音量变化、时间偏移,模拟真实环境差异。
- 重新训练后,测试集准确率降至 94.5%,但真实环境唤醒率提升至 91.2%,误唤醒率降至每 10 分钟 0.8 次。
结果对比与复盘:虽然测试集准确率下降了 2.5 个百分点,但真实环境表现大幅提升。团队复盘得出三条经验:第一,小数据集下随机划分容易造成数据泄漏,必须按实体(说话人、设备、场景)分层;第二,测试集样本量过少时,准确率波动可达 ±5%,应至少保证每个类别 20 条以上;第三,Edge Impulse 的“Model testing”页面提供了混淆矩阵和 per-class 指标,应结合这些信息判断模型在哪些具体类别上泛化不足,而非只看总体准确率。
2.6 常见误区与总结复盘
误区一:训练集、验证集、测试集划分后不再变动。实际上,当数据分布发生变化(如新增传感器、更换采集环境)时,应重新划分并重新评估模型。Edge Impulse 支持增量学习,但旧模型评估结果不能代表新数据分布下的表现。
误区二:验证集和测试集可以互换使用。验证集用于调参,测试集用于终评,两者角色不可混淆。如果反复使用测试集调参,测试集就失去了独立评估的意义。
误区三:划分比例必须严格遵循 70/15/15 或 80/10/10。这些比例只是经验值,并非数学最优。关键在于每个集合的绝对样本量是否足够。例如,100 条数据按 80/10/10 划分,测试集仅 10 条,评估结果毫无统计意义。
误区四:忽略类别均衡。在 Edge Impulse 中,如果某个类别样本极少,划分后可能训练集中只有几条该类别样本,导致模型完全无法学习该类特征。应使用分层采样(Stratified Sampling)确保每个类别在三个集合中的比例一致。
- 训练集负责学习参数,验证集负责调优超参数,测试集负责最终泛化评估,三者严格隔离。
- 常见划分比例 70/15/15 和 80/10/10 适用于不同数据规模,小数据应增大验证/测试集比例。
- Edge Impulse 中可通过“Split by label”或手动标记实现分层划分,按说话人、设备、场景等实体维度划分可避免数据泄漏。
- 测试集只能使用一次,反复使用会导致评估结果虚高。
- 真实部署表现与测试集指标可能存在差距,应通过增加数据多样性、数据增强等手段缩小这一差距。