字节@漫谈时间序列预测

链接:https://zhuanlan.zhihu.com/p/486343380

模型优化目标为 MAE 时,整体的预测就会比平均值小。部分业务预测偏小跟预测偏多造成的影响是不同的。一般会参考整体的预测偏差,进而使用一些非对称 loss 来进行具体优化。

交叉验证

  • 在时间维度上做前后的 split

[[传统时间序列预测]]

  • [[ARIMA]] 对 AR 部分的残差做移动平均
    • [[Python/package]] pmdarima,通过 AutoML 手段来自动搜索参数
  • [[Prophet]]
  • [[问题]] #card
    • 对于时序本身有一些性质上的要求,需要结合预处理来做拟合,不是端到端优化
    • 需要对每条序列做拟合预测,性能开销大,数据利用率和泛化能力堪忧,无法做模型复用
    • 较难引入外部变量
    • 多步预测能力比较差

机器学习方法

  • 基于训练窗口的信息来构建特征,转化为表格类预测问题来求解
  • [[Time Series Feature]]
    • tsfresh 自动特征工程
  • 模型选择
    • 自动参数优化 Optuna 或 FLAML
    • NN 优势
      • 通过 embedding 学习类别变量
      • loss 设计更加灵活
    • [[Tabular Data]]
    • local 模型和 global 模型取舍
      • local 方法每一个序列都要构建一个单独的模型来训练预测
      • global 使用所有数据进行训练
      • 例子
        • 股票中科技股的趋势和银行股的趋势明显不同

深度学习方法

  • 思路
    • 充分使用多层级维度的信息
    • 只使用原始的序列和其它相关输入信息,基本不做特征工程,希望通过各类模型结构自动学习到时序的隐含表达,进而做到端到端的预测输出
  • 与机器学习方法对比:
    • 机器学习方法一般模型部分处理会相对简单,但涉及到的预处理,特征工程及后处理方面会比较复杂。
    • 在整理 pipeline 层面会相对简单,更提倡 end-to-end 的训练,但模型部分则相对复杂和难以优化。
  • [[Seq2Seq]]
  • [[@WaveNet: A Generative Model for Raw Audio]]
    • [[空洞卷积]] residual connection skip connection 门机制
    • CNN 结构缺乏[[位置编码]]导致对于序列问题预测效果不如 RNN
  • [[LSTNet]] 效果不如特征工程 + fastai 效果好
  • [[DeepAR]]
    • 输出概率分布
    • 亚马逊开源时序预测库 gluon-ts
  • [[N-BEATS]] 单变量时序预测,具有一定的 seasonality,trend 的可解释性
  • [[@Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting]] 与树匹敌的深度学习模型
    • [[Gated Residual Network]]
    • [[Variable Selection Networks]] 特征变量选择网络,类似于树模型做特征选择
      • [[TabNet]] [[NODE]] 也有这种模拟决策树行为的设计
    • 输入特征的系统化设计,
      • 静态类别/连续变量
      • 动态已知类别/连续变量
      • 动态未知类别/连续变量
      • [[Pytorch Forecasting]] 实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
training = TimeSeriesDataSet(
data[lambda x: x.date <= training_cutoff],
time_idx= ..., # column name of time of observation
target= ..., # column name of target to predict
group_ids=[ ... ], # column name(s) for timeseries IDs
max_encoder_length=max_encoder_length, # how much history to use
max_prediction_length=max_prediction_length, # how far to predict into future
# covariates static for a timeseries ID
static_categoricals=[ ... ],
static_reals=[ ... ],
# covariates known and unknown in the future to inform prediction
time_varying_known_categoricals=[ ... ],
time_varying_known_reals=[ ... ],
time_varying_unknown_categoricals=[ ... ],
time_varying_unknown_reals=[ ... ],
)
+ [[@Efficient Automated Deep Learning for Time Series Forecasting]]
  • 没有能大规模应用的深度时序模型
    • [[@Do We Really Need Deep Learning Models for Time Series Forecasting?]]
    • [[@Kaggle forecasting competitions: An overlooked learning opportunity]]
    • [[@Deep Learning for Time Series Forecasting: Tutorial and Literature Survey]]
  • 可能方向
    • 数据增强
      • Time Series Data   Augmentation   for Deep Learning: A Survey
    • 时序问题预训练
      • A network-based transfer learning approach to improve   sales   forecasting of new products

[[AutoML]] 模型的自动选择和调优

  • 因此完善的 AutoML 方案中,也需要包含例如 prior shift, [[covariate shift]], concept drift 等方面的检测与处理,以适应复杂的真实预测场景。
  • [[Life Long Learning]] 模型的学习预测会随着时间的推移不断有新数据的输入
作者

Ryen Xiang

发布于

2024-05-14

更新于

2026-02-17

许可协议


评论