第1章:特征工程(上)——时域与频域特征提取及选择方法

各位同行,大家好。我是老张,在风电运维这行摸爬滚打了十几年。今天咱们聊聊特征工程,这玩意儿说白了,就是给数据“化妆打扮”,让模型能看懂、能学好。

你想想看,传感器采集回来的原始信号,就像一堆乱码。直接扔给模型?它肯定懵圈。所以,我们得从这些信号里,把真正有用的“特征”给揪出来。这一章,咱们就聚焦在时域和频域特征上,再聊聊怎么挑出最管用的那几个。

特征工程核心流程 时域特征提取 均值、方差、峰值、峭度 频域特征提取 FFT、功率谱密度 特征选择方法 过滤式、包裹式、嵌入式

1. 时域特征:看信号在时间轴上的“脾气”

时域特征,就是直接看信号随时间怎么变化。我习惯先从这里入手,因为它最直观,计算也快。

1.1 均值与方差

均值,就是信号的平均水平。比如齿轮箱振动信号的平均幅值,能反映整体能量大小。但光看均值不够,还得看方差,它描述信号波动有多大。波动越大,方差越大,说明设备状态可能越不稳定。

实战经验: 我在项目里遇到过,轴承早期故障时,均值变化不大,但方差会先悄悄变大。所以,方差是个很灵敏的“哨兵”。

1.2 峰值与峭度

峰值,就是信号的最大值。它很敏感,能快速捕捉到冲击信号。比如叶片受到一次强风冲击,峰值会瞬间飙升。

峭度,这个稍微抽象点。它衡量信号分布的“尖锐”程度。正常信号,峭度值接近3。如果峭度远大于3,说明信号里出现了很多“尖刺”,这往往是故障的前兆。

避坑指南: 我曾经只盯着峰值看,结果误报了好几次。后来发现,峰值容易受噪声干扰。峭度虽然好,但对早期微弱故障不敏感。所以,我建议把峰值和峭度结合起来看,互相印证。

2. 频域特征:换个角度看问题

时域信号看着乱,但一转到频域,规律就出来了。说白了,就是把信号拆解成不同频率的正弦波,看看哪个频率的能量大。

2.1 快速傅里叶变换(FFT)

FFT是频域分析的基石。它能把时域信号,变成频谱图。横轴是频率,纵轴是幅值。比如,齿轮的啮合频率是100Hz,如果频谱图上100Hz处幅值突然变大,那齿轮可能出问题了。

import numpy as np
from scipy.fft import fft

# 假设 signal 是采集到的振动信号
fs = 2560  # 采样频率
n = len(signal)
freq = np.fft.fftfreq(n, 1/fs)
fft_values = fft(signal)
amplitude = np.abs(fft_values) / n * 2

# 只取正频率部分
positive_freq = freq[:n//2]
positive_amp = amplitude[:n//2]

2.2 功率谱密度(PSD)

PSD比FFT更进一步。它告诉你,信号的能量在不同频率上是怎么分布的。我常用它来分析轴承的故障特征频率。PSD能有效抑制噪声,让特征频率更突出。

个人经验: 记得有一次,FFT图上噪声很大,看不清故障频率。我改用PSD,故障频率一下就凸显出来了。所以,当FFT效果不好时,试试PSD,往往有惊喜。

3. 特征选择:去粗取精,只留精华

特征提取完了,可能有好几十个。全扔给模型?不行,会过拟合,计算也慢。所以得挑出最管用的那几个。常用的方法有三类。

3.1 过滤式方法

这种方法,不依赖任何模型,直接算特征和目标变量之间的相关性。比如皮尔逊相关系数、卡方检验。速度快,适合初步筛选。

避坑指南: 我曾经用过滤式方法,把相关性低的特征全删了。结果模型效果反而变差。为什么?因为有些特征单独看相关性低,但组合起来很有用。所以,过滤式只能做粗筛,别太依赖它。

3.2 包裹式方法

这种方法,把特征选择当成一个搜索问题。它用模型的表现来评价特征子集的好坏。比如递归特征消除(RFE)。效果好,但计算量大。

from sklearn.feature_selection import RFE
from sklearn.ensemble import RandomForestRegressor

# 假设 X 是特征矩阵,y 是剩余寿命
estimator = RandomForestRegressor(n_estimators=100)
selector = RFE(estimator, n_features_to_select=5, step=1)
selector = selector.fit(X, y)

# 选中的特征
selected_features = X.columns[selector.support_]

3.3 嵌入式方法

这种方法,把特征选择嵌入到模型训练过程中。比如Lasso回归(L1正则化)、决策树模型的特征重要性。它兼顾了过滤式的速度和包裹式的效果,是我个人最常用的。

实战经验: 我习惯先用嵌入式方法(比如随机森林的特征重要性)快速锁定几个关键特征,然后再用包裹式方法微调。这样既快又准。

4. 总结一下

这一章,咱们聊了时域特征(均值、方差、峰值、峭度)、频域特征(FFT、PSD),以及三种特征选择方法。记住,特征工程没有银弹,多试、多对比,才能找到最适合你数据的那一套。

重要提醒: 特征提取和选择,一定要结合业务知识。比如,你知道轴承的故障频率是多少,那提取特征时就重点看那个频段。别盲目堆砌特征,那是新手常犯的错。

好了,今天就到这儿。下一章,咱们接着聊特征工程的“下篇”,到时候见。


专注资料整理