基于RNN的时序预测
基于LSTM的时序预测: 输入数据时 输入的
y
t
y_t
yt?和
x
t
+
1
x_{t+1}
xt+1?之间存在一个时间差。 DeepAR 和 MQRNN 都可以实现时序预测,而MQRNN基于 encoder-decoder架构。
基于CNN的时序预测
WaveNet可以实现时序预测:
经验
不同颗粒度
周别/月别
周别/月别 一般都存在 以年为单位的周期性。
历史数据比较短,使用简单的ETS,arima算法 数据较长,而且时间序列较少,推荐Prophet(单条预测) 数据较长,而且时间序列较多,推荐 机器学习,深度学习(批量预测)【包含 近期的数据 和 上一周期相同位置的数据】
天别
周期性: 双重周期: 周为单位,年为单位
Prophet, 机器学习,深度学习
分钟,小时别
sub daily data 三重周期性: 天 ,周,年 三重周期
如果对于小时别预测精度不高,但是对于日别,周别的预测精度更高,可以先考虑天别,再按比例简单拆分到天。
保证预测结果在设定范围内
保证结果 是整数 ; 结果大于0; 在一定区间范围内
- 整数: 四舍五入 / 深度学习:负二项分布;泊松分布
- 结果大于0: clip设置; 先预测z = log(y), 转化为: y=exp(z) ; 深度学习中将输出层激活函数设置为ReLU
- 区间范围内: clip; 先预测
z
=
l
o
g
(
y
?
a
b
?
y
)
z=log(\frac{y-a}{b-y})
z=log(b?yy?a?),再预测
y
=
(
b
?
a
)
e
z
1
+
e
z
+
a
y=\frac{(b-a)e^z}{1+e^z}+a
y=1+ez(b?a)ez?+a ;深度学习中 使用 sigmoid作为激活函数, 设置 比例项 和 偏置项。
异常值,缺失值处理
识别异常值
-
3
σ
3 \sigma
3σ方法: 只适用于 没有外部变量影响,周期性波动较弱的时间序列
- STL分解, 用于没有外部变量影响的时间序列
- 使用数据训练模型,使用模型拟合 训练集,将误差过大的数字设置为 异常值。
处理
- 直接删除,针对于Prophet, 机器学习算法
- 均值替代: 没有外部变量影响,季节性波动较弱的时间序列
- 使用Prophet进行拟合,填充异常值,缺失值
|