跳到主要內容

發表文章

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

時間序列|淺談供應鏈需求預測 其六:階層預測與群組預測

本系列的前五篇文章談到的,幾乎都是單一變數的時間序列資料。也就是假設每一樣產品的需求為獨立,彼此互不影響,每一項產品的預期需求完全分開來預測。但在業界實務當中,我們手頭上的時間序列資料,可能有群組與階層的隸屬關聯,而本系列的最後一篇文章,就是要聊聊具有這種結構關係的需求預測難題。 # 簡單的群組與階層拆分與整併預測 以筆記型電腦為例,假設某品牌商旗下有兩個不同系列的筆記型電腦(姑且就稱為 A 款與 B 款),假設這兩款都可以依照螢幕尺寸再分成 14 吋與 15 吋好了,該品牌的 A 與 B 兩款筆電都銷售全球(就粗略分成亞太、北美洲、歐洲、與新興市場四大地區好了)。有了上述的類別標籤,我們就能依照這些標籤,將過往的銷售數據進行群組與階層的拆分或整併。而在進行需求預測時,無論我們是「由下而上」(Button-up)先將切到最細層級的個別序列資料(例如 A 款的 14 吋筆電在亞太地區的未來預期需求)分別預測之後,再逐層往上堆疊;抑或是「由上而下」(Top-down)先使用彙總到最頂層的序列資料進行預測之後,再依照特定比例拆分到底下各層,這種兩分預測流程,從技術面而言都說得通,相關細節可以參考 該電子書的章節頁面 ,裡頭有十分詳盡的觀念談。 # 同時預測多條時間序列 若我們採行的是「由下而上」的預測方式,且假設我們明確知道同階層或同群組的序列資料當中,彼此具有一定程度的關聯性存在。這種時候就可以使用 向量自迴歸模型 (Vector Autoregression),針對同一階層或者同一群組的時間序列資料來進行預測。然而,就跟其他基於統計學的時間序列預測模型一樣,該方法的使用上要留意一些的限制與假設前提,否則用起來的預測成效也不會好到哪裡去,甚至根本用不起來。 例如最簡單的:當你一次把太多條時間序列綁成一個龐大的矩陣來求解……那麼求解的複雜度指數上升,甚至模型會因為無法收斂而直接跳 Error 給你看。又或者是,你綁在一起預測的這些時間序列壓根沒有統計上的關聯性,那麼為了圖方便性而向量自迴歸模型來做預測的結果,就跟你拿一串隨機序列的資料說要用 ARIMA 模型來準確預測下一步,是一樣的概念。 # 群組與階層的陷阱 延續上個段落所提到的,既然都特地寫了這篇文章,當然不是請讀者們把上面那本電子書的章節看過而已。雖然在業界當中的許多產品需求資料,都能夠依照上述方式來進行群組與階層

時間序列|淺談供應鏈需求預測 其五:中長期預測的挑戰

  筆者在本系列的 上一篇文章 提到,產品生命週期曲線的重要功能之一,是作為中長期需求走勢觀測的基準線。對於許多公司的營運管理、決策規劃單位而言,藉由未來半年甚至一整年的需求預測結果,來制定相對應的中長期營運計畫,是十分常見的事情,但這與中長期預測的難易是兩碼子事。固然我們能參考產品生命週期,來抓出個大概,但實務上,仍需搭配其他輔助方法與資訊,才能讓中長期的預測結果具有參考價值。而這篇文章就是要來分享筆者實際在 3C 電子代工廠建構中長期需求預測模型的相關作法。 1. 為歷史趨勢加掛衰退係數 方法 1. 就是先從歷史資料當中抓出一條筆直的趨勢線,然後針對未來各期的趨勢值,乘上一組衰退係數。例如:我們要產出的是未來半年的預測值,最小的時間顆粒度是 by week(也就是總共要產出未來 26 週的預測值),並且我們假設採用最簡單的線性衰退函數,那麼我們就在這條趨勢線上的未來第一週的趨勢值乘上 26/26;第二週的趨勢值乘上 25/26,依此類推,到了第二十六週的趨勢值則乘上 1/26。藉由該調整方法,讓「根據歷史資料而產生出來的趨勢線」的影響比例,隨著距今時間拉長而降低。 該作法便是假設「根據歷史資料而產生出來的趨勢線」,對時間上距今越近的預測值越管用。若時間上距今越遙遠,那麼參考性理當會越來越低 。 至於這個衰退係數一定要線性的嗎?我能不能用指數衰退?對數衰退?或者其他非線性的衰退方式?我一定要對全部的預測值都乘上衰退係數嗎?能不能在未來的第 N 期的預測值才開始乘上這組衰退係數?筆者的看法是,採用全段未來趨堅的線性衰退,當然是最簡單的作法。但若您有足夠的時間進行相關比較實驗,仔細瞭解手頭上的資料樣貌、以及自己所面臨的預測情境後,再來決定要採用哪種比例衰退方式,一定不會錯。 而讀者們一定還會再問,照上述說法,距今最遙遠那一期的調整後趨勢值,不就一定會很小嗎?沒錯,如果你的最終預測結果,就真的只有這一條「根據歷史資料產生出來的趨勢線」,沒有再加上其他東西或者其他調整程序了,那麼採用這種比例衰退方法,自然會讓越遙遠的未來預測值看起來小得不合理。所以這時候,就要跟筆者在上述提到的方法 2. 來相互搭配。 2. 採用不只一種的趨勢線進行比例調和 方法 2. 的概念也十分容易理解,就是我透過混合不只一條的趨勢線,來產生未來的趨勢參考線。而需要特別留意的是, 每一條趨勢線的資料來

程式 DIY|for 時間序列預測的小工具

IT 工程師的圈子內有個俚語,大意是:「如果已經有人把輪子造出來了,那何必再自己造一次輪子?」,輪子指的即是工具。先撇開程式運作效率以及彈性不談,如果過去已經有人把我們要的功能給寫出來了,且這段程式碼我們也能夠正常取得的化,那我們何必在自己寫一次?這對當今廣義的程式開發工作者而言,是很理所當然的事情。但是反過來說,如果今天我們想要的功能,還沒有人寫出來(當然也有可能是我們不夠神通廣大,沒在公開環境當中找到符合我們需求的玩意兒),那麼自己寫一套,也是很正常的,而這個系列的宗旨即是如此。 在這篇文章之前,筆者已經放了四篇不太好消化的領域知識探討文章。所以這一篇我們就換換口味,談談好久沒提到的程式設計。說是這麼說,但本文所要分享的東西,其實都與過去幾篇「時間序列」主題的文章相關,而些程式碼都放在筆者自己建立的 GitHub repository 當中,裏頭包含了三個 .py 檔,每一個 .py 檔主都是一個簡單的自定義函數。以下分別介紹: # series_rescaler 如函數名稱,「序列的正規化」,其功能是將餵進函數的 Python 數值資料list,依照指定的長短期數(int),進行等比例的長度縮放以及將原始 list 的各期數值給正規化,其正規化的 list 各期數值加總為 1。這項功能要應用於【淺談供應鏈需求預測】的第四篇文章「 產品生命週期 」的相關應用當中。在比較不同長度以及總和數量不同的序列資料,勢必比較基準也得一致才行,而這道函數的功能便是執行了這項前處理功能。 讀著們會好奇,正規化?那麼我能將原本較長的序列資料縮短、也能將原本較短的序列資料拉長嗎?當然,這道函數的功能變是如此,它的原理就是將原本各期的數值資料進行「加總為 1 的正規化處理」後,再依照新的指定期數長短進行等比例的劃分,再依序塞到對應的新位置(即正規化後的新的 list 的 item 順序)當中。而由於前面的步驟已經先經過了「加總為 1 的正規化處理」,所以縮放之後的序列資料,也保有原本的數量比例分佈。惟須留意的是,由於縮放後的各期數字是以迴圈逐項計算的,由於浮點數計算的因素,有可能使縮放後的序列資料加總不完全等於 1,可能有個正負 0.001 之類的浮點數運算差異。如果是非常在乎精準度的使用者,請務必將縮放後的序列資料再檢查一次加總是否剛好為 1。 # sim_calculator

時間序列|淺談供應鏈需求預測 其四:產品生命週期

前一篇文章 當中,我們從殘差分析(Residual Analysis)來瞭解離群值(Outlier)、異常值(Anomaly)、以及事件(Event)之間的關聯與差異,並談如何透過迴歸分析以及 Judgmental forecasting 的方法,來處理需求預測當中的事件影響因素。而既然提到了Judgmental forecasting,我們就在這篇文章談談它的一個特殊支線:「 產品生命週期 」 (Product Life Cycle,PLC)。 # Why Product Life Cycle? 為什麼要特別提到產品生命週期?我們都知道,現在的3C電子產品,大概 1~2 年會改版一次,假設某3C電子產品零售門市對於某款熱銷商品大量進貨,但眼看下一代的產品就要上市了,而門市還有一堆貨既有款式的庫存,這些商品就很容易在日後變成死庫存,資金無法變現。要不就是必須要降價拋售,使門市的獲益減少。而若門市的營運主管,在採購這批商品之際,便考量到的其每一代的產品生命週期(包含:相同品牌相同系列產品的次世代產品、以及相同價格代但是不同品牌的替代商品),那麼就有機會大大降低上述的營運風險。 上述案例是以供應鏈最末端的零售門市來看。假若是站在供應鏈中游的代工廠來看,因為不同世代產品的零件用料很可能不同, BOM 也會跟著不同,這就攸關到工廠的產能規劃、物料管控、採購管理等等問題。若是再往供應鏈中上游的電子零組件供應商、或者上游的原物料供應商,其考量到的就可能是不同世代的製程技術問題,例如一樣是  PCB ,新舊製程的生產時間、機台設備、相關原料成本、對應的目標客群可能都不同。若對於中下游客戶端的產品生命週期毫無概念,一樣會影響到工廠的生產排程以及成本相關問題。 若我們再往上游追溯,從產品設計階段來看,新一代產品該採用哪種新零件?中下游的原料供應以及代工廠產能是否跟得上?是否有必要再為同系列產品推出次世代款式?還是要開發新的系列?這些都是供應鏈需求預測與產品生命週期息息相關的議題。 # PLC在產銷規劃的應用 當然,讀者們可能會說,現在的3C電子產品門市,除非是真的非常熱銷且甫上市的款式,例如:新一代的 iPhone,門市才有可能做庫存,否則現在哪來的門市還呆呆的作做庫存的?當然,這是非常合理的質疑。但品牌商的通路管理、供應鏈上下游節點的採購與庫存管理等等,實質上都是可以再延伸探討