本人依照对论文的理解对用pytorch在交通数据上复现了这篇论文,结果和论文给出的结果有一点出入,因为是个人理解所以难免有出入。如果大家发现错误请一定告知我,感谢!复现链接:https://github.com/stanli124/Radflow-Pytorch
我们提出了一种新的相互影响的时间序列网络模型。时间序列中的图形结构存在于不同的领域,例如受超链接影响的网络流量、受推荐影响的产品销售或受道路网络和天气影响的城市交通量。最近在图形建模和时间序列预测方面分别取得了一些进展,但目前还不存在一种用于序列网络的表达性和可伸缩性方法。我们引入Radflow,一种新的模型,它包含三个关键思想:一个用于获得依赖时间的节点嵌入的递归神经网络,用多头注意力聚集来自相邻节点的影响流,以及时间序列的多层分解。Radflow自然会考虑节点和边随时间变化的动态网络,并可用于预测和数据插补任务。在几百到几十万个节点的真实数据集上,我们观察到Radflow变体是各种设置中性能最好的模型。Radflow中的循环分量也优于最先进的时间序列模型N-BEATS。我们证明了Radflow可以学习不同的趋势和季节模式,它对缺失节点和边缘具有鲁棒性,并且网络邻居之间的相关时间模式反映了影响强度。我们策划了WikiTraffic,这是最大的时间序列动态网络,拥有366K个节点和2200万个时间相关链接,时间跨度五年。该数据集为开发该领域的模型提供了一个开放的基准,其中包括优化web资源的应用程序。更广泛地说,Radflow有潜力改进相关时间序列网络(如股票市场)的预测,并在地理上分散的自然现象网络中估算缺失的测量值。
预测时间序列是一个长期存在的研究问题,适用于计量经济学、市场营销、天文学、海洋科学等领域。同样,网络也是积极被研究的对象,网络与交通、互联网基础设施、生物过程中的信号和在线媒体等领域具有广泛的相关性。在本文中,我们关注相互影响的时间序列网络之间的预测。解决此问题的工具将有助于回答有关复杂系统在上述应用领域及其他领域随时间演化的问题。
从时间序列和大型网络的端到端学习的最新进展来看,有三个突出的挑战。第一个是表达能力,即构建模型以表示更丰富的功能类。最近在预测图书销量[6]和在线视频浏览量[38]方面的工作采用了对传入节点的最后观察值的简单聚合[6]或线性组合[38]。
最近的图神经网络[8,14,35]提供了网络邻居之间的灵活聚合,但不容易应用于时间序列。N-BEATS[21]是时间序列基准测试中的最新模型,使用一组神经模块分解历史值;但是,由于神经模块没有明确编码数据的时间结构,因此这种结构不能为序列网络提供可用的表示。自然语言处理(NLP)领域中考虑了几种图到序列的任务[4,39],但时间序列网络问题,用这种术语来说,是序列图到序列图。
第二个挑战是规模。我们的目标是建立纵向(即每日)跨越几年的时间序列,以及数十万个节点的大型网络。这需要时间序列组件、图组件及其交互的可伸缩性。例如,最近提出的T-GCN模型[40]将一个图神经网络嵌套在一个递归神经网络中,该网络在空间和时间复杂度上都受到限制,因此无法扩展到web规模的网络。评估中使用的网络仅包含几百个节点。
第三是网络中连接和节点的动态特性。例如,Wu等人[38]报告说,50%的在线视频推荐链接出现在63天的观察中不到5天,我们观察到,仅2020年上半年就创建了超过10万个新维基百科页面。动态网络是图神经网络关注的一个活跃话题[18,22,33],但这些现有算法设计用于链路预测和节点分类,而不是时间序列预测。
我们提出了一种新的时间序列神经网络模型来解决这三个挑战。我们采用一种递归结构,在时间序列分解原理的基础上提供对时间敏感的网络流聚合;因此命名为Radflow。
它比n-beats更具表大能力,因为它可以生成节点嵌入来处理图形输入。它比T-GCN更具可扩展性,因为它可以通过网络注意力和重要性加权节点采样处理数十万个节点。Radflow的结构允许它以动态变化的节点和边作为输入,允许缺失数据,适用于多变量时间序列。此外,它的多头注意策略和分层分解提供了对网络影响和时间的解释。
Radflow在四个数据集上进行评估。两个是由几百个节点组成的城市交通;另外两个是大型数据集VevoMusic,包含61K个视频[38],和新策划的WikiTraffic数据集,包含366K页面和2200万个动态链接。在VevoMusic和WikiTraffic上,没有网络信息的Radflow始终优于可比的N-beats[21]。在具有网络信息的模型中,Radflow变体在插补和预测任务中表现最好。特别是,Radflow在VevoMusic上的SMAPE分数比最先进的ARNet[38]高出19%。我们发现,循环分量中的层捕捉到不同的季节性和趋势,而网络上的注意力捕捉到了来自相邻节点的时间变化影响。图1示出了基于该页面的历史流量和相邻页面的流量来预测黄色背心运动的28天观看次数的任务。Radflow正确预测了测试期间观察到的急剧下降。
主要贡献点:
1.Radflow,一种用于多变量时间序列动态网络的端到端神经预测模型,可扩展到数十万个节点。
2.通过分层分解对时间序列模式的可解释预测,以及通过多头注意力对网络邻居的可解释预测。
3.在各种任务的真实数据集上,始终优于最先进的时间序列预测模型和网络序列预测模型。
4.WikiTraffic,时间序列中最大的动态网络,包含来自366K个维基百科页面的多维度流量数据和五年内的22M动态链接。GitHub1上提供了数据集、代码和预处理模型。
时间序列建模有大量的文献,跨越许多领域。经典方法[11]包括指数平滑和自回归综合移动平均(ARIMA)模型。指数平滑使用过去观测值的指数衰减权重,而扩展可以结合趋势和季节性[3,10,36]。ARIMA [2]模型旨在使用过去观测值和预测误差的线性组合来描述时间序列中的自相关,扩展也可以包含季节性。近年来,神经网络方法变得更加流行。吴等[37]利用transformers预测流感活动。朱和拉普捷夫[42]使用贝叶斯神经网络来建模预测中的不确定性。
Oreshkin等人[21]首次证明,在基准数据集M3[16]、M4[17]和tourism[1]上,没有任一时间序列特定组件的纯神经网络模型可以优于现有的统计技术。他们提出的模型N-BEATS将时间序列预测视为一个非线性多元回归问题,输出一个固定长度的向量作为预测。N-BEATS的关键建模组件是层的叠加,每个层都将前一层计算的剩余时间序列作为输入。然而,N-BEATS仅适用于一维时间序列,并且不会在每一步生成时间序列表示向量,这使得它难以用于具有动态网络信息的设置中。我们通过采用在任何时间步产生时间序列表示(我们称之为嵌入)的循环网络结构来解决这些缺点,同时仍然利用N-beats的剩余叠加思想。
另一类时间序列是连续时间内发生的离散事件,通常由时间点过程描述。使用点过程的预测方法[19]要求数据包含单个事件的详细信息,而不是由于隐私和存储限制而在大规模web数据中更常见的聚合统计信息。点过程估计模型通常是事件数量的二次型,这对于VevoMusic和WikiTraffic等大规模数据来说过于昂贵。
在线服务中的网络影响是一个活跃的研究领域,研究在线项目之间的链接如何决定可见性、影响和未来行为等属性。社交网络和信息网络经常在这种背景下被研究。在Twitter上,Su等人[29]指出,新的基于网络的推荐系统的引入导致了网络结构的实质性变化,加剧了“富人越来越富”的现象。在维基百科上,链接结构被用来跟踪新兴主题的演变[12]和由外部事件引起的流量[41]。Zhu等人[41]表明,当维基百科文章从外部事件中获得注意力时,它会导致下游超链接文章的关注大幅增加。Kämpf等人[12]表明,使用维基百科的页面浏览量和内部链接可以跟踪和预测一个新兴主题的演变。亚马逊上的产品推荐网络已被证明会影响购买决策[20]。Wu等人[38]指出,YouTube的推荐系统所诱导的网络导致了音乐视频之间的影响流。
对网络影响建模的一种最新方法是使用图神经网络生成图中节点的低维嵌入。早期的方法,如node2vec[7]和DeepWalk[24]都是直推式的,主要设计用于处理固定图。最新的模型可以应用于需要为训练期间未看到的节点生成嵌入的归纳设置。例如,这是通过在GraphSage[8]中从局部邻域中采样和聚合节点特征来实现的。已经提出了各种聚合方法,包括最大池[8]和平均池[14]。Veličković等人[35]提出了图注意力网络(GAT),该网络使用了一种改进的多头注意力[34]来聚合邻域。在我们提出的架构中,网络嵌入和聚合是关键组件。可以使用多种网络聚合机制(参见第4.2节和第6节)。我们建议的聚合机制类似于GAT,但相反,我们使用了多头注意力的原始且更常见的点积公式。
作为一个新的研究领域,时间序列网络的预测方法很少,数据集数量有限。早期的方法忽略了网络结构,而是将每个节点视为一个独立的序列[25,30]。Wu等人[38]将局部网络结构整合进自回归时间序列模型,但该体系结构仅适用于静态图。Zhao等人[40]提出了一种新的递归神经网络(RNN)单元,称为T-GCN,该单元通过加入图卷积网络(GCN)组件来考虑静态图的结构。这两个组件的捆绑和缺乏邻域采样使得T-GCN在计算上过于昂贵,无法应用于超过几百个节点的图。
一个相关的问题是预测网络中的边是如何变化的,例如使用点过程[32,33]或图形和时间上的二维注意[27]。我们不处理这个问题;相反,我们假设动态图是观察到的(例如由推荐系统或crowd-sourcing生成),预测目标是每个节点上的时间序列,而不是图本身的演化。我们的工作是第一个为大型动态时间序列网络优化的预测模型。
考虑图的时间序列预测问题。输入为图 G = ( V , E ) G =(V,E) G=(V,E),又由N个节点组成,表示为 V = { v 1 , v 2 , . . . , v N } V=\{v^1,v^2,...,v^N\} V={v1,v2,...,vN},另外还有M条边。每个节点 v j v^j vj与有T个观测值的多元时间序列相关联:
v j = [ v 1 j , v 2 j , . . . , v T j ] (1) \large v^j=[v_1^j,v_2^j,...,v_T^j] \tag 1 vj=[v1j,v2j,...,vTj](1)
其中 v t j ∈ R D v_t^j \in R^D vtj∈RD是节点vj在时间步t的d维观测值向量. 当时间序列在每个时间步只有一个值的时候D=1.我们使用 v t : s j v^j_{t:s} vt:sj表示vj从时间t到时间s的所有观测值的子序列,t小于s。
v [ t : s ] j = [ v t j , v t + 1 j , . . . , v s − 1 j , v s j ] (2) \large v_{[t:s]}^j=[v_t^j,v_{t+1}^j,...,v_{s-1}^j,v_s^j] \tag 2 v[t:s]j=[vtj,vt+1j,...,vs−1j,vsj](2)
如果节点vi有可能直接影响节点vj在时间步t的时间序列,我们会添加一条从vi到vj的有向边 e t i j e^{ij}_t etij,vi就成为vj的邻居。我们定义 N t ( v j ) \mathcal{N_t}(v^j) Nt(vj)为vj在时间步t的邻域集合。边可能随着时间出现和消失,因此G是一个动态图。我们现在可以把G表示为一个邻接矩阵 A ∈ R N × N × T A \in R^{N \times N \times T} A∈RN×N×T。对于无权有向图,A中的实体 a i j t a_{ijt} aijt,如果边 e t i j e^{ij}_t etij存在其值为1,否则为0。
我们现在定义时间序列预测问题,因为它适用于动态图。预测长度F是模型将预测的未来时间步的数量,而过去长度B是可用于进行此类预测的过去观测数。假设我们当前处于时间t=0。为了预测节点vj(我们称之为ego节点)从时间步长1到F的时间序列,预测模型如下:
v ^ [ 1 , F ] j = F o r e c a s t M o d e l ( v [ − B + 1 : 0 ] j , V N ( v j ) ) (3) \large \hat v_{[1,F]}^j=ForecastModel(v_{[-B+1:0]}^j,\mathcal V^{ \mathcal N(v^j)}) \tag 3 v^[1,F]j=ForecastModel(v[−B+1:0]j,VN(vj))(3)
预测模型会接受两个输入:vj的最近B个观测值以及来自vj邻域的信息。这导致了两个不同的设置,它们都会在章节7中评估。第一个是数据插补,这时我们在预测的同时观测邻域的真实值。这相当于在预测期内使用邻域的真实值。
V N ( v j ) = { v [ − B + 1 : F ] ′ ∣ v ′ ∈ N ( v j ) } (4) \large \mathcal V^{\mathcal N(v^j)}=\{v'_{[-B+1:F]} |v' \in \mathcal N(v^j)\} \tag 4 VN(vj)={v[−B+1:F]′∣v′∈N(vj)}(4)
这是Wu等人[38]使用的设置,当主要目标是填充时间序列中缺失的数据或解释节点之间的影响时,该设置最为有用。第二个设置是Forecast,我们首先使用我们最好的纯时间序列模型来预测每个邻居的未来观测值。然后将这些预测用于整个模型中,以预测vj本身。
在两个设置中,模型最后的输出是
v ^ [ 1 , F ] j = [ v ^ 1 j , v ^ 2 j , . . . , v ^ F j ] (5) \large \hat v^j_{[1,F]} = [\hat v_1^j,\hat v_2^j,...,\hat v_F^j] \tag 5 v^[1,F]j=[v^1j,v^2j,...,v^Fj](5)
与接下来F个时间步对应的预测值.这里我们使用hat符号表示模型的预测值.如 v ^ t j \hat v_t^j v^tj是与真实值 v t j v_t^j vtj相对应的预测时间序列向量。
RADFLOW主要由两个主模块组成:循环组件和流聚合组件。循环组件独立地对图中的所有时间序列建模,而流聚合组件根据相邻时间序列调整预测。通过将两个主要模块的输出相加,获得时间步长t处节点vj的预测值。
v ^ t j = v t j R + v t j A (6) \large \hat v_t^j=v_t^{jR}+v_t^{jA} \tag 6 v^tj=vtjR+vtjA(6)
jR和jA是分别来自循环组件的预测值和流聚合组件的预测值。jA本身是jR的函数。
我们通过使用叠加循环块将时间序列分解为L个分量来预测时间序列。循环组件还被喂入流聚合组件,流聚合组件使用节点向量来聚合邻域中的信息。图2是循环部件的示意图。
首先将时间序列的历史观测值投影到潜在空间 R H \mathbb R^H RH中 ,H是隐藏状态大小:
z t j 1 = W D v t j (7) \large \mathcal z_t^{j1} = W^D \mathcal v_t^j \tag 7 ztj1=WDvtj(7)
其中 W D ∈ R H × D W^D \in \mathbb R^{H \times D} WD∈RH×D是可学习权重矩阵。为了得到这个投影的直观理由,考虑D=1和 W D W^D WD是全一向量的特殊情况。那么 z t j 1 \mathcal z_t^{j1} ztj1会包含观测结果 v t j \mathcal v_t^{j} vtj的h个副本。这类似于并行运行h个不同的时间序列模型的集合。
我们模型的循环组件由L个块组成。 z t j ℓ \mathcal z_t^{j \ell} ztjℓ是节点vj在时间步t的第l个block的输入。特别地,公式7中计算得到的向量 z t j 1 \mathcal z_t^{j1} ztj1会被用作于第一个block的输入。每个block会输出三个向量-the backcast vector p t j ℓ p_t^{j \ell} ptjℓ, the forecast vector q t j ℓ q_t^{j \ell} qtjℓ和 the node vector u t j ℓ u_t^{j \ell} utjℓ:
( p t j ℓ , q t j ℓ , u t j ℓ ) = B l o c k ℓ ( z t j ℓ ) (8) \large (p_t^{j \ell},q_t^{j \ell},u_t^{j \ell})=Block_{\ell}(z_t^{j \ell}) \tag 8 (ptjℓ,qtjℓ,utjℓ)=Blockℓ(ztjℓ)(8)
其中 ( p t j ℓ , q t j ℓ , u t j ℓ ) ∈ R H (p_t^{j \ell},q_t^{j \ell},u_t^{j \ell}) \in \mathbb R^H (ptjℓ,qtjℓ,utjℓ)∈RH。特别是在每个区块内,我们有一个LSTM单元,接着是前馈层。LSTM Cell先运行,接受以下输入:由前一块 z t j ℓ ∈ R H z_t^{j \ell} \in \mathbb R^H ztjℓ∈RH计算的时间序列残差,前一时间步的隐藏状态 h t − 1 j ℓ ∈ R H h_{t-1}^{j \ell} \in \mathbb R^H ht−1jℓ∈RH,以及细胞状态 c t − 1 j ℓ ∈ R H c_{t-1}^{j \ell} \in \mathbb R^H ct−1jℓ∈RH。LSTM单元计算得到隐藏状态输出 h t − 1 j ℓ h_{t-1}^{j \ell} ht−1jℓ,该输出稍后会被传入三个不同的前馈层:
p t j ℓ = F e e d F o r w a r d P ℓ ( h t j ℓ ) (9) p_t^{j \ell} = FeedForward^{P \ell}(h_t^{j \ell}) \tag 9 ptjℓ=FeedForwardPℓ(htjℓ)(9)
q t j ℓ = F e e d F o r w a r d Q ℓ ( h t j ℓ ) (10) q_t^{j \ell} = FeedForward^{Q \ell}(h_t^{j \ell}) \tag {10} qtjℓ=FeedForwardQℓ(htjℓ)(10)
u t j ℓ = F e e d F o r w a r d U ℓ ( h t j ℓ ) (11) u_t^{j \ell} = FeedForward^{U \ell}(h_t^{j \ell}) \tag {11} utjℓ=FeedForwardUℓ(htjℓ)(11)
每个前馈层由两个线性投影组成,在第一个线性投影接GELU激活函数: F e e d F o r w a r d ( h ) = W F F 2 G E L U ( W F F 1 h ) FeedForward(h)=W^{FF_2}GELU(W^{FF_1}h) FeedForward(h)=WFF2GELU(WFF1h)
GELU激活函数是Relu函数的随机变体,已经被证明在序列到序列模型中比Relu表现的更好。GELU被定义为 G E L U ( x ) = x Φ ( x ) GELU(x) = x\Phi(x) GELU(x)=xΦ(x), Φ \Phi Φ是标准高斯累积分布函数。第一个输出 p t j ℓ p_t^{j \ell} ptjℓ是Block_l捕获的投影时间序列的一个组成部分。后续块的输入取决于消除此序列后投影时间序列的残值:
z t j ℓ + 1 = z t j ℓ − p t j ℓ (13) z_t^{j \ell + 1} = z_t^{j \ell} - p_t^{j \ell} \tag {13} ztjℓ+1=ztjℓ−ptjℓ(13)
第二个输出 q t j ℓ q_t^{j \ell} qtjℓ是block_l对下一个时间步的预测的贡献。循环分量的最终预测表示将是所有块的总和
q ^ t + 1 j R = ∑ ℓ = 1 L q t j ℓ (14) \hat q_{t+1}^{jR}=\sum_{\ell = 1}^L q_t^{j \ell} \tag {14} q^t+1jR=ℓ=1∑Lqtjℓ(14)
其中 q ^ t + 1 j R ∈ R H \hat q_{t+1}^{jR} \in \mathbb R^H q^t+1jR∈RH。然后我们把该总和投影到 R D \mathbb R^D RD从而获得循环分量的预测贡献.也就是公式6中的第一项:
v ^ t + 1 j R = W R q ^ t + 1 j R (15) \large \hat v_{t+1}^{jR} = W^R \hat q_{t+1}^{jR} \tag {15} v^t+1jR=WRq^t+1jR(15)
流聚合组件对网络中相邻节点的时间序列之间的影响进行建模。该组件将邻域中每个节点的循环组件中与时间相关的嵌入作为输入,并生成等式(6)中的第二项作为输出。每个嵌入汇总了当前时间之前对应节点的时间序列。设 u t j u_t^j utj是节点vj在时间步t处的嵌入,由节点向量 u t j ℓ u_t^{j \ell} utjℓ在L个块上求和形成:
u t j = ∑ ℓ = 1 L u t j ℓ (16) u_t^j = \sum_{\ell = 1}^L u_t^{j \ell} \tag {16} utj=ℓ=1∑Lutjℓ(16)
在数据插补设置(imputation setting)中,在t+1时刻预测节点所有邻域的嵌入集合为
u t + 1 v j = { u t + 1 i ∣ i s . t . v j ∈ N t + 1 ( v j ) } (17) \mathcal u_{t+1}^{v^j} = \{u_{t+1}^i|i s.t. v^j \in \mathcal N_{t+1}(v^j)\} \tag {17} ut+1vj={ut+1i∣is.t.vj∈Nt+1(vj)}(17)
在预测设置中(forecast setting),我们简单地使用预测的 u ^ t + 1 i \hat u_{t+1}^i u^t+1i替换真实值 u t + 1 i u_{t+1}^i ut+1i.我们现在将预测节点的嵌入投影到查询空间中
u t Q j = W Q u t j (18) u_t^{Qj} = W^Qu_t^j \tag {18} utQj=WQutj(18)
把邻域节点的嵌入投影到键空间和值空间中,
u t + 1 K i = W K u t + 1 i (19) u_{t+1}^{Ki} = W^Ku_{t+1}^i \tag {19} ut+1Ki=WKut+1i(19)
u t + 1 V i = W V u t + 1 i (20) u_{t+1}^{Vi} = W^Vu_{t+1}^i \tag {20} ut+1Vi=WVut+1i(20)
聚合嵌入 u ^ t + 1 j \hat u_{t+1}^j u^t+1j是具有GELU激活的值的加权和,
u ∼ t + 1 j = G E L U ( ∑ i λ i u t + 1 V i ) (21) \overset {\thicksim} u_{t+1}^j = GELU(\sum_i \lambda_i u_{t+1}^{V_i}) \tag {21} u∼t+1j=GELU(i∑λiut+1Vi)(21)
其中 λ i \lambda_i λi称为注意力得分,由查询和键之间的点积计算得到,接着通过softmax层。注意预测节点(ego node)不包括在聚合中;相反,它是单独添加的,
u ∼ t + 1 j = W E u t j + W N u ^ t + 1 j (22) \overset {\thicksim} u_{t+1}^j = W^Eu_t^j + W^N \hat u_{t+1}^j \tag {22} u∼t+1j=WEutj+WNu^t+1j(22)
然后将结果投影到 R D \mathbb R^D RD中.
v ^ t + 1 j A = W A u ^ t + 1 j (23) \hat v_{t+1}^{jA} = W^A \hat u_{t+1}^j \tag {23} v^t+1jA=WAu^t+1j(23)
向量 v ^ t + 1 j A \hat v_{t+1}^{jA} v^t+1jA就是来自流聚合组件的预测贡献,也就是公式6中的第二项.
我们将带有多头注意力的完整模型称为Radflow。请注意,流聚合组件和循环组件是解耦的。因此,我们可以很容易地用另一种节点聚合方法来代替多头注意。特别是,如果我们用邻域的简单算术平均值替换等式(21)
u ∼ t + 1 j = 1 ∣ N t + 1 ( v j ) ∣ ∑ i u t + 1 i (24) \overset {\thicksim} u_{t+1}^j = \frac{1}{|\mathcal N_{t+1}(v^j)| \sum_i u_{t+1}^i } \tag {24} u∼t+1j=∣Nt+1(vj)∣∑iut+1i1(24)
我们将获得GraphSage的原始公式[8]。我们称使用公式(24)而不是公式(21)的模型为Radflow-GraphSage。除了采用公式(24)外,进一步的简化是在添加ego节点与其邻居的嵌入时,去掉公式(22)中的线性投影。我们把这个变体Radflow-MeanPooling。
我们的多头注意力(multi-head)邻域聚合类似于图注意力网络(GAT)。为了计算GAT中的注意力分数,我们首先需要将ego节点的嵌入与邻居节点的嵌入连接起来,然后通过一个前馈网络将结果输入一个LeakyReLU。相反,我们回到最初的多头注意力[34],我们用一个简单的点积(dot product)来计算注意力分数。我们还添加了零关注,即节点可以选择不关注任何邻居。我们将在第7节中以经验证明,我们的简单方法在几乎所有情况下都优于GAT。
将时间序列的残差输入到深度网络层的过程受到了N-BEATS的启发。然而,N-BEATS从原始标量观测值中获取残差,而我们的方法是从时间序列的向量-值投影中计算残差,如公式(7)所示。此外,N-BEATS不容易适应动态图设置,因为它不会生成依赖于时间的嵌入。N-BEATS将预测任务视为多元回归问题,其中每一步都可以看到历史中的其他每一步。这使我们能够获得整个序列的嵌入,但不能获得单个步的嵌入。在我们提出的架构中,节点向量 u t j ℓ u_t^{j\ell} utjℓ用于构建每个步的时间相关嵌入,如等式(16)所示。
在过去几年中,transformers[34]已成为NLP领域中的首选序列模型。尽管他们在NLP任务中取得了成功,但在时间序列预测方面进展甚微。最近,Wu等人[37]设计了一种用于预测流感病例的transformers,但他们的模型仅比LSTM基线提供了微小的改进。我们的初步调查表明,LSTM在时间序列设置方面的性能优于transformers。我们假设LSTM严格的时间顺序可以更自然地编码时间序列;而文本通常具有潜在的树状结构,它更自然地通过注意机制和位置编码被transformers编码。
最相关的非神经聚合方法是ARNet[38],一种标量值时间序列预测模型,其中预测计算如下:
v ∼ t j = ∑ k = 1 p α k j v t − k j + ∑ v i ∈ N ( v j ) β i j v t i (25) \large \overset {\thicksim} v_t^j=\sum_{k=1}^p \alpha_k^jv_{t-k}^j+\sum_{v_i \in \mathbb N(v^j)} \beta^{ij}v_t^i \tag {25} v∼tj=k=1∑pαkjvt−kj+vi∈N(vj)∑βijvti(25)
其中,第一项为p=7(天)阶自回归模型,第二项为网络效果建模。可学习参数 β i j \beta^{ij} βij可以解释为控制从节点i传播到节点j的视图比例的边权重。尽管ARNet很简单,解释也很简单,但该模型假设网络是静态的。此外,Wu等人[38]仅在数组增补环境中进行评估,而不在未来观测值未知的预测环境中进行评估。我们将在第7节中展示,Radflow增加的复杂性允许它在预测环境中同时包含动态图和功能。
最接近我们的模型是T-GCN[40],其修改的GRU单元在计算更新和重置门之前进行图卷积。与Radflow不同,Radflow用于从磁盘获取子图,并且只在最后一个LSTM层之后计算一次网络信息,T-GCN要求整个网络都在内存中,并在每个层的每个时间步聚合网络。因此,由于空间和时间复杂性,T-GCN不能扩展到更大的数据集。另一方面,我们提出的体系结构可以轻松处理数十万个节点的动态网络。
Radflow的经验验证在两个小型静态网络Los-loop和SZ-taxi上进行[40];以及两个大型动态网络VevoMusic[38]和WikiTraffic。其中,WikiTraffic是我们收集的新数据集,是迄今为止最大的时间序列动态网络。本节详细描述了每个数据集
Los loop和SZ-taxi[40]s 包含交通速度和道路网络信息的时间序列。Los Loop是一个由207个传感器组成的网络,从2012年3月1日到3月7日,每隔5分钟测量一次交通速度。如果两个传感器彼此靠近,则它们之间有一条边。深圳出租车是深圳罗湖区156条道路组成的网络,从2015年1月1日至1月31日,每15分钟测量一次交通速度。如果两条道路相连,则在它们之间形成一条边。两者都是静态网络,Losloop包含2833条边,SZ-taxi包含532条边。我们使用这些数据集将Radflow与T-GCN进行比较[40]。
VevoMusic[38]是一个YouTube视频网络,包含来自4435位不同艺术家的60740段音乐视频。网络中的每个节点对应于一个视频,并与2018年9月1日至2018年11月2日63天内收集的每日观看次数的时间序列相关联。如果在t天,视频v出现在视频u的推荐列表中,则在t天存在从视频u到视频v的有向边。
为了确保公平比较,我们使用Wu等人[38]划分的按时间顺序的训练-测试,其中我们在前49天进行训练,在接下来的7天进行验证,并在最后7天进行测试。我们还遵循最初的设置,在至少有一个传入边的13710个节点上计算评估指标。这使得网络模型和非网络模型之间的差异更加明显。
我们收集了新的wikitraffic网络数据集,其中包含366K节点和2200万个不同的页面对,这些页面对在五年的时间里至少有一天具有边。在任何一天,我们都有多达1700万个链接,如表1所示。
WikiTrafficis和vevomusicin相似,它们都表现出很强的每周季节性(图3)。它们都有动态链接,尽管wikitraffic链接总体上更稳定(图4)。
数据收集从英文维基百科的原始转储开始,其中包含1700万篇文章的完整修订历史。我们从中收集2015年7月1日至2020年6月30日的每日浏览次数。在最后的140天里,我们会删除每天平均浏览量少于100的文章。这样我们就有366,802个页面了。观看量计数分为两类: 桌面用户的观看量和非桌面用户的观看量。我们将最后28天设置为测试期,再前28天设置为验证期,其余时间设置为训练期。提前28天预测可以让我们在预测未来相当长的一段时间时测试模型的稳健性。
此外,由于WikiTraffic比其他网络的时间序列数据集大一个数量级,因此我们可以留出节点,仅在测试期间使用。因此,训练-测试划分按时间和节点划分,为模型的推广能力提供了更强的测试。为了有助于评估基于网络的预测模型,测试集应该形成自己的网络,因此我们选择连接的节点。我们从四个种子类别开始:编程语言、星球大战、全球变暖和全球健康,每个类别都有许多子类别。从每个种子类别开始,我们收集该类别中的所有页面以及四个级别中的所有子类别。这为我们的测试集提供了2434页。最后,我们考虑两个版本的数据集-单变量版本,我们预测页面的总观看量计数,和二元版本,我们分别预测桌面和非桌面流量。
在我们开展工作之前,谷歌为Kaggle竞赛创建了一个数据集,其中包含了维基百科中145K个随机抽样页面两年的流量。但是,此数据集不包含网络信息,并且包含噪音较大的低流量页面。Rozemberczki等人[26]策划了一个关于专门主题(变色龙、鳄鱼和松鼠)的小型超链接Wikipedia网络,每月只提供一次浏览次数。Consonni等人[5]引入了从2001年到2018年包含所有动态链接的WikiLinkGraph,但他们没有收集流量信息。相比之下,我们的WikiTraffic是时间序列中最大的动态网络,能够对信息流和用户兴趣进行大规模的详细研究。
通过预测Vevomusic上最后7天和WikiTraffic上最后28天的浏览量进行评估。对于Los loop和SZ taxi,我们预测了最后一小时的速度(Loos loop的最后12步和SZ taxi的最后4步)。如第3节所述,我们考虑了大数据集的预测和插补设置。在VevoMusic上,我们在两个不同的网络上进行评估:我们称之为VevoMusic(动态)的全动态网络和我们称之为VevoMusic(静态)的静态网络。为了构建静态版本,Wu等人[38]使用了主要的平滑方法来删除仅短暂出现的边,并使剩余边在所有时间步中保持不变。他们的最佳模型ARNet仅在插补设置的静态网络上进行评估。在WiKiTrFiFIC中,我们考虑两个网络:一个是单变量时间序列的观看计数网络,另一个是双变量时间序列的网络,其中桌面和非桌面流量被分开。
根据之前的预测工作[16,17],我们的主要评估指标将是预测范围F的对称平均绝对百分比误差:
其中 T \small \mathcal T T是测试集中的样本数量,F是预测范围,D是时间序列的维度, v ^ t d j \hat v_{td}^j v^tdj是真实值 v t d j v_{td}^j vtdj对应的预测值。SMAPE的上限为200,下限为0。它与尺度无关,确保预测误差将被视为与序列的大小有关。这一点很重要,因为它可以防止具有大量观看量的节点控制评估度量。较低的SMAPE对应更好的拟合,当且仅当预测完全符合基本事实时,SMAPE为0。对于单变量时间序列的两个小网络,Los LOOP和SZ-taxi,我们还报告了均方根误差RMSE和平均绝对误差MAE。
在一项消融研究中,我们比较了8个时间序列基线、7个网络时间序列变体和7个以上Radflow变体。以下8条时间序列基线的结果见表3和表4。
时间序列基线:
使用网络结构的预测模型
最后,我们进行一项消融研究,以测试我们架构的关键组件(表6)。从最佳模型(15)开始,用替代品替换模型中的一个部件:
(16-20)Radflow with other node embedding:我们可以选择重用单元的隐藏状态h(16)、回溯表示p(17)或预测表示q(18),而不是使用单独的输出u来表示节点。我们也可以连接不同的表示,例如[h; p]或者[h;p;q]。
(21)Radflow with no final projection:我们忽略等式(22)中的线性投影,将ego节点的嵌入直接添加到其邻居节点中。
(22)Radflow with one attention head:最后一个变体测试在完整模型中只有一个注意力头而不是默认的四个注意力头的效果。
网络尺度的时间序列观测通常在尺度上有很大差异。一个不受欢迎的页面可能没有浏览量,而一个受欢迎的页面可能每天收到数百万次访问。为了确保相似的缩放,我们的模型的输入和输出都是对数转换过的时间序列。在计算SMAPE、RMSE和MAE之前,输出是指数化的。通过向前传播最后一个有效观测值,可估算缺少的浏览量。我们不对时间序列应用任何其他预处理技术,如趋势或季节性去除。
表2显示了Radflow的关键超参数。我们使用Adam优化器[13]对所有模型进行了SMAPE目标训练, β 1 = 0.9 , β 2 = 0.9999 , ϵ = 1 0 − 8 \beta_1=0.9,\beta_2=0.9999,\epsilon=10^{-8} β1=0.9,β2=0.9999,ϵ=10−8。我们将权重衰减因子设置为10−4并将其与学习率分离[15]。我们把学习速度提高到10−4在前5000步中,然后10个epochs之后线性衰减,每个epoch由10000个步组成。我们将梯度范数剪裁为0.1。我们所有的模型都在Pytorch中实现[23]。为了进行公平比较,我们将所有变体的层数固定为8层,并确保所有变体的大小都在彼此的5%以内。
训练时间 VevoMusic实验在Titan V GPU上进行,WikiTraffic实验在Titan RTX GPU上进行。Titan RTX的内存是Titan V的两倍,用于在WikiTraffic上训练两跳Radflow。所有纯时间序列模型收敛速度非常快,训练时间不超过三个小时。具有一跳聚合的模型最多需要17小时进行训练,而具有两跳聚合的模型最多需要两天。我们从验证集中SMAPE得分最低的epoch中选取模型作为我们的最佳模型。
图的高效计算 与以前的方法(如T-GCN)不同,我们的模型不需要在训练期间将整个图形存储在内存中。相反,我们以HDF5格式存储图形,一次只直接从磁盘加载一批。
邻域采样 为了保持计算的可处理性,我们设计了一种基于重要性的邻域抽样技术。我们提出了一种两阶段的方法来选择邻居,而不是汉密尔顿使用的普通均匀采样。首先我们给每个邻域分配一个得分 ∑ d v t d j o u t d e g r e e ( v t j ) + 1 \frac {\sum_dv_{td}^j}{outdegree(v_t^j) + 1} outdegree(vtj)+1∑dvtdj。这个得分是邻域在时间步t的总的观看次数。添加自循环以避免被零除。直观地说,具有更多观看量的邻居将具有更大的影响,但如果该邻居具有多个外链,则影响将更加分散。使用这些分数,我们移除了每个ego节点邻域中倒数第10个百分位数的邻居,这减少了聚合引起的噪声。在第二阶段,我们在训练期间对四个邻居进行采样,其概率与邻居在回播期间出现的时间步数成正比。在评估过程中,我们发现由于数据量大,使用所有节点在计算上是不可行的。因此,对于每个ego节点,我们只选择单跳设置中出现频率最高的16个邻居,以及两跳设置中的前8个邻居。
我们首先讨论不同模型变体的预测性能(第7.1和7.2节,表3至6)。适用时,我们在括号中报告配对样本的相关t-test的P值(表示为P)。本节中讨论的所有差异都具有统计学意义。有关更详细的显著性测试,请参见附录[31]。然后,我们给出了循环组件中不同层的可视化解释(第7.3节),接着是网络聚合组件提供的见解(第7.4节)。最后,我们对Radflow等模型的潜在应用进行了两项初步研究:网络未被完全观测时预测的稳健性(第7.5.1节),以及节点上流量激增与其注意力得分之间的关系(第7.5.2节)。