4. 特征工程与降维
TinyML振动异常检测的板级验证环节中,原始加速度计或麦克风采集到的信号往往包含大量冗余信息。若直接将高维原始波形送入MCU上的轻量级模型,不仅会耗尽有限的Flash与RAM资源,还会因噪声干扰导致误判率上升。特征工程的核心目标是将一段时域波形转化为一组具有物理意义、对异常敏感且计算开销可控的数值向量。本章将围绕时域特征、频域特征以及特征选择与降维方法展开,帮助你在板级资源约束下构建高效、鲁棒的振动特征管道。
上图展示了从原始振动信号到TinyML模型部署的完整特征工程链路。在板级验证阶段,我们需要同时关注特征提取的计算开销与特征向量的判别能力。下面将从时域特征、频域特征、特征选择与降维三个层面展开详细讲解。
4.1 时域特征:均值、方差与峰值
时域特征直接对采样点序列进行统计计算,具有计算简单、物理意义明确的优点,非常适合在MCU上实时运行。对于一段长度为N的振动信号x[n],常用时域特征包括:
- 均值(Mean):反映信号的直流分量或静态偏移。在旋转机械中,均值异常可能暗示轴心偏移或传感器安装松动。
- 方差(Variance):衡量信号波动程度,即振动能量在时域的体现。方差突然增大通常对应冲击、摩擦或部件松动。
- 峰值(Peak):窗口内最大绝对值,对瞬时冲击敏感,但易受噪声干扰,常与均方根值结合使用。
- 峭度(Kurtosis):描述信号分布形态的陡峭程度,正常轴承振动近似高斯分布(峭度≈3),出现故障时峭度显著升高。
- 波形因子(Form Factor):RMS与整流平均值的比值,用于区分不同类型的振动波形。
在板级实现时,需要注意均值计算会引入直流偏置,若传感器输出含有直流分量,应在特征提取前进行去均值处理。方差计算需要两次遍历数据(先求均值再求方差),在内存受限的MCU上可采用Welford在线算法,只需单次遍历即可同时更新均值和方差。
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 特征选择与降维方法
原始特征集可能包含数十个特征,但并非所有特征都对异常检测有贡献。冗余特征不仅增加计算负担,还可能导致模型过拟合。特征选择与降维的目标是在保持判别能力的前提下,最小化特征维度。常用方法分为三类:
- Filter(过滤法):基于统计指标(如相关系数、互信息、方差阈值)独立评估每个特征,不依赖具体模型。计算简单,适合板级快速筛选。例如,剔除方差接近零的常数特征,或删除与目标变量相关系数低于0.1的特征。
- Wrapper(包装法):通过训练模型评估特征子集的性能,如递归特征消除(RFE)。精度较高但计算开销大,适合离线训练阶段使用,不适用于板级在线运行。
- Embedded(嵌入法):在模型训练过程中自动进行特征选择,如决策树的特征重要性、L1正则化。训练完成后可直接输出特征权重,便于部署时只保留权重非零的特征。
降维方法中,主成分分析(PCA)是最常用的线性降维技术。PCA通过正交变换将原始特征投影到新的坐标系,保留方差最大的主成分。在TinyML场景中,PCA通常离线计算变换矩阵,然后在MCU上仅执行矩阵乘法即可完成降维。例如,将20维特征降至5维,只需存储一个20×5的变换矩阵(约400字节),计算量仅为100次乘加运算。
4.4 案例拆解:电机轴承故障检测的特征管道优化
某工业电机监测项目需要部署TinyML模型到STM32L4系列MCU(192KB RAM,1MB Flash),检测轴承早期故障。初始方案提取了12个特征(5个时域+7个频域),模型为两层全连接神经网络,但板级验证时发现以下问题:
- 内存占用超标:12个特征加上模型权重共占用约8KB RAM,接近MCU可用内存上限。
- 推理延迟过高:每次推理需要约35ms,无法满足50ms的实时监测周期要求。
- 误报率偏高:在正常工况下,由于特征冗余导致模型对微小噪声过度敏感。
优化过程如下:
- 特征筛选:使用Filter方法计算每个特征与故障标签的互信息,剔除互信息低于0.05的4个特征(包括均值、波形因子、谱质心、高频能量比)。
- PCA降维:对剩余8个特征进行PCA分析,发现前3个主成分累计方差贡献率达92%。将特征维度降至3维,变换矩阵仅需3×8=24个浮点数(96字节)。
- 模型简化:将神经网络输入层从12维改为3维,隐藏层节点从32减至16,模型参数量减少约70%。
- 定点量化:将PCA变换矩阵和模型权重量化为Q15格式,推理过程全部使用整数运算。
优化后,内存占用降至2.1KB,推理延迟降至8ms,误报率从4.2%降至1.8%。更重要的是,由于特征维度降低,模型在MCU上的功耗从12mW降至5mW,电池供电场景下续航时间延长一倍以上。
4.5 常见误区与总结复盘
在板级特征工程实践中,工程师常陷入以下误区:
- 过度追求特征数量:认为特征越多模型越准,忽略了MCU的资源限制。实际上,特征维度超过10个后,精度提升趋于饱和,而内存和功耗开销线性增长。
- 忽略采样率与窗口长度的匹配:FFT的频率分辨率等于采样率除以窗口长度。若采样率4kHz、窗口256点,频率分辨率为15.6Hz,可能无法区分相邻的故障特征频率。应根据目标故障频率范围合理选择窗口长度。
- 直接使用浮点特征:在无FPU的低端MCU上,浮点运算会消耗大量CPU周期。应优先使用定点格式或CMSIS-DSP库的优化函数。
- 忽视特征的时间稳定性:振动信号具有非平稳特性,单一窗口的特征可能波动较大。建议采用滑动窗口并计算多个窗口的特征均值,提高稳定性。
总结本章要点:时域特征适合快速粗筛,频域特征能揭示故障机理,特征选择与降维是板级部署的关键优化步骤。在实际项目中,应遵循“先离线分析、后板级验证”的流程:在PC端使用完整数据集进行特征分析和模型训练,确定最优特征子集后,再移植到MCU上进行定点化实现和实时验证。通过合理的特征工程,TinyML振动异常检测模型可以在资源受限的硬件上实现高精度、低延迟的可靠运行。