漫谈时序预测

2,867 阅读3分钟

以下内容是在拜读远观数据大佬技术文章的部分总结,原文请查看:漫谈时间序列预测 - 字节的文章 - 知乎 zhuanlan.zhihu.com/p/486343380

1. 效果检验

  • 数值量纲不敏感metric:

    • SMPAE(对称MAPE):

      • SMAPE=1nt=1nFtAt(At+Ft)/2SMAPE=\frac{1}{n}\sum_{t=1}^{n}\frac{|F_t-A_t|}{(A_t+F_t)/2}

      • 百分比表示形式的MAE

      • 有上(200%)下界(0%)

    • WMAPE(加权MAPE):

      • WMAPE=t=1nAtFtt1nAtWMAPE=\frac{\sum_{t=1}^{n}|A_t-F_t|}{\sum_{t-1}^n|A_t|}

      • 把不同数量级误差等价评估

      • 解决MAPE除数为零

2. 模型分类

2.1 传统方法

  • MA(滑动平均,以过去n时间点观测值平均作为下一个点的预测):

    • 优点:快,作为baseline效果不错。
    • 缺点:做不了多步,且存在滞后问题。
  • ARIMA(自回归滑动平均):

    • 优点:比MA和AR拟合强
    • 缺点:参数寻找,运行时间长,需要对每个序列单独预测。
  • Prophet(时序分解加性模型):

    • 优点:非线性趋势没季节外部变量方面有优势,可输出概率。
    • 缺点:单个序列预测,大规模费劲。
  • 其他:Orbit和NeuralProphet,都不咋地。

  • 缺点:

    • 对时序本身有一些性质要求,非端对端优化;
    • 只能做单个序列预测,性能开销大。
    • 自回归,没有协变量可以引入。
    • 多步预测不行。

2.2 ML方法

  • 建模方式

    • 时序转化表格类问题

  • 特征工程

    • 根据特征类型不同构造新特征,预处理部分不在这里讨论。

    • 自动时间序列特征工程工具——tsfresh(根据其他文档看,全自动化不够智能,会生成非常多的特征,有可能爆内存)

    • 其他时序特征方法介绍:zhuanlan.zhihu.com/p/67832773

  • 模型

    • GBDT:

      • lightGBM,fastai(可以用Optuna或者FLAML来做自动调参)
      • 业务特征上表达比NN好
    • NN:

      • 类别变量表达学习会有更好的embedding
      • loss设计灵活
      • 多目标学习比树模型方便。

2.3 DL方法

  • RNN(RNN,LSTM,GRU)
  • Seq2Seq(RNN组合形式)

- 以RNN组件作为基本单元,encoder中做训练窗口的信息提取,decoder中做预测的多部输出。
- 评估:效果一般,计算开销大,稳定性不行,误差分析和模型解释难做。
  • WaveNet(空洞因果卷积)

-   比RNN好并行,使用一维CNN做序列预测,还加入residual connection和skip connection和一系列复杂的门机制。
-   评估:没RNN好用
  • LSTNet

-   评估:不如特征工程+fastai
  • DeepAR

-   Seq2Seq形式,但是能输出概率分布。
-   评估:难以稳定收敛,精度波动大,效果比不过GBDT。
  • N-Beats

-   单变量预测,有一定的季节和趋势解释性。
-   评估:效果一般,不好加额外的特征变量。
  • TFT

-   能和树模型叫板的DL模型,跟树模型有一定近似性,有特征变量选择网络。
-   评估:有点意思,由于其拟树形式的原理,效果稳定不少,但计算开销还是比较大。
  • 总结

    • 目前GBDT的效果还是大规模好于DL
    • DL的强项入pre-train,transfer learning,represent learning,生成模型难以用于时序领域。

2.4 时序AutoML

  • 库:

    • Auto_TS
  • 主流方法:

    • 特征工程+GBDT
    • TFT结构化时许数据集接口做自动化特征工程可行。

\