4. 特征工程与降维

TinyML振动异常检测的板级验证环节中,原始加速度计或麦克风采集到的信号往往包含大量冗余信息。若直接将高维原始波形送入MCU上的轻量级模型,不仅会耗尽有限的Flash与RAM资源,还会因噪声干扰导致误判率上升。特征工程的核心目标是将一段时域波形转化为一组具有物理意义、对异常敏感且计算开销可控的数值向量。本章将围绕时域特征、频域特征以及特征选择与降维方法展开,帮助你在板级资源约束下构建高效、鲁棒的振动特征管道。

振动信号特征工程与降维链路 原始振动信号 加速度/麦克风采样 时域特征 均值、方差、峰值 峭度、波形因子 频域特征 FFT频谱、频谱能量 主频幅值、谱质心 特征选择与降维 Filter/Wrapper/Embedded PCA / 特征重要性排序 板级内存占用评估 TinyML 模型 训练/量化/部署 板级验证反馈:精度/延迟/内存占用 → 特征迭代优化 窗口长度: 256~1024点 采样率: 1kHz~10kHz 特征维度: 5~20维 模型: 决策树/CNN

上图展示了从原始振动信号到TinyML模型部署的完整特征工程链路。在板级验证阶段,我们需要同时关注特征提取的计算开销与特征向量的判别能力。下面将从时域特征、频域特征、特征选择与降维三个层面展开详细讲解。

4.1 时域特征:均值、方差与峰值

时域特征直接对采样点序列进行统计计算,具有计算简单、物理意义明确的优点,非常适合在MCU上实时运行。对于一段长度为N的振动信号x[n],常用时域特征包括:

  • 均值(Mean):反映信号的直流分量或静态偏移。在旋转机械中,均值异常可能暗示轴心偏移或传感器安装松动。
  • 方差(Variance):衡量信号波动程度,即振动能量在时域的体现。方差突然增大通常对应冲击、摩擦或部件松动。
  • 峰值(Peak):窗口内最大绝对值,对瞬时冲击敏感,但易受噪声干扰,常与均方根值结合使用。
  • 峭度(Kurtosis):描述信号分布形态的陡峭程度,正常轴承振动近似高斯分布(峭度≈3),出现故障时峭度显著升高。
  • 波形因子(Form Factor):RMS与整流平均值的比值,用于区分不同类型的振动波形。

在板级实现时,需要注意均值计算会引入直流偏置,若传感器输出含有直流分量,应在特征提取前进行去均值处理。方差计算需要两次遍历数据(先求均值再求方差),在内存受限的MCU上可采用Welford在线算法,只需单次遍历即可同时更新均值和方差。

板级实现建议:对于Cortex-M4内核的MCU,建议使用Q15或Q31定点格式计算时域特征。浮点运算虽然方便,但会显著增加功耗和延迟。例如,计算方差时使用累加平方和与累加和的组合公式:Var = (Σx² - (Σx)²/N) / N,可避免两次遍历。

4.2 频域特征:FFT与频谱能量

频域特征通过快速傅里叶变换(FFT)将时域信号转换到频域,能够揭示振动信号的频率成分分布。对于旋转机械,不同故障类型(如轴承内圈故障、外圈故障、齿轮断齿)会在特定频率处产生特征峰值。常用频域特征包括:

  • FFT频谱:直接输出各频率分量的幅值或功率谱密度。在板级实现时,通常使用基-2 FFT算法,要求采样点数N为2的幂次(如256、512、1024)。
  • 频谱能量(Spectral Energy):对指定频带内的幅值平方求和,反映该频带的振动强度。例如,轴承故障特征频率附近的能量占比是重要指标。
  • 主频幅值(Dominant Frequency Amplitude):频谱中最大幅值对应的频率及其幅值,用于监测转速变化或共振现象。
  • 谱质心(Spectral Centroid):频谱的“重心”频率,反映信号频率分布的集中趋势。
  • 频带能量比:将频谱划分为低频(0-1kHz)、中频(1-5kHz)、高频(5-10kHz)等子带,计算各子带能量占总能量的比例。

在TinyML场景中,FFT计算是主要开销。以1024点FFT为例,Cortex-M4内核运行CMSIS-DSP库的FFT函数大约需要2-5ms,功耗约10-20mW。若采样率为4kHz,窗口长度为1024点,则每256ms可完成一次FFT计算,满足大多数工业振动监测的实时性要求。

特征类型 计算复杂度 物理意义 板级适用性
均值 O(N) 直流偏置、静态偏移 极高,单次遍历
方差 O(N) 振动波动程度 高,Welford算法
峰值 O(N) 瞬时冲击强度 高,需注意噪声
峭度 O(N) 分布形态异常 中,需乘方运算
FFT频谱 O(N log N) 频率成分分布 中,需CMSIS-DSP库
频谱能量 O(N) 频带振动强度 高,FFT后累加

4.3 特征选择与降维方法

原始特征集可能包含数十个特征,但并非所有特征都对异常检测有贡献。冗余特征不仅增加计算负担,还可能导致模型过拟合。特征选择与降维的目标是在保持判别能力的前提下,最小化特征维度。常用方法分为三类:

  1. Filter(过滤法):基于统计指标(如相关系数、互信息、方差阈值)独立评估每个特征,不依赖具体模型。计算简单,适合板级快速筛选。例如,剔除方差接近零的常数特征,或删除与目标变量相关系数低于0.1的特征。
  2. Wrapper(包装法):通过训练模型评估特征子集的性能,如递归特征消除(RFE)。精度较高但计算开销大,适合离线训练阶段使用,不适用于板级在线运行。
  3. Embedded(嵌入法):在模型训练过程中自动进行特征选择,如决策树的特征重要性、L1正则化。训练完成后可直接输出特征权重,便于部署时只保留权重非零的特征。

降维方法中,主成分分析(PCA)是最常用的线性降维技术。PCA通过正交变换将原始特征投影到新的坐标系,保留方差最大的主成分。在TinyML场景中,PCA通常离线计算变换矩阵,然后在MCU上仅执行矩阵乘法即可完成降维。例如,将20维特征降至5维,只需存储一个20×5的变换矩阵(约400字节),计算量仅为100次乘加运算。

实战经验:在板级验证时,建议先使用Filter方法快速剔除明显无效的特征,再使用Embedded方法(如训练一个浅层决策树)获取特征重要性排序。最终保留5-10个高重要性特征,既保证模型精度,又控制内存占用在2KB以内。

4.4 案例拆解:电机轴承故障检测的特征管道优化

某工业电机监测项目需要部署TinyML模型到STM32L4系列MCU(192KB RAM,1MB Flash),检测轴承早期故障。初始方案提取了12个特征(5个时域+7个频域),模型为两层全连接神经网络,但板级验证时发现以下问题:

  • 内存占用超标:12个特征加上模型权重共占用约8KB RAM,接近MCU可用内存上限。
  • 推理延迟过高:每次推理需要约35ms,无法满足50ms的实时监测周期要求。
  • 误报率偏高:在正常工况下,由于特征冗余导致模型对微小噪声过度敏感。

优化过程如下:

  1. 特征筛选:使用Filter方法计算每个特征与故障标签的互信息,剔除互信息低于0.05的4个特征(包括均值、波形因子、谱质心、高频能量比)。
  2. PCA降维:对剩余8个特征进行PCA分析,发现前3个主成分累计方差贡献率达92%。将特征维度降至3维,变换矩阵仅需3×8=24个浮点数(96字节)。
  3. 模型简化:将神经网络输入层从12维改为3维,隐藏层节点从32减至16,模型参数量减少约70%。
  4. 定点量化:将PCA变换矩阵和模型权重量化为Q15格式,推理过程全部使用整数运算。

优化后,内存占用降至2.1KB,推理延迟降至8ms,误报率从4.2%降至1.8%。更重要的是,由于特征维度降低,模型在MCU上的功耗从12mW降至5mW,电池供电场景下续航时间延长一倍以上。

风险提示:PCA降维虽然能有效压缩特征维度,但会损失部分物理可解释性。在工业现场调试时,若模型出现异常行为,难以直接定位是哪个原始特征导致的。建议在部署文档中保留PCA变换矩阵的逆变换关系,便于离线分析时还原原始特征值。

4.5 常见误区与总结复盘

在板级特征工程实践中,工程师常陷入以下误区:

  • 过度追求特征数量:认为特征越多模型越准,忽略了MCU的资源限制。实际上,特征维度超过10个后,精度提升趋于饱和,而内存和功耗开销线性增长。
  • 忽略采样率与窗口长度的匹配:FFT的频率分辨率等于采样率除以窗口长度。若采样率4kHz、窗口256点,频率分辨率为15.6Hz,可能无法区分相邻的故障特征频率。应根据目标故障频率范围合理选择窗口长度。
  • 直接使用浮点特征:在无FPU的低端MCU上,浮点运算会消耗大量CPU周期。应优先使用定点格式或CMSIS-DSP库的优化函数。
  • 忽视特征的时间稳定性:振动信号具有非平稳特性,单一窗口的特征可能波动较大。建议采用滑动窗口并计算多个窗口的特征均值,提高稳定性。

总结本章要点:时域特征适合快速粗筛,频域特征能揭示故障机理,特征选择与降维是板级部署的关键优化步骤。在实际项目中,应遵循“先离线分析、后板级验证”的流程:在PC端使用完整数据集进行特征分析和模型训练,确定最优特征子集后,再移植到MCU上进行定点化实现和实时验证。通过合理的特征工程,TinyML振动异常检测模型可以在资源受限的硬件上实现高精度、低延迟的可靠运行。