2、基础知识:类别不平衡的常见场景与评估指标
TinyML 模型部署在资源受限的微控制器上,其训练数据往往来自真实物理世界。与互联网应用中的海量均衡数据不同,传感器采集的物理信号天然具有强烈的类别不平衡特性:设备 99.9% 的时间处于正常运行状态,故障状态极为罕见;用户一天可能只唤醒语音助手几十次,而环境噪声却持续存在;健康监测中异常心拍在数小时的心电数据中可能仅有几十个。这种数据分布的不均衡,直接决定了模型评估方式与训练策略的选择。理解类别不平衡的本质、常见场景以及正确的评估指标,是后续采样、加权与阈值调整方法的基础。
2.1 类别不平衡的典型场景剖析
TinyML 应用中的类别不平衡并非偶然现象,而是物理世界本质规律的反映。在工业预测性维护中,旋转机械的振动信号在绝大多数时间内处于健康状态,故障特征往往在毫秒级的时间窗口内出现,且不同故障类型的出现频率差异巨大。以电机轴承故障为例,正常数据可能积累数周,而外圈故障数据可能仅有几分钟。这种极端不平衡使得模型如果简单追求整体准确率,会退化为"永远预测正常"的平庸分类器。
语音唤醒场景则呈现出另一种不平衡形态。设备在待机状态下持续采集麦克风信号,唤醒词(如"Hey Siri")的出现时长占比通常低于 0.1%,其余均为环境噪声、电视声音、他人对话等非唤醒内容。更复杂的是,非唤醒语音中可能包含与唤醒词发音相似的混淆词,这些"难负样本"虽然数量少,但对模型性能的影响远大于普通噪声。健康监测领域的不平衡则具有医学特殊性:心电数据中正常窦性心律占据主导,而室性早搏、房颤等异常心拍可能仅占 0.5%-2%,但这些异常恰恰是临床诊断的关键信息。
2.2 评估指标的数学定义与适用边界
在类别不平衡场景下,准确率(Accuracy)会给出严重误导。假设异常检测任务中正常样本占 99%,模型将所有样本预测为正常,准确率仍高达 99%,但这个模型毫无实用价值。因此,需要引入基于混淆矩阵的精细化指标。混淆矩阵将预测结果分为四类:真正例(TP)、假正例(FP)、真负例(TN)、假负例(FN)。基于此,精确率(Precision)= TP/(TP+FP) 衡量预测为正类的样本中有多少是真正的正类;召回率(Recall)= TP/(TP+FN) 衡量所有真实正类中有多少被正确找出。
F1 Score 是精确率与召回率的调和平均,公式为 F1 = 2 × (Precision × Recall) / (Precision + Recall)。调和平均的特性决定了 F1 对低值更敏感——如果精确率很高但召回率很低,F1 会被拉低,这正好符合不平衡场景的需求:模型不能只挑容易的样本预测,也不能漏掉关键的正类。AUC(Area Under the ROC Curve)则从另一个维度评估模型:它衡量模型将正样本排在负样本之前的概率,与具体分类阈值无关。AUC 的取值范围为 0.5(随机猜测)到 1.0(完美排序),适合在模型训练阶段比较不同架构或特征提取方法的优劣。
| 指标 | 公式 | 对少数类的敏感度 | TinyML 适用场景 |
|---|---|---|---|
| 准确率 | (TP+TN)/(TP+TN+FP+FN) | 极低(被多数类主导) | 仅用于类别均衡的基线对比 |
| 精确率 | TP/(TP+FP) | 中等(关注误报代价) | 语音唤醒(误唤醒体验差) |
| 召回率 | TP/(TP+FN) | 高(关注漏报代价) | 异常检测(漏报导致事故) |
| F1 Score | 2PR/(P+R) | 高(平衡精确率与召回率) | 健康监测(误报与漏报均需控制) |
| AUC | ROC 曲线下面积 | 高(阈值无关) | 模型选型与特征评估 |
在实际 TinyML 项目中,评估指标的选择需要结合部署约束。例如,在电池供电的无线传感器节点上,如果异常检测的误报(FP)会导致系统唤醒并发送无线数据,这会显著增加功耗,此时精确率的重要性上升;而在工业安全监测中,漏报(FN)可能导致设备损坏甚至人员伤亡,召回率则成为首要指标。F1 Score 提供了一种折中方案,但具体权重需要根据应用场景的代价矩阵来调整。
2.3 案例拆解:工业电机轴承故障检测的指标选择
某工厂部署了一套基于加速度计的电机轴承监测系统,MCU 为 Cortex-M4F(主频 80MHz,RAM 64KB),采样率 20kHz,每 10 秒计算一次特征并执行分类。系统目标是检测轴承外圈故障,以便及时停机维护。数据收集阶段,正常振动数据累计 120 小时,而外圈故障数据仅有 40 分钟(通过人为注入故障获得)。初始模型使用随机森林分类器,在测试集上准确率达到 98.7%,但进一步分析发现:模型对故障样本的召回率仅为 12%——即 100 次真实故障中,模型只能发现 12 次,其余 88 次被误判为正常。
这个案例清晰地展示了准确率的欺骗性。98.7% 的准确率看似优秀,但实际部署中,88% 的故障漏报意味着轴承可能在两次巡检之间彻底损坏,导致非计划停机。项目组将评估指标切换为召回率与 F1 Score 后,发现模型性能远未达标。通过调整分类阈值(从默认的 0.5 降低到 0.3),召回率提升至 78%,但精确率从 95% 下降到 61%,F1 Score 从 0.21 提升到 0.68。进一步采用 SMOTE 过采样后,F1 Score 达到 0.82,召回率 85%,精确率 79%。
2.4 常见误区与评估实践建议
第一个常见误区是"只看准确率"。在 TinyML 社区中,不少初学者在或项目报告中仅报告准确率,这在类别不平衡场景下毫无意义。第二个误区是"盲目追求高召回率"。在某些场景下,过高的召回率会导致大量误报,例如语音唤醒中,如果召回率从 95% 提升到 98%,误唤醒次数可能从每天 5 次增加到每天 50 次,用户体验急剧下降。第三个误区是"忽视评估指标的置信区间"。TinyML 测试集通常较小(尤其少数类样本可能只有几十个),此时 F1 Score 的波动范围很大,应使用 Bootstrap 方法计算 95% 置信区间。
另一个容易被忽视的问题是"数据划分方式"。在时间序列数据中,随机划分训练集和测试集可能导致数据泄漏——相邻时间窗口的数据高度相关,模型在测试集上表现良好但实际部署效果差。正确的做法是按时间顺序划分:前 70% 时间的数据用于训练,后 30% 用于测试,且确保测试集中的故障样本来自不同的时间段或不同的设备工况。对于 TinyML 项目,还应在真实硬件上进行评估,因为 MCU 上的浮点精度、内存限制可能影响模型输出,导致 PC 端评估与部署后表现不一致。
总结而言,类别不平衡评估的核心原则是:明确少数类的业务代价,选择与之匹配的评估指标,并在真实部署条件下验证。准确率只能作为辅助参考,召回率、精确率、F1 Score 和 AUC 的组合才能全面反映模型在少数类上的真实能力。这些指标不仅用于模型评价,更直接指导后续的采样策略(哪些样本需要过采样)、加权设置(少数类样本的损失权重)以及阈值调整(分类边界向多数类偏移的程度)。