跳到主要內容

發表文章

目前顯示的是 2月, 2022的文章

時間序列|淺談 Theta model 其二

前 一篇的 Theta 模型(以下通稱「Theta」為該模型的方法論本身)介紹文章當中,筆者主要提到的是 Python 程式語言的統計分析工具 statsmodels 當中所呈現的 ThetaModel (以下通稱「ThetaModel」為 statsmodels 當中實作 Theta 模型的程式物件)。而在本系列的第二篇文章,將提到 Theta 的相關軼事,以及另外一個基於 Python 程式語言的時間序列預測整合工具 Darts當中所呈現的 FourTheta (以下通稱「FourTheta」為 Darts 當中實作 Theta 的模型程式物件)。 # Theta 的應用與事蹟 綜觀上一篇文章的內容,Theta 模型設計看似簡單且沒什麼高深的數學理論,但正因為其設計概念簡單且具預測結果具有高度可解釋性,也因此,在一些十分重視 input 與 output 因果關聯的時間序列預測應用當中(例如: 製造業的產銷計劃 ),相較於一些廣義的機器學習、深度學習的時間序列預測演算法,還要更加可靠。實際上,Theta 模型最早被提出的時候,就已在現今知名的時間序列預測建模競賽「 MOFC - M Competition 」的第三屆競賽,也就是在 M3 Competition 當中,有非常優異的表現。 這系列的競賽會讓參賽者(即各方高手提出來的時間序列預測模型)使用多條不同領域、不同類型、不同時間顆粒度的序列資料來進行預測建模,並以多種預測準確度評鑑指標,綜合比較參賽方法的預測成效。也由於在 M3 Competition 大放異彩,包含之後的 M4 Competition ,也將 Theta 作為 benchmark 的模型之一,與 ARIMA 、 ETS 等經典模型具有等同的份量。雖然其在M4 Competition 的預測準確表現不再獨占鰲頭,但是在各種自動化、智慧型預測演算法蓬勃發展的現代,也獲得不俗的表現。尤其,若把運算的時間與軟硬體資源成本納入綜合評鑑指標的話,會發現 Theta 模型根本就是個高 CP 值的選擇。 上表為  M4 Competition 當中各模型的預測成效比較的整理表格之一 # Theta 的改良與拓展 作為曾經風光一時的預測模型標竿,有一些相關的改良、拓展模型,也都是很正常的。實際上,ThetaModel 所呈現的 Theta 模型,本

時間序列|淺談 Theta model 其一

本文所要介紹的主要是時間序列預測模型 Theta(以下通稱「Theta」為該模型的方法論本身),以及 Python 程式語言的統計分析工具 statsmodels 當中所呈現的 ThetaModel (以下通稱「ThetaModel」為 statsmodels 當中實作 Theta 模型的程式物件)。模型的名稱 Theta 指的就是希臘字母 θ 。 由於相關內容繁多,筆者將分成兩篇文章來介紹 Theta。  # Why Theta?  時間序列的預測模型百百款,為什麼要專門挑 Theta 來介紹?起初,我是由於工作的因素,要找個能夠用於需求預測建模的基礎方法,才因此意外認識了這個模型。而當我在網路上尋找的相關參考資料,幾乎找不到中文(無論繁體或簡體)的參考資源。但由於該模型的理論設計有很好的可解釋性、運算流程簡單快速,所以才決定,自己來寫一篇關於 Theta 模型的中文介紹文章。   # ThetaModel 的特色?  粗暴地來說,ThetaModel 其實就是用一條近似於原始資料配適出來的簡單線性迴歸直線、以及一條水平直線,劃定預測值可能的發生範圍(可以用兩條線之夾角的概念來理解),而ThetaModel 的預測值則是根據使用者給定的權重參數 theta,來決定預測結果的發散方向。實際上,ThetaModel 當然不是只有表面上看起來這麼簡單而已。statsmodels 採用了以下三篇 Theta 的論文來構成其 ThetaModel,並以下方截圖所示的公式,來產生其預測值。 Assimakopoulos, V., & Nikolopoulos, K. (2000). The theta model: a decomposition approach to forecasting. International Journal of Forecasting, 16(4), 521-530. Hyndman, R. J., & Billah, B. (2001). Unmasking the Theta method. International Journal of Forecasting, 19(2), 287-290. Fioruci, J. A., Pellegrini, T. R., Louzada, F., & Petropou

OR|作業研究與系統模擬

由於工作的因素, 需要對公司內部其他單位,進行作業研究(Operation Research,以下簡稱 OR)相關技術的教育訓練與應用推廣。過去,我就寫了兩篇關於 OR 的簡介文章存放於這個部落格當中: OR | 作業研究與資料科學 其一 OR | 作業研究與資料科學 其二 OR 的專門技術包山包海,又以所謂的「數學規劃」( Mathematical Programming )最具代表性。而談到數學規劃,就不得不談到另外一門重要的分支技術:「系統模擬」( Simulation )。數年前我還在碩士班修讀【系統模擬】這門課的時候,也寫過一篇簡介文章。 二轉人生 | 淺談系統模擬 #  在台灣的 Simulation 課程 在台灣國內的工業工程、運輸管理、土木工程等等科系的大學部課程當中,一般都會有完整上下兩個學期的 OR 必修課程。大學部的學生們通常會在這個時候認識數學規劃。而對於大部分的授課教師而言,能夠在一個學年當中讓學生們認識並熟練主要的數學規劃方法,通常已經是很了不起的成就了。 但是 Simulation 的部份,即便有在 OR 的教科書當中出現,通常也會是被放在非常後面的章節,一般的大學部 OR 課程根本教不到那麼後面去。所以,Simulation 通常會是在大學部的高年級、或者碩博班的選修課當中獨立開一門課出來。 # Simulation 的建模構成 在一個 Simulation 的模型當中,通常由以下理論方法構成:機率與統計、實驗設計、隨機過程、賽局理論、等候理論、排程理論、動態規劃、邏輯引擎、線性與非線性方程…… 如果你是一名學過 OR 的大學生,應當多少聽過上述這些名詞。實際上,一個數學最佳化的模型,通常就是上述某幾項的理論綜合應用。從基礎理論的構成要素來看,數學規劃與 Simulation 根本是親兄弟姊妹的概念。 # 系統模擬與它相似的朋友們 而實務上,系統模擬與數學規劃經常是相輔相成的存在,只是透過不同的途徑,來達成決策輔助的目的,但是對於非相關背景的一般人而言,通常很容易把這兩者搞混,尤其幾個相關詞彙: Optimization、Simulation、Systems modeling、Scientific modelling、Mathematical model、Computational modeling……  你不覺得他們根本就有個 87