今天给大家介绍一篇康奈尔大学和IBM研究院上周法发布的一篇时间序列相关工作,将时间序列预测任务和缺失值填充任务进行联合建模。通过对时间序列预测和缺失值填充这两个任务的整体建模和端到端训练,实现了一个模型同时解决两个任务,并提升两个任务效果的目标。
1、问题背景
本文的问题背景为,给定历史观测序列,包括两个部分,X表示外部特征,维度为[O, dX],O表示观测序列长度,dX表示外部特征维度;Y表示目标变量,即待预测的变量,维度为[O, dY],dY表示目标变量维度。X和Y都有一定比例的缺失值。并且假设,Y是可以根据X预测出来的。目标是训练一个端到端模型,将X和Y的历史观测值中的缺失值补全,同时预测X和Y的未来值。
2、建模思路
本文整体的联合建模思路如下图所示,根据X和Y,共同构建输入序列Z,对未来序列进行预测,并实现缺失值填充。
整个模型的优化目标可以表示成下面这个公式,核心是两个函数f()和g()。优化函数的第一项,是目标序列Y的观测值,与根据外部特征X经过f()函数对Y的预测结果构成,拟合目标是优化f(),让其能根据外部特征X预测出目标变量Y。第二项是让整个序列的值(X和Y),与根据g()函数的预测结果差距尽可能小。g()输入观测到的外部特征和使用观测到的外部特征预测的目标变量Y,预测整个序列的历史(缺失值填充)和未来(时间序列预测)。M代表缺失值mask,将缺失值部分的loss用mask置为0不参与计算。
以上就是本文的核心建模思路。总体来看,g()用来建模多变量之间的关系,利用X预测Y。f()建模序列维度上的关系,根据可观测序列预测未知序列。g()侧重空间维度,f()侧重时间维度,因此整体来看是一个时空预测建模方法。
3、实现方法
本文的实现方法主体采用的是全连接结构,两个关键函数f()和g()都是全连接组成。f()用来将X映射到Y,X和Y在时间维度上相同,空间维度上不同,这里相当于将X的空间维度从dX映射到dY,通过一个全连接解决。g()用来将X和f(X)历史观测结果映射到历史观测+未来预测结果,空间维度上相同,时间维度上不同,同样使用一个全连接进行时间维度上的映射。下图中左侧为f()的实现逻辑,右侧为全连接的映射逻辑,g()类似,只不过映射是在空间维度发生的。
总结一下,模型实现缺失值填充和预测的函数主要是g()函数,它的输入是不完整的历史序列X和Y,输出是完成得到X和Y以及对未来的预测结果。
4、实验结果
本文同时解决缺失值填充和预测任务,在实验阶段也同时在两个任务上进行了评估,下面两张图分别是缺失值填充和预测任务上的效果。实验结果表明,这种统一联合建模的方式,对于时间序列预测和缺失值填充都有正向作用。