1.本发明涉及多变量时间序列预测技术领域,特别涉及一种多变量时间序列预测方法及装置。
背景技术:2.近年来,时间序列预测已经被广泛用于能源、交通、气象等众多领域。在实际应用中,场景非常广泛,如能源、交通的长期规划,和气象灾害的早期预警等。多变量时间序列普遍存在于各种现实场景中,包括太阳能电站能量输出、电力消耗和交通堵塞情况的预测等。在经济、金融、生物信息和交通等领域也有广泛应用。相较于单变量时序预测,需要建模的问题更复杂,因为每个变量不仅与其历史值有关,还要考虑变量之间的依赖关系。
3.transformer(变压器模型)是google团队提出的经典之作,由ashish vaswani等人在2017年发表的论文(论文:vaswani a,shazeer n,parmar n,etal.attention is all you need[c]//advances in neural information processing systems.2017:5998-6008.)提出,并在近年广泛的应用在深度学习中的各个领域。transformer在机器翻译任务上的表现超过了循环神经网络和卷积神经网络,只用编码器-解码器结构和注意力机制就能达到很好的效果,最大的优点是效果好和可以高效地并行化。transformer不仅仅可以应用在自然语言处理的机器翻译领域,甚至可以不局限于自然语言处理领域,在很多领域都有着巨大的成功,是非常有科研潜力的一个方向。
[0004]
门控循环单元是由bahdanau和bengio等(论文:learning phrase representations using rnn encoder
–
decoder for statistical machine translation)在2014年提出的,是对长短时记忆网络的一种改进。它将遗忘门和输入门合并成更新门,同时将记忆单元与隐藏层合并成了重置门,进而让整个结构运算变得更加简化且性能得以增强。
技术实现要素:[0005]
本发明提供一种多变量时间序列预测方法及装置,能够解决现有技术中准确预测下一时刻预测值的问题。
[0006]
根据本发明的一个方面,提供了一种多变量时间序列预测方法,包括以下步骤:
[0007]
收集预测内容及相关特征的历史数据,进行数据预处理得到预测数据集,并构建可变滑动窗口数据集;
[0008]
将所述预测数据集放入变压器模块自编码器transformer encoder作为特征提取器组成的模型结构中,训练模型;
[0009]
调整模型参数及调节模型超参数,得到最优模型;
[0010]
根据所述最优模型对待预测内容进行预测。
[0011]
所述数据预处理,包括:
[0012]
若预测数据集中含有缺失值,选择业务适合的数据值进行填充;
[0013]
对所述预测数据集进行离散变量数值化处理,将离散变量通过标签编码数值化;
[0014]
对所述预测数据集进行归一化处理,通过估计器将数据分别缩放和转换成给定范围的值;
[0015]
对所述预测数据集划分训练集、验证集及测试集;
[0016]
构造滑动窗口数据集,将划分好的训练集、验证集及测试集构造为滑动窗口数据集。
[0017]
所述构造滑动窗口数据集,包括:
[0018]
根据如下公式将划分好的训练集、验证集及测试集构造为滑动窗口数据集:
[0019]
feature[i]=x[i:i+t]
[0020]
label[i]=y[i+t]
[0021]
其中,i为当前生成数据编号,x为全部初始特征,feature为构造好的输入特征,label为构造好的输入值,y为初始输出值,t为滑动窗口的大小,是可调节参数,即用前t个时间步的历史数据去预测下一步。
[0022]
所述变压器模块自编码器transformer encoder作为特征提取器,包括:
[0023]
transformer自编码器的输入:用input表示输入的特征,e
input
表示输入特征的编码,x
input
表示经过输入层之后得到的结果:
[0024]einput
=linear(input);
[0025]
pe
(pos,2i)
=sin(pos/10000
2i/d
);
[0026]
pe
(pos,2i+1)
=cos(pos/10000
2i/d
);
[0027]
x
input
=e
input
+pe
input
;
[0028]
其中,位置嵌入层用pe表示,pos表示单词在句子中的位置,d表示pe的维度,2i表示偶数的维度,2i+1表示奇数维度;
[0029]
查询向量q、键向量k和值向量v分别由x
input
特征进行映射得到:
[0030]
q=x
input
wq,k=x
input
wk,v=x
input
wv;
[0031]
其中,wq,wk和wv为权重矩阵,进行注意力的计算:
[0032][0033]
其中,dk是q,k矩阵的列数,即向量维度;
[0034]
计算多头自注意力机制,其中wo为权重矩阵,公式如下:
[0035]
multihead(h)=concat(head1,
……
,heads)wo;
[0036]
where heads=attentions(q,k,v);
[0037]
求和与归一化层由求和层和归一化层两部分组成,计算公式如下:
[0038]
layernorm(x+multiheadattention(x);
[0039]
layernorm(x+feedforward(x));
[0040]
其中,x表示多头注意力或者前馈神经网络的输入,multiheadattention(x)和feedforward(x)表示输出;
[0041]
求和层指x+multiheadattention(x);
[0042]
归一化层用于循环神经网络结构,将每一层神经元的输入都转成均值方差相同的形式;
[0043]
前馈神经网络层是一个两层的全连接层,第一层的激活函数为线性整流函数relu,第二层不使用激活函数,对应的公式如下:
[0044]
max(0,xw1+b1)w2+b2;
[0045]
其中,x是输入,前馈神经网络最终得到的输出矩阵的维度与x一致;
[0046]
构造一个编码器,所述编码器接收输入矩阵,并输出一个矩阵;
[0047]
通过多个所述编码器叠加组成特征提取器,第一个编码器的输入为特征的表示向量矩阵,后续编码器的输入是前一个编码器的输出。
[0048]
所述模型结构还包括若干个门控循环单元层,其中,
[0049]
设定隐藏单元个数为h,给定时间步为t,输入为上一层的输出x
t
,上一时间步隐藏状态为h
t-1
,重置门r
t
和更新门z
t
的计算公式如下:
[0050]rt
=σ(x
twxr
+h
t-1whr
+br);
[0051]zt
=σ(x
twxz
+h
t-1whz
+bz);
[0052]
其中,σ为激活函数,w
xz
,w
xr
,w
hz
和w
hr
为权重矩阵,br和bz为偏置量;为候选隐藏状态,则隐藏状态的更新机制为
[0053][0054][0055]
其中,w
xh
和w
hh
为权重矩阵,bh为偏置量;
[0056]
每个所述门控循环单元的输入均为上一层特征提取器的输出,且每个门控循环单元的初始隐藏状态均为前一个门控循环单元的最终隐藏状态;
[0057]
把若干个门控循环单元的结果经过线性映射之后拼接成一个向量,作为下一步的输入。
[0058]
所述模型结构还包括生成预测结果的全连接层,其中,
[0059]
全连接层表示为
[0060]
y=xw
xf
+bf:
[0061]
其中,x表示上一层的输出,y表示本层的输出,w
xf
为权重,bf为偏置量。
[0062]
所述模型结构还包括损失函数,其中,
[0063]
所述损失函数为均方误差,计算公式为
[0064][0065]
其中,为预测值,yi为真实值,n为样本个数。
[0066]
所述调整模型参数及调节模型超参数,得到最优模型,包括:
[0067]
使用贝叶斯自动调参调整模型参数,并结合经验调整模型参数;
[0068]
调节的超参数为滑动窗口大小t,transformer自编码器的层数n,门控循环单元的个数h及学习率;
[0069]
在所述模型的训练过程中,画出loss随时间变化的曲线图,判断所述模型是否达到收敛;
[0070]
对x
′
进行反归一化得到特征x,x
max
和x
min
分别为其中的最大最小值;其公式为:
[0071]
x=x
′
(x
max-x
min
)+x
min
;
[0072]
其中,x为需要转化的特征,x
′
为转化之后的特征,x
max
和x
min
分别为其中的最大最
小值。
[0073]
所述最优模型还包括一个评价体系,其中,
[0074]
平均绝对误差,真实目标yi与预测值之间差值绝对值的平均值;
[0075][0076]
其中,n为测试集样本数量;
[0077]
均方误差:真实目标yi与预测值之间差值平方的平均值
[0078][0079]
均方根误差:均方误差的方根,与yi具有相同的单位
[0080][0081]
r2决定系数,反映模型拟合数据的准确程度,计算公式:
[0082][0083]
平均绝对百分比误差
[0084][0085]
根据本发明的另一个方面,提供了一种多变量时间序列预测装置,包括:
[0086]
预处理单元,用于收集预测内容及相关特征的历史数据,进行数据预处理得到预测数据集,并构建可变滑动窗口数据集;
[0087]
模型训练单元,用于将所述预测数据集放入变压器模块自编码器transformer encoder作为特征提取器组成的模型结构中,训练模型;
[0088]
参数调整单元,用于调整模型参数及调节模型超参数,得到最优模型;
[0089]
内容预测单元,用于根据所述最优模型对待预测内容进行预测。
[0090]
采用本发明的技术方案,提出了一种多变量时间序列预测方案,收集预测内容及相关特征的历史数据,进行数据预处理得到预测数据集,并构建可变滑动窗口数据集;将所述预测数据集放入transformer encoder作为特征提取器组成的模型结构中,训练模型;调整模型参数及调节模型超参数,得到最优模型;根据所述最优模型对待预测内容进行预测。
[0091]
本发明实施例中,对多变量数据样本进行缺失值填补、离散值数值化、归一化等预处理,划分训练集验证集测试集,创建可变滑动窗口的数据样本,以及设计可变transformer编码器层数的深度神经网络作为特征提取器,注意力机制可以更好地把握多变量数据集中的关键变量,接着经过可变个数的门控循环单元,用来再次捕捉时间上的关联性,经过线性映射层,最后加入全连接层做回归预测。将处理好的数据集输入深度神经网络中进行训练。此外,本发明提供了两种调整超参数的策略,一种是基于经验的人工调参,另一种是贝叶斯自动调参。本发明根据多变量数据具有时空关联的特性,设计了基于可变滑动窗口与transformer的多变量时间序列预测算法,该算法最大的创新是使用transformer捕获特征间的关联,即空间关联,使用门控循环单元捕获不同特征之间的关系,即时间关联。将空间关联与时间关联相结合,构建了具有更高预测效果的新的神经网络结构。
[0092]
本发明的方案结合滑动窗口与transformer,将transformer的编码器部分看成特征提取器,滑动窗口可以更好地根据业务去确定预测值与前时间步的依赖步数。结合多变量时间序列预测的特点,和transformer的注意力机制结合起来,更能捕捉到不同特征之间的权重关系,更好地把握空间维度的特征,从而提升模型预测效果。结合多变量时间序列预测的特点,和门控循环单元结合起来,更能捕捉到时间步上特征间的关系,更好地把握时间维度的特征,进一步提升模型预测效果。本发明方案设计思路清晰,使用方式简便,在工程实际中,具有广泛的适用性。
[0093]
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
[0094]
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0095]
图1为本发明实施例提供的多变量时间序列预测原理流程图;
[0096]
图2为本发明实施例提供的基于可变滑动窗口与transformer的多变量时间序列预测方案总体框图;
[0097]
图3为本发明实施例提供的使用自动调参的基于transformer预测方法的流程图;
[0098]
图4为本发明实施例提供的transformer的编码部分结构图;
[0099]
图5为本发明实施例提供的注意力机制说明图;
[0100]
图6为本发明实施例提供的门控循环单元结构图;
[0101]
图7a为本发明实施例提供的使用本发明在某数据集上的预测结果-loss曲线图;
[0102]
图7b为本发明实施例提供的使用本发明在某数据集上的预测结果-预测结果图;
[0103]
图7c为本发明实施例提供的使用本发明在某数据集上的预测结果-预测结果;
[0104]
图8为本发明实施例提供的多变量时间序列预测装置结构示意图。
具体实施方式
[0105]
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0106]
本发明根据多变量数据具有时空关联的特性,设计了基于可变滑动窗口与transformer的多变量时间序列预测算法,该算法最大的特点是使用transformer捕获特征间的关联,即空间关联,使用门控循环单元去捕获不同特征之间的关系,即时间关联。将时空两者结合起来,构建新的神经网络结构,用以提高预测效果。
[0107]
图1为本发明实施例中多变量时间序列预测流程图。如图1所示,该多变量时间序列预测流程包括以下步骤:
[0108]
步骤101、收集预测内容及相关特征的历史数据,进行数据预处理得到预测数据集,并构建可变滑动窗口数据集。
[0109]
本发明实施例中,获取历史数据,如表1所示,包括需要预测列(特征0)以及其他相关特征。表1为部分示例数据。
[0110]
表1
[0111]
时间特征0特征1特征2特征3特征4特征5
[0132]
其中wq,wk和wv为权重矩阵,进行注意力的计算:
[0133][0134]
其中,dk是q,k矩阵的列数,即向量维度。
[0135]
接着计算多头自注意力机制,其中wo为权重矩阵,公式如下:
[0136]
multihead(h)=concat(head1,
……
,heads)wo[0137]
where heads=attentions(q,k,v)。
[0138]
求和与归一化层由求和层和归一化层两部分组成,其计算公式如下:
[0139]
layernorm(x+multiheadattention(x)
[0140]
layernorm(x+feedforward(x))
[0141]
其中x表示多头注意力或者前馈神经网络的输入,multiheadattention(x)和feedforward(x)表示输出(输出与输入x维度是一样的,所以可以相加)。
[0142]
求和层指x+multiheadattention(x),是一种残差连接,通常用于解决多层网络训练的问题,可以让网络只关注当前差异的部分。
[0143]
归一化层指层标准化,通常用于循环神经网络结构,层标准化会将每一层神经元的输入都转成均值方差相同的形式,以加快收敛。
[0144]
前馈神经网络层是一个两层的全连接层,第一层的激活函数为线性整流函数relu,第二层不使用激活函数,对应的公式如下
[0145]
max(0,xw1+b1)w2+b2[0146]
x是输入,前馈神经网络最终得到的输出矩阵的维度与x一致。
[0147]
通过上述的多头注意力机制,前馈神经网络,求和与归一化层可以构造出一个编码器。编码器接收输入矩阵,并输出一个矩阵。通过多个编码器叠加就可以组成编码器模块,如图4。第一个编码器的输入为特征的表示向量矩阵,后续编码器的输入是前一个编码器的输出。
[0148]
如图2和图3,本发明实施例中编码器的个数n是一个可调节的超参数。
[0149]
图6为一个门控循环单元的结构图。设定隐藏单元个数为h,给定时间步为t,输入为上一层的输出x
t
,上一时间步隐藏状态为h
t-1
,重置门r
t
和更新门z
t
的计算公式如下:
[0150]rt
=σ(x
twxr
+h
t-1whr
+br)
[0151]zt
=σ(x
twxz
+h
t-1whz
+bz)
[0152]
其中,σ为激活函数,w
xz
,w
xr
,w
hz
和w
hr
为权重矩阵,br和bz为偏置量。为候选隐藏状态,则隐藏状态的更新机制为
[0153][0154][0155]
其中,w
xh
和w
hh
为权重矩阵,bh为偏置量。
[0156]
本发明中,每个门控循环单元的输入均为上一层特征提取器的输出,且每个门控循环单元的初始隐藏状态均为前一个门控循环单元的最终隐藏状态,如图2和图3,门控循环单元的个数h是可以调整的。把多个门控循环单元的结果经过线性映射之后拼接成一个向量,作为下一步的输入。
[0157]
全连接层用来生成预测结果。全连接层表示为
[0158]
y=xw
xf
+bf[0159]
其中,x表示上一层的输出,y表示本层的输出,w
xf
为权重,bf为偏置量。
[0160]
步骤s204.损失函数为均方误差,计算公式为
[0161][0162]
其中,为预测值,yi为真实值,n为样本个数。
[0163]
每一次迭代先前向计算,再通过反向传播,更新参数。
[0164]
步骤103,调整模型参数及调节模型超参数,得到最优模型。
[0165]
本发明实施例中,贝叶斯自动调参的工作方式是通过对目标函数形状的学习,找到使结果向全局最大提升的参数。在贝叶斯自动调参中采用高斯过程对目标函数建模,得到其后验分布,并且很容易在局部最优解上不断采样。使用贝叶斯自动调参的预测过程见图3。主要调节的超参数为滑动窗口大小t,transformer的编码器的层数n,门控循环单元的个数h,学习率等。
[0166]
在调参过程中,可以选人工手动经验调参方法,也可以选择贝叶斯自动调参。
[0167]
在训练过程中,可以画出loss随时间变化的曲线图,以判断模型是否达到收敛。
[0168]
反归一化。对x
′
进行反归一化得到特征x,x
max
和x
min
分别为其中的最大最小值。其公式为:
[0169]
x=x
′
(x
max-x
min
)+x
min
。
[0170]
评价体系。
[0171]
平均绝对误差,真实目标yi与预测值之间差值绝对值的平均值
[0172]
(注:n为测试集样本数量,下同)
[0173]
均方误差:真实目标yi与预测值之间差值平方的平均值
[0174][0175]
对比平均绝对误差,均方误差对异常值更敏感。
[0176]
均方根误差:均方误差的方根,与yi具有相同的单位,可从单位度量上衡量模型的效果
[0177][0178]
上述几种误差越小,就代表模型的性能越好。
[0179]
r2决定系数,反映模型拟合数据的准确程度。计算公式:
[0180]
[0181]
平均绝对百分比误差
[0182][0183]
步骤104,根据所述最优模型对待预测内容进行预测。
[0184]
将得到的最佳模型用于预测集的预测问题,预测结果如图7a~图7c。
[0185]
为了实现上述流程,本发明技术方案还提供一种多变量时间序列预测装置,如图8所示,该多变量时间序列预测装置包括:
[0186]
预处理单元21,用于收集预测内容及相关特征的历史数据,进行数据预处理得到预测数据集,并构建可变滑动窗口数据集;
[0187]
模型训练单元22,用于将所述预测数据集放入变压器模块自编码器transformer encoder作为特征提取器组成的模型结构中,训练模型;
[0188]
参数调整单元23,用于调整模型参数及调节模型超参数,得到最优模型;
[0189]
内容预测单元24,用于根据所述最优模型对待预测内容进行预测。
[0190]
综上所述,本发明的技术方案,提出了一种多变量时间序列预测方案,收集预测内容及相关特征的历史数据,进行数据预处理得到预测数据集,并构建可变滑动窗口数据集;将所述预测数据集放入transformer encoder作为特征提取器组成的模型结构中,训练模型;调整模型参数及调节模型超参数,得到最优模型;根据所述最优模型对待预测内容进行预测。
[0191]
本发明实施例中,对多变量数据样本进行缺失值填补、离散值数值化、归一化等预处理,划分训练集验证集测试集,创建可变滑动窗口的数据样本,以及设计可变transformer编码器层数的深度神经网络作为特征提取器,注意力机制可以更好地把握多变量数据集中的关键变量,接着经过可变个数的门控循环单元,用来再次捕捉时间上的关联性,经过线性映射层,最后加入全连接层做回归预测。将处理好的数据集输入深度神经网络中进行训练。此外,本发明提供了两种调整超参数的策略,一种是基于经验的人工调参,另一种是贝叶斯自动调参。本发明根据多变量数据具有时空关联的特性,设计了基于可变滑动窗口与transformer的多变量时间序列预测算法,该算法最大的创新是使用transformer捕获特征间的关联,即空间关联,使用门控循环单元捕获不同特征之间的关系,即时间关联。将空间关联与时间关联相结合,构建了具有更高预测效果的新的神经网络结构。
[0192]
本发明的方案结合滑动窗口与transformer,将transformer的编码器部分看成特征提取器,滑动窗口可以更好地根据业务去确定预测值与前时间步的依赖步数。结合多变量时间序列预测的特点,和transformer的注意力机制结合起来,更能捕捉到不同特征之间的权重关系,更好地把握空间维度的特征,从而提升模型预测效果。结合多变量时间序列预测的特点,和门控循环单元结合起来,更能捕捉到时间步上特征间的关系,更好地把握时间维度的特征,进一步提升模型预测效果。本发明方案设计思路清晰,使用方式简便,在工程实际中,具有广泛的适用性。
[0193]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实
施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0194]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0195]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0196]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0197]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。