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特征向量的完整处理链路:

信号识别与分类流程 信号识别与分类流程 自然域信号 技术域信号 社会域信号 信号类型识别 连续型 | 离散型 | 趋势型 | 突变型 | 模式型 | 语义型 特征提取方法 时域(统计量/峰值) | 频域(PSD/小波) | 时频域(STFT/EMD/熵) PIM特征向量(降维后5~15维)

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个监测周期后自动更新基线统计量,避免因环境漂移导致误报或漏报。