2.4 特征构建与选择


2.4 特征构建与选择

本节摘要:原始时间序列数值通常不足以直接喂给检测模型,特征工程是把"一段序列"变成"模型能消化的特征矩阵"的桥梁。本节详解滞后特征、统计特征、时域/频域特征三大类特征的构建方法与适用场景,再讲过滤式、包裹式、嵌入式三类特征选择策略的权衡。核心结论:特征不是越多越好,冗余特征会稀释信号、拉高噪声,特征选择与特征构建同样重要。

上手前先明确

阅读完本节,你应当能够:

  1. 说出滞后特征的定义,并理解滞后阶数选择的三种方式(ACF/PACF、领域知识、网格搜索)。
  2. 列出常用统计特征,并理解窗口大小选择的权衡。
  3. 区分时域特征(差分、能量、过零率)与频域特征(频谱、功率谱密度、主频分量)的构建逻辑。
  4. 理解过滤式、包裹式、嵌入式三类特征选择方法的思路差异。
  5. 为一个检测任务设计一套"够用而不冗余"的特征方案。

一、问题与直觉

两个工程师在给同一个设备故障检测系统做特征。甲把能想到的指标全塞了进去:原始值、上一时刻值、上上个时刻值、一小时均值、一小时方差、一小时最大、最小、昨天同时刻值、上周同时刻值……一共 87 列特征。乙只选了 8 列:滞后 1、滞后 12(对应每小时周期)、滑动 1 小时均值、滑动 1 小时标准差、当前时刻与昨日同时刻的差值、残差的 Z-score。

模型跑完,乙的准确率反而更高,训练快 5 倍,而且每一列特征都能跟工程师解释清楚。

这个结果一点都不反直觉。特征工程的核心不是"加得越多越好",而是"每一列都得对应一个可解释的信号来源"。 冗余特征有三个危害:一是稀释了真正有判别力的信号——当 87 列里只有 8 列有用时,模型要花大力气从噪声列里挣扎出来;二是引入多重共线性,让模型对噪声敏感;三是维度灾难——特征越多,同样样本量下模型越难收敛。

时序特征工程还有一层独特难度:原始点值本身往往不是最好的特征。 设备是否异常,更多体现在"变化率""与同时段历史的关系""局部波动模式"上,而不是"当前值是多少"。所以这一节的核心任务,是学会把时间信息转换成判别信息。

二、核心原理

2.1 滞后特征:用过去当现在的特征

滞后特征是最直观的时序特征:用 x(t-k) 作为 x(t) 的特征。逻辑基础就是第 1 章讲的"时间依赖"——过去的值包含预测现在的信息。

滞后阶数怎么定? 三个来源:

  • ACF/PACF 图:看哪些滞后阶数自相关显著。ACF 衰减慢往往需要更多滞后;PACF 在 p 阶后截断,提示 AR(p) 结构。
  • 领域知识:日周期数据用滞后 24、周周期用滞后 168,这类先验往往比数据挖掘更准。
  • 网格搜索:拿验证集跑不同滞后组合,选性能最好的。

构建示例: 序列 [1,2,3,4,5,6,7,8,9,10],取滞后 1 和滞后 2:

时间点 x(t) x(t-1) x(t-2)
2 2 1
3 3 2 1
4 4 3 2
... ... ... ...
10 10 9 8

两个坑:滞后阶数选少了漏信息,选多了引入噪声并制造维度灾难;对非平稳序列,直接取滞后值会被趋势主导——先差分或分解再做滞后

2.2 统计特征:窗口内的概貌

统计特征用一个滑动窗口内的统计量概括局部形态:均值、标准差、方差、中位数、最小值、最大值、四分位数、偏度、峰度,以及移动平均、EWMA。

  • 均值/中位数反映"中心水平";标准差/方差反映"波动性";偏度反映"分布是否对称";峰度反映"是否尖峰重尾"。
  • 窗口大小是灵魂:窗口小,捕捉短期变化但易受噪声干扰;窗口大,平滑噪声但丢失局部细节。窗口应匹配你想检测的异常的时间尺度。
  • 对非平稳序列,窗口统计量会随趋势漂移——同样建议先处理平稳性。

2.3 时域/频域特征:两种视角

时域特征直接在原始序列上算:

  • 差分:x'(t) = x(t) − x(t−1),消除趋势与季节,凸显突变。
  • 自回归系数:用 AR 模型拟合,把系数当特征。
  • 能量:窗口内平方和,反映强度。
  • 过零率:穿越零轴的次数,反映频率变化——语音、振动信号里常用。

频域特征先把序列变换到频率域:

  • 傅里叶变换:把序列分解成正弦波叠加,输出各频率分量的幅度与相位。
  • 频谱:变换结果本身。
  • 功率谱密度 PSD:频谱的平方,表示各频带能量。
  • 主频分量:能量最大的几个频率,直接对应"这个序列以什么周期在波动"。

频域特征的价值在于揭示隐藏的周期性——比如振动信号里"某个频率分量能量骤升"往往是故障指纹。代价是计算量大、解释性差。工程上常见做法:用频域做探索、定周期,用提炼后的主频/频带能量作为特征,而不是把整条频谱喂给模型。

2.4 三类特征总览

特征类型 捕捉的信息 构建要点 典型应用
滞后特征 自相关结构、短期记忆 阶数靠 ACF/PACF/领域知识 预测残差类方法输入
统计特征 局部中心、波动、分布形态 窗口匹配异常时间尺度 大多数机器学习检测
时域特征 变化率、强度、频率密度 差分、能量、过零率 突变检测、信号分析
频域特征 周期性、频带能量 FFT → PSD → 主频 振动、声学、周期性故障

2.5 特征选择:砍掉冗余

特征构建完,下一步是"做减法"。三类方法:

过滤式(Filter):与模型无关,先按统计指标筛。相关系数(与目标线性相关)、互信息(信息共享量)、方差阈值(移除近常量的列)。优点是快,缺点是忽略特征间组合效应。

包裹式(Wrapper):把特征子集选择当成搜索问题,反复用模型评估子集性能。递归特征消除 RFE(逐个移除最不重要特征)、前向/后向选择。优点是效果通常更好,缺点是计算开销大。

嵌入式(Embedded):把选择内嵌进模型训练。L1 正则化(Lasso 会把不重要的系数压成 0)、树模型的特征重要性(随机森林、梯度提升树天然给出重要性排序)。工程上最常用,性价比最高。

选特征的四条原则:相关性(选与目标相关的)、重要性(选对性能贡献大的)、冗余性(剔除强相关的重复列)、解释性(尽量保留能讲清业务的)。

三、工程实践要点

3.1 一个够用的特征起步包

给大多数时序检测任务,这个组合作为起点性价比很高:

  1. 当前时刻原始值(去趋势/分解后的残差值)。
  2. 滞后 1 和滞后对应周期(如滞后 24)。
  3. 滑动窗口均值与标准差(窗口匹配异常尺度)。
  4. 当前值与昨日同时刻的差值(周期相对量)。
  5. 残差的 Z-score(标准化偏离度)。

这个组合覆盖了"水平、波动、周期性、相对偏离"四类信息,且每一列都能解释。先跑起来,再根据漏报案例逐步加特征。

3.2 特征工程的正确心态

特征工程的产出不是"越多越全的特征表",而是"每一列都对应一种可解释的判别信号"。加一列之前先问:这个特征在区分"异常/正常"上有什么逻辑依据?答不上来的特征,大概率只是噪声。

⚠️ 常见坑:把大量滞后特征和原始值一起直接喂树模型/线性模型,忽视多重共线性。 滞后 1 和滞后 2 高度相关时,线性模型系数不稳定、可解释性崩塌。先看相关性热图,砍掉冗余列。

💡 关键直觉:特征工程的本质是"把时间结构翻译成判别结构"。 原始值里看不出的信息,藏在变化率、周期相对量、频带能量里。翻译得好,简单的模型也能打;翻译不好,再强的模型也是巧妇难为无米之炊。

3.3 特征与方法的衔接

特征方案要和检测方法一起设计:树模型(Isolation Forest、随机森林)对特征尺度不敏感、能处理非线性,适合统计/频域混合特征;线性/距离类模型要求特征标准化;深度模型则更偏好"端到端自己学特征"——这就是第 6 章用深度模型时往往"少做手工特征"的原因。特征工程的工作量,应该按检测方法的"自主特征学习能力"来分配。

3.4 一个特征工程实战案例

某水厂给取水泵房做异常检测,第一版只用了两个特征:当前流量值和流量的滑动均值。检测结果误报率居高不下——因为"当前流量"在白天取水高峰和夜间低峰数值差异巨大,模型把"高峰时段的正常高流量"全当成了异常。第二版加了三类特征:滞后 24 小时的同时段流量(消除日周期)、当前流量与同时段的差值(凸显偏离)、滑动窗口标准差(捕捉波动异常)。误报率下降了一半以上,因为模型终于"看见"了日周期——它学会了"同这个时刻比,而不是和全天平均值比"。

这个案例的启示:时序特征工程的第一优先级,永远是"把周期性转成可比较的相对量"。 差分、同期差值、周期内位置(一天中的第几小时)这类特征,是让模型理解"上下文"的关键,也是把第 1 章"上下文异常"变成"可检测信号"的桥梁。

3.5 特征工程的常见坑清单

除了前文提到的问题,再补充三个高频坑:一是时间泄漏——用了"未来"的信息当特征(比如用整段序列的全局均值当特征,而这个均值包含了检测点的未来),会让评估虚高、上线翻车;二是特征与标签泄漏——把"是否异常"相关的结果直接编进特征;三是忽略窗口边界效应——滑动窗口在序列开头缺数据,要用填充或收缩窗口处理。这三条坑里,时间泄漏最隐蔽也最致命,务必在构造特征时就检查清楚。

实战问答

问:滞后特征和统计特征,先做哪个?

先做统计特征(窗口均值/标准差),再做滞后特征。因为统计特征已经概括了"局部形态",滞后特征补充"与过去的直接关系"。两个都不复杂,但统计特征对窗口尺度更敏感,先把它定好。

问:特征标准化是必须的吗?

对线性/距离类模型是必须的(量纲差异会让大数值特征主导);对树模型不是必须(树只看分裂阈值,不受单调变换影响)。深度模型基本必须标准化。 不知道用哪个,先标准化,损失可忽略。

问:特征太多,怎么快速砍到够用?

先用"嵌入式"方法(树模型特征重要性 / Lasso)粗筛一遍,保留重要性前 20 名;再人工检查保留的特征里有没有明显冗余(相关性 >0.9 的留一个);最后用递归特征消除精调到目标数量。三步下来,通常能砍掉一半以上的特征。

问:为什么加了新特征,效果反而变差?

多半是加了冗余或噪声特征,把原有信号的判别力稀释了。加特征之前先问:这个特征在区分异常/正常上有什么逻辑依据? 答不上来的特征,大概率是噪声。

要点速记

  • 滞后特征用过去值预测现在,阶数由 ACF/PACF、领域知识、网格搜索决定;非平稳序列先处理再滞后。
  • 统计特征概括窗口内的中心与波动,窗口大小必须匹配异常时间尺度。
  • 时域特征(差分、能量、过零率)直接算;频域特征(FFT、PSD、主频)揭示周期,注意解释性成本。
  • 特征选择三类:过滤式快而粗、包裹式准而贵、嵌入式性价比最高(Lasso、树模型重要性)。
  • 四条选择原则:相关、重要、去冗余、可解释。
  • 特征不是越多越好,一个"够用且可解释"的起步包 + 漏报案例驱动迭代,是工程上最稳的路径。

下一章我们站到高处,把统计、机器学习、深度学习、集成四大家族画成一张全景图——先知道有多少种刀,再谈哪把刀切什么。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U