前言
最近在研究時間序列的預測,除了上課,也有在Medium上看文章,學到一些知識,除了自己做筆記記錄,也分享給大家。本篇筆記為翻譯統整:Neural Network (MLP) for Time Series Forecasting in Practice—Daniel J. TOTH,這篇Medium上的文章而來,不是我英文好,是ChatGPT好用(XD),那麼就開始吧。
正文
這篇文章首先畫圖觀察資料,發現每年的夏季和冬季、每週的禮拜一、每天的白天和夜晚,有特別的波動。然後建立了一個基於統計的傳統預測時間序列的模型,方便待會兒與新的預測時間模型做結果比較。模型訓練後的一些參考數值如文中第六張圖,記錄下其中數值代表的意義:
- Log Likelihood:對數似然值,簡稱LL,是似然函數(Likelihood Function)取對數後的值,值越大,表示模型對數據的擬合程度越好。Log Likelihood 的值越大,代表模型對數據的解釋能力越強,表示模型的參數更能「解釋」數據,或者說模型生成觀測數據的「可能性」更高(擬合更好)。它用於任何模型(迴歸、時間序列、分類模型等),沒有固定的範圍(可以是正數也可以是負數)。舉例:時間序列模型中,Log Likelihood越大,說明模型可以更準確地描述數據的趨勢、季節性和隨機變動。跟R2有點像,底下比較一下:
- R2:屬於線性迴歸專用的衡量指標,反映解釋變異的比例,範圍是0到1(或者負值到1,根據模型情況)。越大表示模型解釋「變異」的比例越多(也就是模型可以用來解釋目標變數的變化)。它是個比例,衡量數據變異中有多少被模型捕捉到,表示的是模型解釋變量的能力。
- AIC/BIC/HQIC:可以選擇一個看就好,數值越小越好,這指標可以協助算出模型的擬合程度,進一步可以知道模型是否有過擬合的可能。可以先都看AIC指標,如果樣本很大或是參數很多的時候,就可以選擇參考BIC。
- 底下的Prob:就是殘差的P-value,小於0.05通常表示參數顯著(通常以0.05做標準),意思是該變數對模型有顯著影響。例如圖中Ljung-Box Prob(Q) < 0.05表示殘差序列有顯著的自相關性,說明模型未完全捕捉時間序列中的依賴結構。
然後文章強烈建議檢查數據集的自相關性質,於是使用了ACF和PACF。
接著開始建構神經網路模型。因為在這裡整數輸入本質上是類別型特徵,應以類別的方式進行處理。因為使用one-hot encoding會顯著增加特徵數量,所以作者選擇了嵌入(embedding)方法,代價是模型的輸入層將變得更複雜,因為類別特徵會先通過嵌入轉換為向量,然後與浮點輸入結合。
結果模型非常準確。於是作者想要知道是否所有的特徵都對結果有一樣大的貢獻,還是只有一部分特徵對結果的決定性影響較大,作者使用了特徵置換重要性(Permutation Feature Importance)方法。作者逐一置換特徵,重新計算RMSE分數,得出特徵的相對重要性。
作者也提到了,置換特徵重要性方法的一個限制在於它不考慮特徵間的多重共線性,因此可能導致結果不準確,而這裡的特徵卻是從高度自相關的數據集中衍生出來的,而處理這種情況的一種方法是遵循Scikit-learn的建議:
設定一個閾值,並從每個聚類中保留一個特徵。
作者選擇通過訓練僅包含分組特徵的替代模型來突顯置換重要性方法的局限性。結果也同意,這些替代模型的結果與單純的置換特徵重要性分析而未處理多重共線性時的預期有所不同。
最後,模型架構進行了修改,以實現多步預測,預測期間設定為一年,並與一開始的基於統計的傳統狀態空間模型相比較,因為統計的狀態空間模型對全年觀察到的趨勢和季節性影響提供了易於理解的近似值,使得它們相對容易解釋,與我們後來建立的神經網路模型不同。
結果,神經網路模型以-1.912%對比-2.159%佔優,證明透過結合相對簡單的神經網路架構與強大的特徵工程技術,工程師即使在程度尚為初期階段,也能使用準確的預測工具。
參考
- Neural Network (MLP) for Time Series Forecasting in Practice—Daniel J. TOTH
- X Platform的老師們
- ChatGPT
小結
因為埋進人工智慧的學問海裡,而且最近不是吃飯、睡覺,就是在打東東,啊不是啦,是工作,所以沈潛許久沒發文,下次發文是什麼時候我也不確定(XD)。總之,紀錄下我學到的知識,也跟大家分享,繼續趕路,繼續留腳印(XD),週末愉快!