流程與成本優化
進階
流程與成本優化

庫存與叫料預測:先打敗最簡單的方法

用 Python 建立預測基準線、計算誤差與再訂購點。複雜模型必須贏過基準線才值得用,下單由人確認。
1 小時
6 步
免費
編
AI 有解編輯部
最後更新 2026 年 11 月 5 日・CC BY 4.0
用到的工具
Python
pandas
ChatGPT
Claude
很多公司一開始就想用機器學習預測需求,但連「比上個月照抄好多少」都不知道。這篇先建立基準線,你才能判斷 AI 模型有沒有真的幫上忙。
你需要準備
•
至少一到兩年的訂單紀錄,能依週或依月匯總
•
Python,並安裝 pandas:pip install pandas
•
每個料號的前置時間,也就是下單到到貨的時間
進度 0/6
1

整理資料

先做一個料號,存成 orders.csv,欄位是 week 和 qty。常見的資料問題:
•
缺貨期間的銷量會偏低,要標記出來
•
促銷和大單要另外標記
•
沒有訂單的週要補 0,不要讓那一週消失
可以先請 AI 協助清理,方法在〈丟 Excel 給 AI 做分析:清理、圖表、檢查結果〉。
2

建立基準線

保留最後 12 週當考題,只用前面的資料預測:
Python
import numpy as np import pandas as pd df = pd.read_csv("orders.csv", parse_dates=["week"]).sort_values("week") train, test = df.iloc[:-12], df.iloc[-12:] naive = np.repeat(train["qty"].iloc[-1], 12) # 用最後一週當預測 ma = np.repeat(train["qty"].iloc[-8:].mean(), 12) # 用最近 8 週平均 def wape(actual, pred): return np.abs(actual - pred).sum() / actual.sum() print("最後一週", round(wape(test["qty"].values, naive), 3)) print("8 週平均", round(wape(test["qty"].values, ma), 3))
WAPE 是總誤差佔總需求的比例,0.1 代表誤差約 10%。時間序列不能隨機切分資料,否則等於偷看未來。
3

算再訂購點

預測再準也有誤差,所以需要安全庫存。下面的公式假設需求接近常態分布,1.65 大約對應 95% 的服務水準:
Python
lead_weeks = 3 std = train["qty"].iloc[-26:].std() safety = 1.65 * std * np.sqrt(lead_weeks) reorder = train["qty"].iloc[-8:].mean() * lead_weeks + safety print("安全庫存", round(safety), "再訂購點", round(reorder))
庫存低於再訂購點時就該叫料。服務水準越高,庫存越多,資金壓力也越大,這是經營決定,不是技術問題。
4

有基準線再試模型

可以請 AI 寫更進階的方法,但要用同一份考題比較:
文字
這是每週需求資料。請用季節性模型做預測, 一樣保留最後 12 週當驗證,輸出 WAPE, 並和 8 週平均的結果比較。 請用滾動驗證檢查不同時間段的表現,不要只看一次。
贏不過基準線的模型就不要用。模型越複雜,維護成本也越高。
5

分類處理

不是每個料號都值得預測:
•
高金額、需求穩定:值得預測與細緻管理
•
需求偶爾才出現:用安全庫存或接單再買
•
新品:沒有歷史資料,參考相似商品和人的判斷
6

把結果交給採購

每週輸出一份建議表:料號、目前庫存、預測需求、建議叫料量、原因。採購人員有權修改,並記錄修改的原因,這些資訊可以回頭改善模型。
注意
下單由人確認,不要讓模型自動發採購單。上游斷料、促銷、客戶突然改單,都是歷史資料看不到的事。
你照著做成功了嗎?
成為第一個回報的人。你的回報會決定攻略排序與作者分潤。
下一步
•
想計算投資是否划算,看〈老闆版:工廠導入 AI 的五步決策〉。
•
想找出品質問題的原因,看〈從製程資料找不良原因:相關不等於因果〉。
收錄在學習路線
廣告版位
想讓正在用 AI 的人看到你的產品?了解廣告合作
問與答
卡住的地方、補充的做法都可以留在這裡
還沒有人留言。
更多「流程與成本優化」攻略