3. 医疗边缘数据预处理与特征工程
医疗边缘设备采集到的原始信号,几乎不可能直接送进异常检测模型。以可穿戴心电贴为例,电极接触阻抗变化会引入基线漂移,患者走动会产生肌电伪迹,蓝牙丢包会造成整段样本缺失,而不同设备的 ADC 量程又各不相同。如果跳过预处理,模型学到的往往是"哪台设备、哪种体位",而不是"哪种病理状态"。本节按数据在边缘侧的实际流转顺序,讲清噪声滤波、缺失值处理、归一化、滑动窗口、时域/频域/时频域特征提取,以及面向异常检测的特征选择这六个环节该怎么做、参数怎么定、结果怎么判断。
一、噪声滤波:先分清噪声的频段归属
滤波不是"套一个低通",而是先判断干扰落在哪个频段。医疗边缘常见三类干扰:基线漂移(0.05~0.5 Hz,呼吸和电极极化引起)、工频干扰(50 Hz 及其谐波)、肌电与运动伪迹(20~200 Hz,与心电 QRS 频段重叠)。对心电信号,典型处理链是:先用 0.5 Hz 高通或中值滤波去基线,再用 50 Hz 陷波器抑制工频,最后用 40 Hz 低通保留诊断带宽。若采样率为 250 Hz,一个二阶巴特沃斯低通在 40 Hz 处的衰减约 −12 dB/倍频程,足以压制高频噪声而基本不削 QRS 幅值。
边缘算力有限时,优先选 IIR 而非高阶 FIR:二阶节(biquad)每样本只需约 5 次乘加,而 200 阶 FIR 需要 200 次。判断滤波是否合格,不能只看波形"变光滑",应观察三项指标:基线漂移后 ST 段是否回到等电位线、50 Hz 陷波后频谱在 50 Hz 处是否下降 20 dB 以上、滤波前后 R 波峰值变化是否小于 5%。若 R 波被削平超过 10%,说明截止频率设得过低,会直接损害异常检测对 QRS 形态的敏感度。
二、缺失值处理:区分"丢包"与"未采集"
边缘场景的缺失有两类,处理方式完全不同。第一类是通信丢包造成的整段空洞,第二类是传感器脱落造成的持续无效值(如电极阻抗超限)。对短空洞(≤ 3 个采样点),线性插值即可;对 3~20 点的空洞,可用三次样条,但必须在特征中标记"该窗口含插值",避免模型把插值段当作真实信号。对超过 200 ms 的持续缺失,正确做法是丢弃该窗口而非强行填补——心电在 200 ms 内可能完整包含一个 QRS 波,插值会凭空造出一个假波峰,直接触发误报。
工程上建议在数据流中维护一个质量标志位:quality = 0 表示有效,1 表示插值,2 表示丢弃。后续特征提取只对 quality=0 的窗口计算形态类特征,而心率等统计类特征可放宽到 quality≤1。这样既保住了数据量,又不让插值污染关键判据。
三、归一化:按通道、按窗口还是按患者
归一化的选择直接影响异常检测的泛化性。Z-score(减均值除标准差)适合幅值随个体差异大的信号,如心电、脑电;Min-Max 适合有明确物理量程的信号,如血氧饱和度(70%~100%)。关键决策是统计量的计算范围:按整段记录归一化会引入未来信息,按单窗口归一化会抹掉幅值异常的判据(如室颤时幅值骤降)。推荐做法是"按患者基线 + 滑动更新":用前 30 秒静息段计算基线均值和标准差,之后每 5 分钟用新数据缓慢更新,更新系数取 0.05,既适应缓慢漂移,又不被突发异常带偏。
四、滑动窗口:窗口长度由事件时长决定
窗口长度不是拍脑袋定的,而应由待检测异常的持续时间反推。房颤的 RR 间期不规则性需要至少 30 个心搏才能稳定估计,按 75 bpm 计算约 24 秒,因此窗口取 30 秒、步长 5 秒较合理;而室性早搏是单搏事件,窗口取 5~10 秒即可。步长决定告警延迟:步长 5 秒意味着最坏情况下异常发生后 5 秒才被检出。边缘告警通常要求端到端延迟小于 10 秒,因此步长不宜超过窗口的 1/4。
五、三域特征提取:各自解决什么问题
时域特征计算量最小,适合边缘实时运行。RR 间期的 SDNN 和 RMSSD 是房颤筛查的核心指标:正常窦性心律 SDNN 通常在 20~50 ms,房颤时 RR 间期绝对不规则,RMSSD 可超过 100 ms。但时域特征对形态异常不敏感,比如 ST 段抬高在 RR 间期上几乎无体现。
频域特征用 Welch 法估计功率谱,把 30 秒窗口分成 4 段、50% 重叠、加汉宁窗。LF(0.04~0.15 Hz)与 HF(0.15~0.4 Hz)的比值反映交感/副交感平衡,心肌缺血时 LF/HF 常显著升高。频域特征对平稳信号有效,但室颤这类非平稳事件会被平均掉。
时频域特征用离散小波变换(DWT)弥补这一缺陷。对 250 Hz 信号做 5 层 db4 小波分解,得到 0~4、4~8、8~16、16~32、32~64、64~125 Hz 六个频带。室颤的能量会从 8~32 Hz 向 4~8 Hz 迁移,这个"能量重心下移"是时域和频域都难以捕捉的判据。小波分解每层只需一次卷积和下采样,在 Cortex-M4 上处理 30 秒数据约 15 ms,完全满足边缘实时性。
六、面向异常检测的特征选择
三域特征全上,维度轻易超过 60 维,而边缘模型参数量有限,且异常样本天然稀少。特征选择的目标不是"选得准分类",而是"选得稳、选得省、对异常敏感"。推荐三步走:
- 过滤式初筛:先剔除方差接近零的特征(如恒定导联),再用互信息(MI)排序。MI 对非线性关系敏感,比皮尔逊相关系数更适合异常检测。保留 MI 排名前 30 的特征。
- 包裹式精筛:用递归特征消除(RFE)配合轻量分类器(如逻辑回归或 3 层决策树),每次剔除重要性最低的 10%,观察验证集 F1 变化。当 F1 下降超过 2% 时停止,通常剩 12~18 维。
- 嵌入式确认:用 L1 正则或梯度提升树的重要性做最终确认,剔除在多次交叉验证中重要性不稳定的特征。
把这条链路串起来看:滤波决定信号"干不干净",缺失值处理决定数据"可不可信",归一化决定特征"可不可比",滑动窗口决定告警"来不来得及",三域特征决定异常"看不看得见",特征选择决定模型"跑不跑得动"。六个环节中任何一环参数失当,都会在最终告警上表现为误报或漏报,而排查时必须回到对应环节用可观测指标定位,而不是盲目调模型阈值。