深度自回歸模型(TensorFlow 2.0) | 翻譯徵文 | 雷鋒字幕組
本文為雷鋒字幕組「觸摸世界前沿科技 | 翻譯徵文 」活動收錄稿件
數據科學家從事的大多數與業務相關的時間序列,都主要在處理非連續的或離散的,基於時間的過程。在業務上,了解或能夠量化時間序列將來何時會達到高峰或低谷可能會對企業很有用。將來的目標是能夠掌握趨勢和周期性模式,並預測大於 1 個樣本的信號。在本文 Tensorflow Formulation 的部分提供了示例代碼的鏈接。
趨勢,周期性和噪音
在大多數與業務相關的應用程序中,時間序列的平均值和方差隨時間的變化是非恆定的,或者可以說它們是非平穩的。這與用於電路,音頻工程和通信系統分析的固定信號和系統形成對比。平均值的變化方向指示時間序列的趨勢。噪聲的變化可能是某些隨機過程的函數。噪聲可能會隨時間增加或減少。
對於可捕獲的周期性的或重複性的模式存在時間粒度的限制。在數字信號處理中,奈奎斯特速率是捕獲以周期 N 重複出現的碼型所需的最小採樣周期。從本質上講,採樣率必須小於重複模式的一個周期的一半。 例如,假設數據中有一個功能可以衡量每 6 小時的銷售數量,那麼可以捕獲的最精細的模式是每 12 小時重複出現一次。
自回歸模型公式
自回歸模型與開環反饋系統 (一種控制系統) 之間存在相似之處。開環控制系統和自回歸模型都取決於模型的先前輸出,不同之處在於自回歸模型可以根據多個滯後的輸入特徵進行預測。
自回歸模型的形式如公式 (1) 所示。 自回歸公式是遞歸的,這意味着下一個值取決於先前值的級聯。使用 f(t) 的一階導數,根據一節泰勒級數逼近,獲取 y(t+1) 在 f(t) 處的近似值。公式 (2) 顯示出了使用一階泰勒級數逼近的 y(t+1) 的估計值。
將一階逼近應用於公式 (3.1) 中的自回歸函數。 在 (3.1) 上使用鏈式規則將得出 (3.2) 。 注意,由於該函數是遞歸的,因此可以繼續應用一階逼近 。
通過將逼近函數 f(t) 替換為每個滯後時間步長的先前時間序列值,可以將 (3.2) 重構為線性模型。 例如,可將 f(t-1) 的值替換為 y(t-1) 。
等式 (4) 中顯示了用於訓練自回歸模型的最終形式。截距為自回歸權重的總和。這使得模型可以趨向於集中趨勢,並且可以隨時間推移進行自適應。
公式中 N 是數據點的數量,T 是滯後特徵的總數,w 表示自回歸權重,y(t-i) 表示滯後時間序列,y』(t+1) 是在 t+1 時的預測值。等式 (5) 中所示的目標函數 L,在參數方面是可微分的,並且可以使用 TensorFlow 進行優化。
多元時間序列也可以通過相同的邏輯來預測。所有時間序列的先前值都用作協變量,以同時預測所有時間序列的下一個值。在這種情況下,截距是輸出節點的自回歸權重的總和。多元公式允許將多個自回歸層堆疊以創建深層的自回歸模型。
澳大利亞墨爾本的每日最低氣溫和降雨量
使用澳大利亞墨爾本的每日最低氣溫和降雨量數據集來建立自回歸預測模型。該數據集包括從 1981 年開始的橫跨 3625 天的溫度和降雨量。雖然有一些缺失值,但是每個序列都對這些值進行了插值處理。對這些序列採用深度自回歸模型同時進行預測。
溫度
下圖顯示了整個時間範圍內墨爾本的溫度。溫度隨時間的變化似乎有着明顯的周期性成分。
降雨量
下圖顯示了整個時間範圍內墨爾本的降雨量序列。每天的降雨量被裁剪為零厘米,這使得應用自回歸模型很難建模。為了使用降雨量,下面的第二個圖中顯示了採用了 60 天的降雨量平均值時的情況。
數據集構建
-
訓練之前首先對溫度和降雨這兩個系列進行了標準化。
-
數據集是建立在為時序中的每次觀測創建 365 個滯後特徵的基礎上。例如,365+1 次觀測值將具有以前的 365*2 個特徵。
-
在訓練數據集中排除了前 365 個觀察值,以避免丟失值。
-
這兩個時間序列的最近 1,130 個(或 3 年)觀測值被用作檢驗測試預測效果的保留集。
TensorFlow 公式
下面的代碼塊顯示了上面公式化自回歸模型的 TensorFlow 代碼。在這裡可以找到對應的代碼示例。
該模型輸入大小為 (N,M),其中 N 是數據點的數量,M 對應於降雨和溫度的 730 個滯後特徵。用於自回歸激活的隱藏層數量為 30。該模型經過隨機梯度下降,均方誤差損失,Adam 優化器,提前停止和較小的學習率進行訓練。儘管採用了提前停止,但由於自回歸模型產生的內容已經進行固有正則化處理,因此可能沒有必要。
雪球式自回歸時間序列
可以將先前的預測結果,回滾到自回歸模型中來創建預測。即使在實際時間序列穩定的情況下,滾雪球時間序列的方差也可能會隨時間增加或變得不穩定。擬合度較差的模型可能會隨着時間變化變得不穩定或爆炸。如果預測的滾雪球時間序列始終偏向實際趨勢之上或之下,則可能發生不穩定。 在模型公式中,截距應設置為隨時間變化提供更多的穩定性和適應性。
為了評估預測穩定性,對模型進行了 100 次不同的、隨機的訓練驗證集拆分的訓練,並創建了 100 個模型。 為每個模型生成了滾雪球的時間序列。 期望值和標準差分別用於創建預測和置信區間。
溫度預測結果
降雨量 (60 天滾動平均值) 預測結果
在上面的圖中,實際的觀測值,訓練預測和滾雪球的預測分別由綠色,藍色和橙色系列表示。溫度的訓練預測值和滾雪球的預測值似乎捕獲了全局周期性模式。但是,跨時間的變化沒有被 100 個預測的變化所捕獲。降雨數據 (60 天滾動平均值) 的預測值似乎在訓練數據集上過擬合。過擬合可能是由於使用了滾動平均值造成。該系列的趨勢在陷入周期性模式之前,已準確地捕獲了約 1 年的預測值。大約 1 年後,無法準確捕捉到該趨勢。
結論
自回歸函數的一階逼近用於制定目標函數和模型公式。發現自動回歸激活層的截距為輸入權重的總和。使用 TensorFlow 2.0 通過堆疊自回歸層來創建深度自回歸模型。該模型用於同時預測澳大利亞墨爾本的溫度和降雨量。自回歸公式不適用於裁剪的時間序列,因此需要滾動平均變換來預測降雨。預測是通過將先前的預測回滾到模型中來創建的。該模型近似捕獲了較短時間的趨勢和周期性模式。
FB Prophet 預測比較
該模型與 FB Prophet 對比情況如何?Prophet 是具有許多可調參數的完整的時間序列預測套件。為了進行比較,我使用了快速入門教程中的即用型模型。
Prophet 似乎使用了周期圖模型。它挑選出最高的周期性頻率 f,並將它們包裝在正弦和餘弦函數中以創建特徵集,即 sin(f) 和 cos(f) 。該軟件包似乎還使用了邏輯回歸模型的輸出。邏輯回歸模型可預測該序列是上升還是下降。該軟件包似乎支持在預測中添加其他變量,但似乎還不支持同時進行多變量預測。 比較已添加到代碼示例中。
溫度預測結果
降雨量 (60 天滾動平均值) 預測結果
在上面的圖中,實際的觀測值,訓練預測和滾雪球的預測分別由綠色,藍色和橙色系列表示。溫度的訓練預測值和滾雪球的預測值似乎捕獲了全局周期性模式。跨時間的變化被 100 個預測的變化所捕獲。溫度的趨勢似乎呈上升趨勢,但可能並非實際趨勢。降雨數據 (60 天滾動平均值) 的預測值似乎捕獲了一個通用的年度周期性模式。在整個驗證過程中,模式都是一致的。降雨的趨勢似乎呈下降趨勢,但也可能不是實際趨勢。
原文鏈接
選題來自雷鋒字幕組提供的選題
本文為雷鋒字幕組「觸摸世界前沿科技 | 翻譯徵文 」活動收錄稿件