自回歸滯后模型進(jìn)行多變量時(shí)間序列預(yù)測
下圖顯示了關(guān)于不同類型葡萄酒銷量的月度多元時(shí)間序列。每種葡萄酒類型都是時(shí)間序列中的一個(gè)變量。
假設(shè)要預(yù)測其中一個(gè)變量。比如,sparkling wine。如何建立一個(gè)模型來進(jìn)行預(yù)測呢?
一種常見的方法是將該變量其視為單變量時(shí)間序列。這樣就有很多方法可以用來模擬這些系列。比如 ARIMA、指數(shù)平滑或 Facebook 的 Prophet,還有自回歸的機(jī)器學(xué)習(xí)方法也可以使用。
但是其他變量可能包含sparkling wine未來銷售的重要線索??纯聪旅娴南嚓P(guān)矩陣。
可以看到sparkling wine的銷量(第二排)與其他葡萄酒的銷量有相當(dāng)?shù)南嚓P(guān)性。所以在模型中包含這些變量可能是一個(gè)好主意。
本文將介紹可以通過一種稱為自回歸分布滯后(ARDL)的方法來做到這一點(diǎn)。
Auto-Regressive Distributed Lag
ARDL模型采用自回歸。自回歸是大多數(shù)單變量時(shí)間序列模型的基礎(chǔ)。它主要分為兩個(gè)步驟。
首先將(單變量)時(shí)間序列從一個(gè)值序列轉(zhuǎn)換為一個(gè)矩陣。可以用用延時(shí)嵌入法(time delay embedding)來做到這一點(diǎn)。盡管名字很花哨,但這種方法非常簡單。它基于之前的最近值對每個(gè)值進(jìn)行建模。然后建立一個(gè)回歸模型。未來值表示目標(biāo)變量。解釋變量是過去最近的值。
多元時(shí)間序列的思路與此類似,我們可以將其他變量的過去值添加到解釋變量中。這就是了被稱為自回歸分布式滯后方法。分布式滯后的意思指的是使用額外變量的滯后。
現(xiàn)在我們把他們進(jìn)行整合,時(shí)間序列中一個(gè)變量的未來值取決于它自身的滯后值以及其他變量的滯后值。
代碼實(shí)現(xiàn)
多變量時(shí)間序列通常是指許多相關(guān)產(chǎn)品的銷售數(shù)據(jù)。我們這里以葡萄酒銷售時(shí)間序列為例。當(dāng)然ARDL方法也適用于零售以外的其他領(lǐng)域。
轉(zhuǎn)換時(shí)間序列
首先使用下面的腳本轉(zhuǎn)換時(shí)間序列。
將 time_delay_embedding 函數(shù)應(yīng)用于時(shí)間序列中的每個(gè)變量(第 18-22 行)。第 23 行將結(jié)果與我們的數(shù)據(jù)集進(jìn)行合并。
解釋變量 (X) 是每個(gè)變量在每個(gè)時(shí)間步長的最后 12 個(gè)已知值(第 29 行)。以下是它們?nèi)绾尾檎覝?t-1(為簡潔起見省略了其他滯后值):
目標(biāo)變量在第30行中定義。這指的是未來銷售的6個(gè)值:
建立模型
準(zhǔn)備好數(shù)據(jù)之后,就可以構(gòu)建模型了。使用隨機(jī)森林進(jìn)行一個(gè)簡單的訓(xùn)練和測試循環(huán)。
擬合模型之后(第11行),得到了測試集中的預(yù)測(第14行)。該模型的平均絕對誤差為288.13。
滯后參數(shù)的選擇
上面的基線使用每個(gè)變量的 12 個(gè)滯后作為解釋變量。這是在函數(shù) time_delay_embedding 的參數(shù) n_lags 中定義的。那么應(yīng)該如何設(shè)置這個(gè)參數(shù)的值呢?
很難先驗(yàn)地說應(yīng)該包括多少值,因?yàn)?這取決于輸入數(shù)據(jù)和特定變量。
解決這個(gè)問題的一種簡單方法是使用特征選擇。從相當(dāng)數(shù)量的值開始,然后根據(jù)重要性評(píng)分或預(yù)測性能來修改這個(gè)數(shù)字,或者直接使用GridSearch進(jìn)行超參數(shù)的搜索。
我們這里將簡單的演示一個(gè)判斷的過程:根據(jù)隨機(jī)森林的重要性得分選擇前 10 個(gè)特征。
前10個(gè)特征比原始預(yù)測顯示出更好的預(yù)測性能。以下是這些功能的重要性:
目標(biāo)變量(Sparkling)的滯后是最重要的。但是其他變量的一些滯后也是相關(guān)的。
ARDL 的擴(kuò)展
多個(gè)目標(biāo)變量預(yù)測,目前為止,我們都在預(yù)測單個(gè)變量(sparkling wine)。如果我們想要同時(shí)預(yù)測幾個(gè)變量呢?
這種方法被稱為:向量自回歸 (VAR)
就像在 ARDL 中一樣,每個(gè)變量都是根據(jù)其滯后和其他變量的滯后建模的。當(dāng)想要預(yù)測多個(gè)變量而不僅僅是一個(gè)變量時(shí),將使用 VAR。
與全局預(yù)測模型的關(guān)系
值得注意的是,ARDL并不等同于全局預(yù)測模型(Global Forecasting Models)。
在ARDL的前提下,每個(gè)變量的信息被添加到解釋變量中。變量的數(shù)量通常很少,且大小相同。
全局預(yù)測模型匯集了許多時(shí)間序列的歷史觀測結(jié)果。模型通過這些所有觀察結(jié)果進(jìn)行建模。每一個(gè)新的時(shí)間序列都是作為新的觀察結(jié)果加入到數(shù)據(jù)中。全局預(yù)測模型通常涉及多達(dá)數(shù)千個(gè)時(shí)間序列量級(jí)也很大。
總結(jié)
本文的主要內(nèi)容如下:多變量時(shí)間序列包含兩個(gè)或多個(gè)變量;ARDL 方法可用于多變量時(shí)間序列的監(jiān)督學(xué)習(xí);使用特征選擇策略優(yōu)化滯后數(shù)。如果要預(yù)測多個(gè)變量,可以使用 VAR 方法。
最后本文的數(shù)據(jù)集在這里:
https://rdrr.io/cran/Rssa/man/AustralianWine.html