4. 信号识别与分类:早期预警信号的来源、类型与特征提取方法
在概率影响矩阵(PIM)的环境配置中,信号识别与分类是构建有效预警体系的第一道工序。本节将系统阐述早期预警信号的三大来源域、六种核心类型以及基于时频域与统计学的特征提取方法,为后续的概率赋值与影响量化奠定数据基础。
4.1 早期预警信号的来源域
根据信号产生的物理或社会机制,预警信号可归纳为三个主要来源域:
| 来源域 | 典型信号载体 | 监测手段 | 时间尺度 |
|---|---|---|---|
| 自然域 | 地震波、水位变化、气象异常、生物行为 | 传感器网络、遥感卫星、地面观测站 | 秒~月 |
| 技术域 | 设备振动、温度超限、网络流量异常、辐射泄漏 | SCADA系统、IoT终端、日志审计 | 毫秒~天 |
| 社会域 | 舆情热度、金融波动、人口迁徙、政策变更 | 社交媒体API、统计公报、文本挖掘 | 小时~年 |
关键认知:同一风险事件可能同时触发多个来源域的信号。例如,洪水灾害同时产生自然域(降雨量、水位)、技术域(堤坝应力传感器)和社会域(居民疏散信息流)三类信号,PIM配置需建立跨域信号融合机制。
4.2 信号类型体系
按信号的表现形式与物理特性,早期预警信号可分为以下六种类型:
- 连续型信号:随时间连续变化的模拟量,如温度、压力、位移。特征提取常用滑动窗口统计。
- 离散型信号:在特定时间点发生的计数或状态跳变,如设备故障次数、报警触发次数。
- 趋势型信号:反映长期变化方向的序列,如年均气温上升斜率、资产价格移动平均线。
- 突变型信号:短时间内幅值剧烈变化,如地震P波到达、网络DDoS攻击流量尖峰。
- 模式型信号:重复出现的特定波形或序列,如机械故障的频谱特征、心电图的异常节律。
- 语义型信号:通过自然语言或符号表达的非数值信息,如“红色预警”文本、社交媒体关键词频次。
配置建议:在PIM的环境配置阶段,建议为每种信号类型预设独立的特征提取管道。突变型信号应配置高速缓存与实时触发逻辑,而趋势型信号则可使用降采样与批处理模式以降低计算负载。
4.3 信号特征提取方法
特征提取是将原始信号转换为PIM可处理的特征向量的核心步骤。以下为三类主流方法及其适用场景:
4.3.1 时域特征提取
- 统计量:均值、方差、峰度、偏度、均方根(RMS)
- 峰值检测:局部极大值、过零率、脉冲因子
- 相关性:自相关函数、互相关峰值
4.3.2 频域特征提取
- 傅里叶变换:功率谱密度(PSD)、主频分量、谐波能量比
- 小波变换:多尺度分解系数、小波能量熵
- 倒谱分析:用于语音与机械振动信号的周期成分分离
4.3.3 时频域与非线性特征
- 短时傅里叶变换(STFT):生成时频谱图,适用于非平稳信号
- 经验模态分解(EMD):将信号分解为本征模态函数(IMF)
- 样本熵/近似熵:衡量信号复杂度和不规则性
工程陷阱:特征维度过高会导致PIM矩阵稀疏化,降低概率估计的可靠性。建议在特征提取后使用主成分分析(PCA)或互信息排序进行降维,保留前5~15个最具判别力的特征。
4.4 信号识别与分类流程
下图展示了从原始信号到PIM特征向量的完整处理链路:
4.5 信号特征提取示例代码
以下Python代码展示了从振动信号中提取时域与频域特征的基本流程,适用于技术域设备预警:
import numpy as np
from scipy import signal, stats
def extract_vibration_features(raw_signal, fs=1000):
"""
从原始振动信号中提取早期预警特征
参数:
raw_signal: 1-D numpy array, 原始时域信号
fs: 采样频率 (Hz)
返回:
features: dict, 包含时域与频域特征
"""
# 时域特征
rms = np.sqrt(np.mean(raw_signal**2))
peak = np.max(np.abs(raw_signal))
crest_factor = peak / rms if rms != 0 else 0
skewness = stats.skew(raw_signal)
kurtosis = stats.kurtosis(raw_signal)
# 频域特征(功率谱密度)
freqs, psd = signal.welch(raw_signal, fs, nperseg=256)
dominant_freq = freqs[np.argmax(psd)]
psd_energy = np.sum(psd)
# 包络谱特征(适用于轴承故障)
analytic_signal = signal.hilbert(raw_signal)
envelope = np.abs(analytic_signal)
env_fft = np.fft.rfft(envelope)
env_freqs = np.fft.rfftfreq(len(envelope), 1/fs)
features = {
'rms': rms,
'peak': peak,
'crest_factor': crest_factor,
'skewness': skewness,
'kurtosis': kurtosis,
'dominant_freq_hz': dominant_freq,
'psd_total_energy': psd_energy,
'envelope_peak_freq': env_freqs[np.argmax(np.abs(env_fft[1:])) + 1]
}
return features
工程实践提示:上述代码中的
crest_factor(峰值因子)和 kurtosis(峭度)对早期冲击性故障极为敏感,常作为PIM中“信号异常概率”的输入特征。建议在部署前对每个特征进行归一化处理,使其值域映射到[0,1]区间,以适配概率影响矩阵的数值范围。
4.6 信号分类的决策逻辑
完成特征提取后,信号需被分配至PIM中的对应风险类别。以下为基于阈值的分类规则示例:
| 特征组合条件 | 信号分类 | PIM概率等级 | 典型响应 |
|---|---|---|---|
| 峭度 > 3.5 且 峰值因子 > 5 | 冲击型异常 | 高(0.7~0.9) | 立即停机检查 |
| RMS 持续上升 > 10% / 天 | 退化趋势 | 中(0.4~0.6) | 安排预防性维护 |
| 主频偏移 > 5% 且 能量下降 | 结构松动 | 中高(0.5~0.7) | 紧固检查 |
| 所有特征在基线 ±2σ 内 | 正常 | 低(0.0~0.2) | 继续监测 |
配置要点:上述阈值需根据具体设备的历史数据动态校准。建议在PIM环境配置中引入“自适应阈值模块”,每运行100个监测周期后自动更新基线统计量,避免因环境漂移导致误报或漏报。