参考资料
预测: 方法与实践
Jason Brownlee 关于时序预测的文章
博士带你学 LSTM 系列文章
总览
时序数据
是什么
Time series data is a collection of observations (behavior) for a single subject (entity) at different time intervals (generally equally spaced as in the case of metrics, or unequally spaced as in the case of events).
指一组按照时间发生先后顺序排列而成的数据点集合。
特点
- 周期性
- 趋势性(趋势分解法+ARIMA,y=S+T+ε )
- 数据量大
作用
- 宕机时,调度
- 异常检测
- QoS
统计预测
AR、MA -> ARMA -> ARIMA
- AR(p):AR 是 autoregressive 的缩写,表示自回归模型,含义是当前时间点的值等于过去若干个时间点的值的回归——因为不依赖于别的解释变量,只依赖于自己过去的历史值,故称为自回归;如果依赖过去最近的p个历史值,称阶数为 p,记为AR(p)模型。
- MA(q):MA 是 moving average 的缩写,表示移动平均模型,含义是当前时间点的值等于过去若干个时间点的预测误差的回归;预测误差=模型预测值-真实值;如果序列依赖过去最近的q个历史预测误差值,称阶数为q,记为MA(q)模型。
- ARMA:将AR和MA模型混合可得到ARMA模型。
- ARIMA:其中的 I(d),I 是 integrated 的缩写,含义是模型对时间序列进行了差分;因为时间序列分析要求平稳性,不平稳的序列- 需要通过一定手段转化为平稳序列,一般采用的手段是差分;d表示差分的阶数,t时刻的值减去t-1时刻的值,得到新的时间序列称为1阶差分序列;1阶差分序列的1阶差分序列称为2阶差分序列,以此类推;另外,还有一种特殊的差分是季节性差分S,即一些时间序列反应出一定的周期T,让t时刻的值减去t-T时刻的值得到季节性差分序列。
什么是时间序列的平稳性
详细参考 上述模型具体介绍
Prophet
Prophet 是 Facebook 开源的一款基于 Python 和 R 语言的数据预测工具。
时序数据组成: y=S+T+H+ε
机器学习
LSTM
LSTM 网络是 RNN(循环神经网络)的一种特殊形式,它可以对有价值的信息进行记忆,放弃冗余记忆,从而减小学习难度。
- 单个序列,多个时间步 -> 单个序列,单个时间步
- 多个序列,多个时间步 -> 单个序列,单个时间步
- 多个序列,多个时间步 -> 多个序列,单个时间步
- 单个序列,多个时间步 -> 单个序列,多个时间步
- 多个序列,多个时间步 -> 单个序列,多个时间步
- 多个序列,多个时间步 -> 多个序列,多个时间步
阅读 两个常见误解, 了解更多
记忆可能是被滥用,有可能迫使 LSTM 模型在很长的输入时间步长上记住单个观察。
Encoder-Decoder
Encoder-Decoder 结构先将输入数据用一个 RNN 网络(可以是 LSTM or GRU)编码成一个上下文向量 c ,拿到 c 之后,就用另一个 RNN 网络对其进行解码。
Encoder-Decoder 模型详解
Seq2Seq 参考实现
Attention 机制
Attention 机制的提出就是为了解决「序列过长,信息丢失」的问题。
对于预测模型而言 , 并不是之前所有的历史序列数据都对当前预测起重要作用 。恰恰相反,往往是距离待预测时间 点最近一段时间的数据才会影响到对未来走向的判断,这即是 马尔科夫性质 的约束。注意力机制在最近的状态下影响更大这方面比 LSTM 更加合理。
Attention 机制
Attention 操练起来
马尔可夫模型、隐马尔可夫模型
Talk is cheap
数据获取
通过 Prometheus 结合 rule
Prometheus 提供的 HTTP API (Prometheus 在 /api/v1 的路径下开放了 HTTP 接口,用户可以通过这些接口进行二次开发)
Prometheus 获取数据的相关总结
数据处理
pandas 构建 监督学习问题 、参考二
从一个时序数据 到 输入 (t-a, .., t-1) ,输出 (t, t+1, .., t+n)
类别的处理,缩放数据
模型的建立
Keras 简易搭建
Keras 可以看成是一种深度学习框架的高阶接口规范,它帮助用户以更简洁的形式定义和训练深度学习网络。
评价模型
可视化预测效果、数字化损失
优化方向
增量学习
主要矛盾在于如何确定增量的时机