4. 信号预处理与质量控制

数字生物标志物的原始信号几乎不可能直接进入特征提取阶段。无论是可穿戴设备采集的PPG、加速度计信号,还是脑电、肌电、眼动信号,都会叠加生理噪声、运动伪迹、工频干扰、电极接触不良、采样抖动等问题。预处理与质量控制的目标不是“把信号修得好看”,而是在尽量保留生理信息的前提下,抑制非生理成分,并给出每个数据片段是否可用的量化判断。这一节按处理链顺序展开:滤波、去噪、重采样、缺失值处理、异常检测,最后落到信号质量自动分级。

滤波:先明确保留频带,再选滤波器

滤波的第一步不是选工具,而是确定生理有效频带。以PPG为例,心率相关基频约0.5~4 Hz,呼吸调制在0.1~0.5 Hz,而运动伪迹常集中在0.5~5 Hz并与心率频带重叠,工频干扰在50 Hz(或60 Hz)。因此PPG通常采用0.5~8 Hz带通保留脉搏波形,再用50 Hz陷波抑制工频。EEG则常见0.5~45 Hz带通,并按分析目的拆出δ、θ、α、β子带。

滤波器选型上,离线分析可用零相位filtfilt避免相位延迟;实时嵌入式场景只能用因果IIR(如Butterworth),但需接受群延迟。一个可复现的Python示例:

from scipy.signal import butter, filtfilt, iirnotch
# PPG: 0.5–8 Hz 带通,fs=64 Hz
b, a = butter(4, [0.5/(64/2), 8/(64/2)], btype='band')
ppg_f = filtfilt(b, a, ppg_raw)
# 50 Hz 陷波
bn, an = iirnotch(50/(64/2), Q=30)
ppg_f = filtfilt(bn, an, ppg_f)

判断滤波是否合理,不能只看波形是否平滑,而应检查通带内幅度是否保留、阻带衰减是否足够、相位是否引入偏移。若滤波后心率谱峰位置发生明显偏移,说明通带设置或阶数有问题。

去噪:区分随机噪声与结构化伪迹

去噪与滤波不同:滤波处理频带,去噪处理统计特性。常见方法包括小波阈值去噪、经验模态分解(EMD/CEEMDAN)、自适应滤波和基于加速度参考的运动伪迹去除。小波去噪的关键参数是小波基、分解层数、阈值规则。例如对64 Hz PPG做4层db4分解,对细节系数采用软阈值,阈值取σ√(2lnN),σ用第一层细节系数的MAD估计。运动伪迹若与加速度信号相关,可用LMS自适应滤波,以三轴加速度为参考输入,从PPG中减去与运动相关的成分。

去噪不是越强越好。过度去噪会削平脉搏波的上升支和重搏切迹,直接影响脉搏波形态类特征(如反射指数、 augmentation index)的可靠性。建议保留原始与去噪两路信号,在特征层做一致性比对。

重采样:统一时间基准

多模态数字生物标志物常涉及不同采样率:PPG 64 Hz、加速度 50 Hz、EEG 256 Hz、眼动 1000 Hz。重采样有两个方向:降采样需先抗混叠低通,再抽取;升采样需先插值再低通。统一到目标采样率后,才能做时间对齐和联合特征。重采样必须记录原始采样率、目标采样率、抗混叠滤波器截止频率和插值方法,否则后续时间窗特征无法复现。

缺失值处理:先分类,再决定策略

缺失不是单一现象,至少分三类:短时丢包(如蓝牙传输丢帧,连续几十毫秒)、长时脱落(电极脱落、设备摘下,持续数秒以上)、结构性缺失(某通道整段未采集)。短时丢包可用线性或样条插值;长时脱落不应插值,应标记为无效段;结构性缺失只能整段剔除或改用其他通道。插值长度建议设上限,例如连续缺失超过200 ms即不插值,直接置为NaN并进入质量分级。

异常检测:幅值、斜率与统计三类判据

异常检测常用三类判据:幅值越界(超过生理合理范围,如PPG交流分量超过基线数倍)、斜率突变(相邻样本差分超过阈值,提示尖峰或饱和)、统计离群(滑动窗口内均值、方差、峰度偏离基线分布)。工程上常组合使用:先做幅值和斜率硬阈值剔除,再用稳健Z分数(基于中位数和MAD)标记统计离群点。异常点应被标记而非直接删除,保留标记供质量分级使用。

信号质量自动分级:把判断变成可计算指标

质量分级的目标是给每个时间窗输出一个可比较的质量等级,供后续特征提取和模型训练筛选。常用指标包括:信号质量指数(SQI)、灌注指数、模板匹配相关系数、频谱信噪比、峰间期变异。以PPG为例,可计算每个5 s窗口的:

  • 模板匹配相关系数 r:与个体模板脉搏波的相关性,r > 0.8 为优;
  • 频谱信噪比 SNR:心率基频及谐波功率与总功率之比;
  • 峰间期变异 CV:相邻脉搏峰间期的变异系数,过大提示节律不稳或伪迹;
  • 缺失比例:窗口内NaN样本占比。

将上述指标映射为等级:A级(r > 0.8 且 SNR > 5 dB 且缺失 < 5%)、B级(r 0.6~0.8 或 SNR 2~5 dB)、C级(r < 0.6 或 SNR < 2 dB 或缺失 > 20%)。A级直接用于特征提取,B级可降权使用,C级剔除。分级阈值必须基于训练集分布确定,并在独立测试集上验证其与下游任务性能的相关性。

信号预处理与质量控制处理链 原始信号 → 滤波 → 去噪 → 重采样 → 缺失值处理 → 异常检测 → 质量分级 原始信号 PPG / ACC / EEG fs=64/50/256 Hz 含噪声与伪迹 滤波 带通 0.5–8 Hz 50 Hz 陷波 filtfilt 零相位 去噪 小波阈值 / EMD LMS 自适应 保留形态特征 重采样 抗混叠低通 统一时间基准 记录原始fs 缺失值处理 短时插值 长时标记无效 上限 200 ms 异常检测 幅值/斜率 稳健Z分数 标记不删除 信号质量自动分级 窗口 5 s · 指标:r / SNR / CV / 缺失率 A 级 r>0.8 SNR>5dB B 级 r 0.6–0.8 SNR 2–5dB C 级 r<0.6 缺失>20% A:直接特征提取 B:降权使用 C:剔除 阈值基于训练集分布确定,独立测试集验证 关键参数与判据速查 滤波 PPG:0.5–8 Hz 带通 + 50 Hz 陷波 EEG:0.5–45 Hz 带通 离线 filtfilt / 实时因果 IIR 去噪 小波:db4,4层,软阈值 σ√(2lnN) σ 用第一层细节系数 MAD 估计 LMS 以三轴 ACC 为参考 缺失值 短时丢包:线性/样条插值 长时脱落:标记无效段 插值上限:连续缺失 ≤ 200 ms 异常检测 幅值越界 + 斜率突变硬阈值 稳健 Z 分数(中位数 + MAD) 异常点标记,不直接删除 ⚠ 预处理顺序影响结果:先滤波再去噪可避免伪迹被放大;重采样应在滤波之后、特征提取之前完成。 质量分级阈值必须基于训练集分布确定,并在独立测试集上验证其与下游任务性能的相关性。

处理顺序与可复现性

上述步骤的顺序并非随意。一般建议:先滤波,再去噪,再重采样,再缺失值处理,再异常检测,最后质量分级。原因在于:若先去噪再滤波,伪迹可能被去噪算法放大或扩散;若先重采样再滤波,降采样前的抗混叠低通会与后续带通重复,且可能改变噪声统计特性。每一步都应记录输入输出、参数和版本,形成可追溯的预处理流水线。

质量分级不是一次性动作。同一段信号在不同下游任务中的可用性不同:心率估计对运动伪迹容忍度较高,而脉搏波形态分析对基线漂移和模板匹配要求更严。因此分级阈值应随任务调整,并在报告中明确说明所用阈值和验证方式。

最后需要强调:预处理与质量控制的输出不仅是“干净信号”,还包括每个时间窗的质量标签、缺失掩码、异常标记和参数记录。这些元数据与信号本身同等重要,它们决定了后续特征提取和模型训练能否被复现、审计和解释。把质量控制做成可计算、可追溯、可验证的环节,是数字生物标志物从实验室走向真实世界应用的必要条件。