4. 特征工程基础

在TinyML传感器部署中,原始传感器数据几乎从不直接送入模型。无论是加速度计、陀螺仪、麦克风还是环境光传感器,其输出都是一串随时间变化的离散采样点。特征工程的核心任务,就是从这些原始时间序列中提取出对目标任务(如跌倒检测、关键词识别、电机异常诊断)最具判别力的信息,同时丢弃噪声与冗余。本章聚焦于两类最基础也最常用的特征——时域特征与频域特征,并重点剖析它们对采样率的敏感性。理解这种敏感性,是排错“采样率不一致”与“特征错位”问题的理论前提。

传感器特征提取链路与采样率敏感性 传感器 Fs = 100 Hz 采样率不一致 实际Fs=80Hz 或抖动 时域特征 均值 / 方差 / 峰值 峰峰值 / 均方根 过零率 / 波形因子 对采样率敏感度:中 频域特征 FFT幅度谱 / 功率谱 频谱能量 / 主频位置 谱质心 / 带宽 对采样率敏感度:高 特征错位风险 窗口长度变化 → 特征维度漂移 → 模型输入错位 固定窗口分割 窗口N=50点 → 时域特征维度固定 特征向量 [均值, 方差, 峰值, 频谱能量, ...] 模型推理 图:特征提取链路中采样率变化对时域/频域特征的影响路径

上图展示了从传感器原始数据到特征向量再到模型推理的完整链路。其中“采样率不一致”与“特征错位”是TinyML部署中最常见的两类故障源。时域特征直接依赖采样点的统计量,频域特征则依赖FFT的分辨率与频率映射关系。下面分别展开。

4.1 时域特征:均值、方差、峰值及其计算原理

时域特征直接在原始时间序列上计算,不涉及频率变换,计算量小,非常适合在MCU上实时运行。其数学定义清晰,物理意义直观,是TinyML模型最常用的输入特征之一。

均值(Mean)反映信号的直流分量或趋势中心。对于加速度计,均值对应重力分量;对于麦克风,均值接近零(交流信号)。计算公式为:

μ = (1/N) * Σ x[i]   (i = 1..N)

其中N为窗口内采样点数。均值对采样率不敏感,只要窗口时间长度固定,均值基本不变。但若窗口点数N因采样率变化而改变,均值的统计稳定性会受影响。

方差(Variance)衡量信号围绕均值的波动程度,是振动、冲击检测的核心特征。计算公式为:

σ² = (1/N) * Σ (x[i] - μ)²

方差对采样率较为敏感。若采样率降低,高频波动被欠采样,方差会系统性偏小;若采样率升高,噪声被更完整地捕获,方差可能偏大。这种偏差在部署时若未校准,会导致模型输入分布漂移。

峰值(Peak)与峰峰值(Peak-to-Peak)用于捕捉瞬态冲击。峰值定义为窗口内最大值,峰峰值定义为最大值减最小值。峰值对采样率极其敏感——如果采样率不足,真正的冲击峰值可能恰好落在两个采样点之间,导致峰值被低估。例如,一个持续2ms的冲击,在100Hz采样率下仅能采到0.2个点,几乎无法捕捉;在1kHz下能采到2个点,峰值估计误差仍可能超过30%。

工程经验:在TinyML中,时域特征通常在一个固定时间窗口(如2秒)内计算。窗口内采样点数N = Fs × T。若部署时采样率从100Hz降至80Hz,窗口点数从200变为160,均值变化不大,但方差和峰值会明显偏移。建议在模型训练时使用与部署目标一致的采样率,或对特征做归一化处理。

4.2 频域特征:FFT、频谱能量及其物理含义

频域特征通过傅里叶变换将时间序列映射到频率轴,揭示信号的周期性成分。在TinyML中,FFT(快速傅里叶变换)是最常用的频域分析工具,但受限于MCU算力,通常使用256点或512点FFT。

FFT基本原理:对N点离散信号x[n],其离散傅里叶变换为:

X[k] = Σ x[n] * e^(-j2πkn/N)   (n=0..N-1, k=0..N-1)

其中k对应频率分量,实际频率f = k × Fs / N。频率分辨率Δf = Fs / N。这意味着采样率Fs和FFT点数N共同决定了频率分辨率。若Fs=100Hz,N=256,则Δf≈0.39Hz;若Fs=80Hz,N=256,则Δf≈0.31Hz。频率轴刻度整体偏移,导致特征错位。

频谱能量(Spectral Energy)定义为特定频带内幅度谱的平方和:

E = Σ |X[k]|²   (k ∈ [k1, k2])

频谱能量对采样率高度敏感。采样率决定了奈奎斯特频率(Fs/2),高于此频率的信号成分会被混叠到低频区,污染频谱能量分布。例如,一个500Hz的振动信号,在1kHz采样率下能正确显示在500Hz处;若采样率降至800Hz,500Hz信号超过奈奎斯特频率400Hz,会混叠到300Hz处,导致频谱能量错位。

特征类型对采样率敏感性主要风险典型应用
均值低窗口点数变化影响统计稳定性重力估计、直流偏置
方差中高频成分欠采样导致方差偏小活动强度、振动检测
峰值/峰峰值高冲击峰值可能被漏采跌倒检测、敲击识别
FFT幅度谱高频率轴偏移、混叠电机故障诊断、声音分类
频谱能量高频带边界错位、能量泄漏语音活动检测、振动能量监测

4.3 采样率不一致对特征的具体影响机制

在TinyML部署中,采样率不一致通常表现为三种形式:标称采样率与实际采样率不符(如配置100Hz但实际只有80Hz)、采样率抖动(相邻采样间隔不均匀)、多传感器采样率不匹配(加速度计100Hz、陀螺仪50Hz)。这些都会直接破坏特征的一致性。

对时域特征的影响:假设窗口时间固定为2秒,标称100Hz应采集200点。若实际采样率只有80Hz,则只采到160点。均值计算基于160点,与训练时的200点统计量存在偏差。更严重的是,方差计算中,高频波动成分(如振动)在80Hz采样率下被低通滤波,方差值系统性偏小。峰值检测则可能完全错过短时冲击。

对频域特征的影响:FFT的频率轴映射公式f = k × Fs / N中,Fs直接参与计算。若实际Fs与配置不符,频率轴整体缩放。例如,训练时Fs=100Hz,FFT的k=10对应10Hz;部署时实际Fs=80Hz,k=10对应8Hz。模型在训练时学到的“10Hz处有能量”这一规律,在部署时变成了“8Hz处有能量”,导致特征错位。此外,采样率抖动会引起频谱泄漏,使原本集中的谱峰扩散到相邻频点。

风险警示:采样率不一致是TinyML部署中最隐蔽的故障之一。它不会导致程序崩溃,但会静默地降低模型精度。在调试时,务必使用逻辑分析仪或示波器实测传感器输出的实际采样率,而非仅信任代码配置值。一个简单的验证方法:让传感器静止,采集1秒数据,统计实际采样点数,与标称值对比。

4.4 案例拆解:电机振动监测中的特征错位排障

某工业设备预测性维护项目,使用加速度计监测电机轴承振动,采样率配置为1kHz,窗口长度1秒(即N=1000点)。模型输入特征为:均值、方差、峰值、以及0-200Hz频带能量。训练阶段在实验室数据上达到95%的准确率。

部署现象:在现场设备上部署后,准确率骤降至62%。模型频繁将正常状态误判为异常。

排查过程:首先检查传感器配置,代码中设置采样率为1kHz,但使用示波器实测发现实际采样率仅为750Hz。进一步分析发现,MCU的ADC采样由定时器触发,但定时器中断被更高优先级任务抢占,导致采样间隔不均匀,平均采样率下降。

关键数据对比:

训练时:Fs=1000Hz, N=1000点, Δf=1Hz, 0-200Hz频带对应k=0-200
部署时:Fs=750Hz, N=750点, Δf≈1.33Hz, 0-200Hz频带对应k=0-150

由于FFT点数从1000变为750,频率分辨率从1Hz变为1.33Hz,0-200Hz频带对应的k值范围从0-200变为0-150。模型训练时学习的“200Hz处能量”在部署时被映射到150Hz处,特征向量发生系统性偏移。

解决方案:采用固定时间窗口而非固定点数窗口。将窗口定义为“1秒内所有采样点”,无论实际采样率如何,都计算该时间段内的特征。同时,在特征提取前对原始数据做重采样,统一到标准采样率。具体操作:

  1. 实测实际采样率Fs_actual = 750Hz
  2. 使用线性插值将数据重采样到1000Hz
  3. 重新计算FFT和频谱能量

结果:重采样后,准确率恢复至93%。虽然仍有少量损失,但已满足生产要求。复盘发现,根本原因是MCU任务调度导致采样率不稳定,而非传感器硬件故障。

经验总结:在TinyML项目中,特征提取应基于“时间窗口”而非“点数窗口”。同时,在模型部署前,务必用实测采样率验证特征计算代码中的Fs参数。若无法保证采样率稳定,可在特征提取前加入重采样预处理,或选择对采样率不敏感的特征(如均值、过零率)。

4.5 常见误区与设计建议

误区一:认为采样率越高越好。高采样率虽然能捕获更多高频信息,但会增加MCU功耗、内存占用和计算延迟。在TinyML中,应根据信号带宽和任务需求选择合适采样率。例如,人体活动识别通常50Hz即可,电机振动监测需要1kHz以上。

误区二:忽略采样率抖动。即使平均采样率正确,采样间隔不均匀也会引入频谱泄漏。建议使用DMA(直接内存访问)配合硬件定时器,减少软件中断抖动。

误区三:训练与部署采样率不一致。这是最常见的错误。训练时使用100Hz数据,部署时实际80Hz,模型性能必然下降。最佳实践是:在训练阶段就使用与部署环境相同的采样率,或使用数据增强模拟采样率变化。

设计建议:

  • 在特征提取代码中,将采样率作为可配置参数,并在初始化时通过实测校准。
  • 使用滑动窗口时,记录窗口内实际采样点数,而非假设固定点数。
  • 对于频域特征,优先使用功率谱密度(PSD)而非原始FFT幅度,PSD对窗口长度变化更鲁棒。
  • 在模型输入层加入特征归一化,减少采样率变化引起的分布偏移。

特征工程是TinyML模型性能的基石。时域特征简单可靠,但对冲击类信号敏感;频域特征信息丰富,但高度依赖采样率准确性。理解这些敏感性,是排查“采样率不一致”与“特征错位”问题的理论基础。在实际部署中,建议先用示波器或逻辑分析仪验证传感器实际输出,再决定特征提取策略。