第 15 章「时序数据与预测」是机器学习在金融、运维、IoT、气象、供应链、交通等行业中最具实用价值的应用方向之一。

这一章的目标,是帮助读者理解时间序列的结构、建模方法、预测思路与异常检测技术。


第15章 时序数据与预测

时间序列(Time Series)是指按时间顺序排列的一系列数据点。 与普通数据不同,它具备明显的时序依赖性(temporal dependency),过去的状态往往影响未来。

例如:

  • 股票价格、CPU 负载、温度、销售额、网站访问量等。 机器学习在处理这些问题时,必须考虑“时间”这一维度带来的信息与约束。

15.1 时间序列分解与趋势建模

🧩 1️⃣ 时间序列的组成要素

一个时间序列通常可以拆解为四个部分:

成分 含义 示例
趋势(Trend) 数据整体变化方向 房价总体上升趋势
季节性(Seasonality) 固定周期的波动 每年夏季空调销量上升
周期性(Cyclic) 不规则长周期变化 经济周期、市场波动
随机性(Noise) 不可预测的随机波动 临时促销、突发事件

时间序列分解(Time Series Decomposition) 就是将观测序列分解为: [ Y_t = T_t + S_t + R_t ] 其中:

  • ( T_t ):趋势项(trend)
  • ( S_t ):季节项(seasonal)
  • ( R_t ):残差项(residual)

📊 常用工具:

  • STL(Seasonal-Trend decomposition using Loess)
  • X-11、X-12-ARIMA(经济数据分析常用)
  • Prophet(Facebook 推出的趋势建模工具)

🔹 2️⃣ 趋势建模方法

趋势部分可以用多种方式建模:

  • 线性趋势模型:( T_t = a + bt )
  • 多项式趋势模型:( T_t = a + bt + ct^2 + … )
  • 指数平滑(Exponential Smoothing):让近期数据权重更高

📘 实践技巧:

  • 趋势建模适合长期预测;
  • 季节性建模适合周期性波动;
  • 去除季节成分后再建模,可以降低模型复杂度。

15.2 ARIMA 与传统预测模型

🧩 1️⃣ ARIMA 模型(AutoRegressive Integrated Moving Average)

ARIMA 是最经典的统计预测模型之一,常用于平稳时间序列的建模。

其基本形式: [ ARIMA(p, d, q) ]

  • ( p ):自回归(AR)阶数
  • ( d ):差分次数(使序列平稳)
  • ( q ):滑动平均(MA)阶数

原理简述:

  1. AR(自回归):当前值依赖于过去若干时刻的值; [ X_t = \phi_1 X_{t-1} + \phi_2 X_{t-2} + … + \epsilon_t ]
  2. MA(滑动平均):当前值依赖于过去若干时刻的误差; [ X_t = \epsilon_t + \theta_1 \epsilon_{t-1} + … ]
  3. I(积分/差分):用于消除趋势,使序列平稳。

🔍 适用场景:

  • 电力负载预测
  • 销售量趋势预测
  • KPI 序列分析

🔹 2️⃣ 扩展模型

  • SARIMA(季节性 ARIMA):考虑季节成分
  • ARIMAX:在 ARIMA 基础上加入外部变量(例如天气、节假日)
  • VAR(向量自回归):多维时间序列之间的联动建模

🔹 3️⃣ 传统的非统计模型

除了 ARIMA,还有其他传统预测算法:

模型 思想 特点
Exponential Smoothing (Holt-Winters) 对近期数据权重更高 简单、实时性好
Kalman Filter 动态系统状态估计 可在线更新
SVR (Support Vector Regression) 核方法预测 对非线性趋势有效

15.3 特征化时间序列(滑动窗口)

统计模型强调时间依赖,而机器学习模型(SVM、RF、XGBoost)需要“样本-特征”形式的输入。 因此,要把时间序列转化为特征矩阵,这一步叫做特征化(Feature Engineering for Time Series)


🔹 1️⃣ 滑动窗口(Sliding Window)

最常用的特征构造方法:

例如:

时间序列:[x1, x2, x3, x4, x5, ...]
窗口大小 = 3
样本1:(x1,x2,x3) → 预测 x4
样本2:(x2,x3,x4) → 预测 x5

模型学到的就是 “过去3个点” 与 “下一个点” 之间的映射关系。

🧮 常见衍生特征:

  • 统计特征:均值、方差、最大值、最小值
  • 滞后特征(lag features):( x_{t-1}, x_{t-2}, … )
  • 差分特征(delta):( x_t - x_{t-1} )
  • 滑动均值(rolling mean)

📊 常用于:

  • 设备监控(预测未来温度、电流)
  • 金融量化(预测下一时刻价格)

🔹 2️⃣ 特征 + 机器学习模型组合

模型 优点 典型场景
Random Forest 非线性建模、可解释 工业时序监控
Gradient Boosting (XGBoost, LightGBM) 精度高 销售预测、KPI预测
SVR 对小样本友好 金融短期预测

15.4 异常检测与序列聚类

时间序列中,检测异常模式往往比预测更有商业价值。


🔹 1️⃣ 异常检测(Anomaly Detection)

目标:找出“不符合正常时间模式”的点或片段。

常见方法:

类型 方法 思路
统计类 3σ 法则、IQR、Z-score 超过统计范围即异常
模型类 ARIMA 残差分析 残差过大判定异常
机器学习类 Isolation Forest, One-Class SVM 学习正常分布后检测异常
深度学习类 Autoencoder 重建误差 若重建失败 → 异常

🧭 典型应用:

  • 服务器指标异常(CPU、内存、延迟)
  • 设备振动监测
  • 金融欺诈检测

🔹 2️⃣ 序列聚类(Time Series Clustering)

将相似的时间序列归为一类,用于模式发现、用户画像、设备分组。

关键难点:

  • 序列长度不同;
  • 时间对齐问题。

常用方法:

方法 思路 说明
K-means + DTW 距离 动态时间规整(Dynamic Time Warping)衡量相似性 可对齐时间轴
Feature-based Clustering 提取特征后聚类 简单高效
Shape-based Clustering 比较序列形状 适合相位差小的场景

✅ 小结

方向 核心思想 代表算法
时间序列分解 拆解趋势 + 季节性 STL, Prophet
预测模型 用历史预测未来 ARIMA, Holt-Winters
特征化 把序列转为机器学习输入 滑动窗口, 滞后特征
异常检测 发现不正常模式 ARIMA 残差, Isolation Forest
序列聚类 发现时间模式群体 DTW + K-means