时间序列预测的Meta N-BEATS方法1
Posted 最老程序员闫涛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间序列预测的Meta N-BEATS方法1相关的知识,希望对你有一定的参考价值。
在时间序列预测中,目前占统治地位的方法仍然是传统的时间序列分析统计方法,虽然有个别方法中融入了深度学习模型,也基本上仅限于利用深度学习来学习这些时间序列统计模型的超参数。Bengio团队最新的Paper,将纯深度学习技术应用于时间序列预测,并在测试数据集上取得了比传统时间充列分析还要好的效果,他们分别发表了两篇文章,第一篇发表于19年5月,讲述了N-BEATS算法,第二篇发表于20年2月,将N-BEATS算法与元学习方法相融合,并且取得了SOTA效果。
本系列博文除了介绍这两篇文章基本概念之外,还会讲解采用PyTorch来复现论文中结果。这两篇文章都是单变量时间序列预列,我们在实际中,使用这种技术,对股市行情(开盘价、最高价、最低价、收盘价、成交量、成交金额等)这种多变量预测模型来进行预测,也取得了效好的应用效果,感兴趣的读者可以多交流。注:基于商业原因,这部分内容没有在本系列博文中出现。
问题描述
我们考虑的是单变量离散时间序列的点预测问题,对于一个时间序列:
v
1
,
v
2
,
v
3
,
.
.
.
,
v
i
,
.
.
.
,
v
T
v_1, v_2,v_3,...,v_i,..., v_T
v1,v2,v3,...,vi,...,vT
假设我们要预测H个时间点之后的值。例如,对于我们的股市应用,我们要预测后天的价格涨跌,因此H=2,我们要预测的结果为:
y
=
[
v
T
+
1
v
T
+
2
.
.
.
v
T
+
H
]
=
[
y
1
y
2
.
.
.
y
H
]
∈
R
H
\\boldsymboly=\\beginbmatrix v_T+1 \\\\ v_T+2 \\\\ ... \\\\ v_T+H \\endbmatrix = \\beginbmatrix y_1 \\\\ y_2 \\\\ ... \\\\ y_H \\endbmatrix \\in R^H
y=⎣⎢⎢⎡vT+1vT+2...vT+H⎦⎥⎥⎤=⎣⎢⎢⎡y1y2...yH⎦⎥⎥⎤∈RH
为了预测时间点
t
t
t后
H
H
H个时间点的值,我们需要向前看
w
≤
T
w \\le T
w≤T个时间点的值进行预测:
x
=
[
v
T
−
w
+
1
v
T
−
w
+
2
.
.
.
v
T
]
∈
R
w
\\boldsymbolx=\\beginbmatrix v_T-w+1 \\\\ v_T-w+2 \\\\ ... \\\\ v_T \\endbmatrix \\in R^w
x=⎣⎢⎢⎡vT−w+1vT−w+2...vT⎦⎥⎥⎤∈Rw
我们假设网络的预测值为
y
^
\\boldsymbol\\haty
y^,我们定义如下误差:
平均绝对值百分比误差(MAPE):
M
A
P
E
=
100
H
∑
i
=
1
H
∣
v
T
+
i
−
v
^
T
+
i
∣
∣
v
T
+
i
∣
=
100
H
∑
i
=
1
H
∣
y
i
−
y
^
i
∣
y
i
MAPE=\\frac100H \\sum^H_i=1 \\frac \\vert v_T+i - \\hatv_T+i \\vert \\vert v_T+i \\vert = \\frac100H \\sum^H_i=1 \\frac \\vert y_i - \\haty_i \\vert y_i
MAPE=H100i=1∑H∣vT+i∣∣vT+i−v^T+i∣=H100i=1∑Hyi∣yi−y^i∣
对称平均绝对值百分比误差(sMAPE):
s
M
A
P
E
=
200
H
∑
i
=
1
H
∣
v
T
+
i
−
v
^
T
+
i
∣
∣
v
T
+
i
∣
+
∣
v
^
T
+
i
∣
=
200
H
∑
i
=
1
H
∣
y
i
−
y
^
i
∣
∣
y
i
∣
+
∣
y
^
i
∣
sMAPE = \\frac200H \\sum^H_i=1 \\frac \\vert v_T+i - \\hatv_T+i \\vert \\vert v_T+i \\vert + \\vert \\hatv_T+i \\vert = \\frac200H \\sum^H_i=1 \\frac \\vert y_i - \\haty_i \\vert \\vert y_i \\vert + \\vert \\haty_i \\vert
sMAPE=H200i=1∑H∣vT+i∣+∣v^T+i∣∣vT+i−v^T+i∣=H200i=1∑H∣yi∣+∣y^i∣∣yi−集成模型Stacking