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