第4章 特征工程(上):时域与频域特征提取
大家好,我是你们的老朋友。今天咱们聊聊特征工程里最基础、也最核心的一块——时域和频域特征提取。说实话,我见过不少同学一上来就堆模型,结果数据质量不行,模型再花哨也白搭。特征工程,说白了就是帮模型“看清”数据里的规律。
核心观点:好的特征工程,能让简单模型跑出复杂效果;差的特征工程,再牛的深度学习也救不回来。
4.1 时域特征:从波形里“抠”出信息
时域特征,就是直接从原始振动信号的时间序列里算出来的统计量。嗯,这里要注意,这些特征虽然简单,但往往非常有效。我在风电项目里,就靠几个时域特征把RUL预测误差降了15%。
4.1.1 均值(Mean)
均值反映信号的“中心趋势”。说白了,就是信号的平均水平。
import numpy as np
def extract_mean(signal):
return np.mean(signal)
我个人习惯,在提取均值前先检查信号是否平稳。如果信号有趋势项,均值会漂移,这时候直接算均值意义不大。
4.1.2 方差(Variance)
方差衡量信号的波动程度。风机轴承磨损越严重,振动信号的方差往往越大。
def extract_variance(signal):
return np.var(signal)
避坑指南:我曾经在某个项目里,直接用原始信号的方差做特征,结果模型训练时梯度爆炸。后来发现,方差值太大,需要做归一化处理。
4.1.3 峰值(Peak Value)
峰值就是信号的最大绝对值。它反映信号的“冲击程度”。风机叶片出现裂纹时,峰值会突然增大。
def extract_peak(signal):
return np.max(np.abs(signal))
你想想看,一个正常运转的风机,振动峰值应该在一个稳定范围内。一旦峰值突然跳变,十有八九是出问题了。
4.1.4 峭度(Kurtosis)
峭度描述信号分布的“尖锐程度”。正常信号接近正态分布,峭度≈3。故障信号往往有更多冲击成分,峭度会明显大于3。
def extract_kurtosis(signal):
n = len(signal)
mean = np.mean(signal)
std = np.std(signal)
kurt = np.sum((signal - mean)**4) / (n * std**4)
return kurt
我的经验:峭度对早期故障非常敏感。我在做齿轮箱故障诊断时,峭度值从3.1跳到4.5,就预示着齿面开始出现微裂纹了。
4.2 频域特征:换个角度看信号
时域特征看的是“随时间怎么变”,频域特征看的是“能量分布在哪些频率上”。说白了,就是给信号做“频率体检”。
4.2.1 快速傅里叶变换(FFT)
FFT是把时域信号转换到频域的“神器”。它告诉我们信号里包含哪些频率成分。
def compute_fft(signal, sampling_rate):
n = len(signal)
fft_vals = np.fft.fft(signal)
fft_freq = np.fft.fftfreq(n, d=1/sampling_rate)
# 只取正频率部分
half_n = n // 2
return fft_freq[:half_n], np.abs(fft_vals[:half_n])
注意:FFT的结果是对称的,我们通常只取正频率部分。我刚开始做时,忘了取绝对值,结果画出来的频谱图乱七八糟,排查了半天才发现问题。
4.2.2 频谱能量(Spectral Energy)
频谱能量衡量信号在频域上的“总能量”。风机轴承故障时,高频段的能量会明显增加。
def extract_spectral_energy(fft_magnitude):
return np.sum(fft_magnitude**2)
实用技巧:我建议把频谱分成低频段(0-500Hz)、中频段(500-2000Hz)、高频段(2000Hz以上)分别计算能量。这样能更精细地捕捉故障特征。
4.3 知识体系总览
下面这张图,是我自己总结的特征工程核心逻辑。你看一遍,基本就明白今天讲的内容在整个流程里的位置了。
4.4 特征提取实战要点
| 特征名称 | 物理含义 | 故障敏感性 | 注意事项 |
|---|---|---|---|
| 均值 | 信号中心趋势 | 低(对平稳信号有效) | 需去除趋势项 |
| 方差 | 信号波动程度 | 中 | 需归一化处理 |
| 峰值 | 信号冲击强度 | 高 | 对噪声敏感 |
| 峭度 | 信号分布尖锐度 | 极高(早期故障) | 需足够样本量 |
| 频谱能量 | 频域总能量 | 中高 | 分频段计算更有效 |
重要提醒:特征提取不是越多越好。我见过有人一口气提取了50多个特征,结果模型过拟合得一塌糊涂。记住,好的特征工程是“少而精”,不是“多而杂”。
好了,今天的内容就到这里。时域和频域特征,是风机RUL预测的“地基”。地基打不牢,上面盖再漂亮的模型也是空中楼阁。下一章,咱们接着聊特征工程的“下半场”——时频域特征和特征选择。到时候见!