如何改良基于Basis的時間序列預測模型?
今天介紹一篇NIPS 2023中上海交大和螞蟻集團聯合發表的時間序列預測文章,基于basis的時間序列建模。目前代碼已經開源,論文的詳細信息如下。
論文標題:BasisFormer: Attention-based Time Series Forecasting with Learnable and Interpretable Basis
下載地址:??https://arxiv.org/pdf/2310.20496v1.pdf??
機構:上海交大
開源代碼:??https://github.com/nzl5116190/Basisformer??
1.基于Basis的時序預測
在時序預測中,basis指的是從時間序列數據集中,抽取出數量較少的、整個數據集時間序列都遵循的一些子序列,數據集中每個時間序列,都可以通過這些basis的加權還原出來。這種方法,最早出現在基于矩陣分解的時間序列建模中,將時間序列分解成basis和權重乘積的形式。比如原來的時間序列維度是M*T,那么會分解成M*a、a*T兩個矩陣。第一個矩陣代表每個時間序列在每個basis上的權重,第二個矩陣代表各個basis序列。后續的Nbeats等方式也是基于這類方法。
然而,之前這類基于basis的方法存在的問題是,對于basis的學習過濾簡單,或者根本就不學習basis,而是直接生成相應的basis系數。這導致basis可能無法反映數據集中全部時間序列的共性信息。為了解決這個問題,上海交大的這篇文章提出一種基于對比學習預訓練的basis生成方法。
2.核心結構
本文提出的BasisFormer模型的核心包含以下3個組件:
Coef Module:對于每個序列生成各個basis權重
Basis Module:生成basis
Forecast Module:生成預測結果
下面分別介紹一下這些模塊的實現邏輯。
Coef Module:這部分是計算時間序列和basis之間的相關性系數,用來對basis進行融合。整體采用的是基于multi-head attention的計算方法,對于每個時間序列,計算其和各個basis之間的attention,得到attention score。每個head會計算不同的attention score,這個attention score代表時間序列和各個basis之間的相關系數,用來對basis進行加權融合。
Forecast Module:將各個head的權重系數和basis進行加權求和,得到每個head的初始預測結果。將這些結果拼接到一起后,輸入一個多層MLP網絡,得到最終的預測結果。
Basis Module:這個模塊是本文的核心,如何學習一組良好的basis向量。這里的一個核心假設是,希望每個時間序列的basis融合權重,是隨著時間固定不變的,歷史的權重和未來待預測區間的權重是一致的,這樣才能實現基于basis的預測。為了達成這個目標,文中采用對比學習的方式進行basis的學習。具體方法為,對于一個時間序列,將其歷史已知部分和未來待預測部分,分別輸入到Coef Module中,得到每個序列的basis權重,然后通過對比學習讓同一個時間序列的歷史序列權重和未來序列權重相近,隨機負采樣的權重拉遠。在這個過程中,同步訓練basis,讓basis盡可能滿足能夠產生歷史和未來相一致的權重向量。
這種basis的約束,在之前的工作中是沒有引入的,但是其非常重要,決定了basis的有效性。之前看basis的工作,其實就有過類似的疑問,完全沒有約束的情況下,歷史的權重是否能泛華到未來的權重。這篇文章比較好的解決了這個問題。
3.實驗效果
本文的實現效果如下表所示,對比了多元時間序列6個數據集、單變量時間序列6個數據集中,不同預測長度的效果差異,Basisformer在多個數據集上取得了效果提升。
