Lantern

Meridian:從部門檔案到有負責人的行動。

這是以 Meridian Components 打造的案例。Meridian Components 是一家虛構的製造商,在越南有四座工廠。下方每個 SAS 畫面都來自我們打造時所用的 Viya 環境,擷取於 2026 年 10 月。每個數字都由該環境產生。

個部門檔案作為起點
19個部門檔案作為起點
列資料由 40 條清理規則修正
28,098列資料由 40 條清理規則修正
個缺貨模型參與比較
7個缺貨模型參與比較
項行動,每項都經已發布的決策確認
306項行動,每項都經已發布的決策確認

四座工廠,每個部門各有一套真相。

Meridian 以各部門的活頁簿管理四座工廠和四座倉庫:依班別的生產紀錄、採購追蹤表、庫存盤點和標準成本表。每個部門都保留自己的一套數字,所以每週會議一開始總是在核對數字,而不是據此採取行動。

我們沒有要求任何人放棄自己的檔案。SAS 依原樣讀入這些檔案,專案分為五個階段,每個階段是一個程式資料夾,每支程式旁邊都有一個流程。

決策
依原樣讀入檔案,所有修正都在 SAS 中完成,用人人都看得懂的程式碼。
原因
大家繼續使用自己信任的工具,每一處修正都看得見、可重複,而不是藏在某個人的副本裡。
建構工具
SAS StudioSAS Content
SAS Studio 中的 GDA Meridian 資料夾,顯示 05 Decide and Act 的程式與流程
圖 1. SAS Content 中的專案:每個階段一個資料夾(Collect、Clean、Insights、Visualize、Decide and Act),每支程式旁邊都有一個流程。檢視原尺寸

只清理一次,用可稽核的規則。

19 個檔案變成 23 張原始資料表、12 張清理後的資料表,以及 23 張可直接用於決策的 gold 資料表。40 條清理規則修正了 28,098 列:以文字輸入的金額、三種格式的日期、多種寫法的班別代碼。每條規則都會在資料品質日誌中寫入一行。

每支程式都有流程,因此 SAS Lineage 能從任何一張資料表畫出路徑:往回追溯到產生它的程式,往後延伸到讀取它的報表。

決策
一條規則、一行日誌,每支程式都有流程。
原因
當主管問某個數字從哪裡來,答案是在 SAS Lineage 裡點一下,而不是開一場會。
建構工具
SAS Studio 流程DATA step 與 PROC SQLSAS Lineage
GOLD_ACTIONS 的 SAS Lineage 圖,含 dec_01 流程與兩份 Visual Analytics 報表
圖 2. GOLD_ACTIONS 的 SAS Lineage:產生它的流程、CAS 中的資料表,以及讀取它的兩份 Visual Analytics 報表。檢視原尺寸

預測缺貨,讓模型互相競爭。

規劃人員的問題很簡單:未來四週內,哪個倉庫的哪項產品會跌破再訂購點?Model Studio 以同一組特徵(庫存相對於再訂購點的水準、在途庫存、近期出貨量、供應商延遲與季節)訓練了七個候選模型,較晚的幾週保留作為測試,不參與訓練。

Forest 在保留的幾週資料上排序表現最好,並以冠軍模型註冊於 Model Manager。梯度提升作為挑戰者,每週以程式碼重新訓練,一旦冠軍模型表現下滑,數字就會顯示出來。

決策
Forest 是冠軍模型;梯度提升保留為挑戰者。
原因
Forest 在從未見過的資料上排序最好;保留一個挑戰者,就能看出冠軍模型是否開始下滑。
建構工具
Model StudioModel Manager
Model Studio 管線,包含缺失值插補、變數選擇、七個模型、一個集成模型與模型比較
圖 3. Model Studio 中的 Pipeline 1:缺失值插補與變數選擇接入各候選模型與一個集成模型,接著進行模型比較。檢視原尺寸
模型比較表,Forest 標示為冠軍模型
圖 4. 在測試分割上的模型比較。標上星號的冠軍模型 Forest 擁有最高的 KS(0.80)與曲線下面積(0.94)。檢視原尺寸
Model Manager 中的專案 Meridian stockout risk,Forest 模型為冠軍模型
圖 5. 冠軍模型存放在 Model Manager 的專案 Meridian stockout risk 中。檢視原尺寸

用業務負責人看得懂的規則做決策。

分數還不是行動。決策 Meridian_next_best_action 先執行冠軍模型,再經過兩個規則集。「選擇行動」(6 條規則)判斷某個庫存位置是否需要補貨、某張採購單是否需要催貨、某項產品是否需要毛利檢討,或某條產線是否需要檢查。「優先順序、負責人與複核」(14 條規則)依涉及金額設定優先順序、選定負責人、設定期限,並決定何時由第二個人複核。

這個決策發布至 SAS Micro Analytic Service,任何能發出網路請求的系統,都能詢問它該做什麼。

決策
把門檻值放在規則集中,而不是程式碼裡。
原因
供應鏈主管不需要開發人員,就能讀懂並修改「供應商在近期 60% 的訂單上延遲時催貨」,而且 Intelligent Decisioning 會為每次修改保留版本。
建構工具
Intelligent DecisioningMicro Analytic Service
決策流程:Start、Forest 模型、規則集「選擇行動」、規則集「優先順序、負責人與複核」、End
圖 6. 決策流程:先是冠軍模型,接著是兩個規則集。發布前已通過驗證。檢視原尺寸
規則集 Meridian 1「選擇行動」,包含 IF、AND、THEN 規則
圖 7. 規則集「選擇行動」:低於再訂購點的庫存位置即為補貨;模型判斷四週內很可能缺貨的庫存位置,則為預警補貨。檢視原尺寸
Intelligent Decisioning 的部署頁面,顯示一個已發布至 microAnalyticService 的決策
圖 8. 已發布至 Micro Analytic Service 目的地,模型包含在決策之中。檢視原尺寸

每週一執行,邏輯始終如一。

排程作業每週一 06:00 執行。它讀回大家在 Lantern 中做出的決策與處理結果,產生本週的候選行動,將每一項送進已發布的決策,草擬訊息,衡量上週的成果,並把結果推送到 Lantern。

批次作業呼叫的,是與其他所有地方相同的已發布決策,因此報表中的行動與畫面上的行動不會互相矛盾。如果無法連上決策服務,作業會停止並保留上週的行動,而不是發布一份空白清單。

  1. 1從 Lantern 讀回決策與處理結果
  2. 2產生候選行動
  3. 3將每個候選送進 Meridian_next_best_action
  4. 4草擬訊息並檢查
  5. 5衡量先前行動之後發生了什麼
  6. 6將行動、成果與缺貨風險推送到 Lantern
決策
由批次作業呼叫已發布的決策,而不是把它的規則複製到程式碼裡。
原因
只有一個地方做決定。改一條規則,所有管道同時生效,不會出現落差。
建構工具
SAS Job ExecutionPROC HTTPMicro Analytic Service
作業如何呼叫已發布的決策
proc http url="&base./microanalyticScore/modules/meridian_next_best_action/steps/execute"
     method="POST" in=_nq out=_na ct="application/json" oauth_bearer=sas_services;
  headers "Accept"="application/json";
run;
摘自每週作業日誌,2026 年 10 月 20 日
NOTE: Lantern decisions read into APP_ACTION_DECISIONS.
NOTE: Lantern resolutions read into APP_ACTION_RESOLUTIONS.
NOTE: Decision service answered all 306 rows (meridian_next_best_action).
ACT REORDER High 55 55 1,994,641,000
ACT EXPEDITE_PO High 47 47 181,319,000
ACT INVESTIGATE_LINE High 12 12 790,203,000
NOTE: Lantern gold_actions: {"rows": 306, "table": "gold_actions", "skipped": []}
NOTE: Lantern gold_stockout_risk: {"rows": 16800, "table": "gold_stockout_risk", "skipped": []}
NOTE: Lantern gold_model_metrics: {"rows": 11, "table": "gold_model_metrics", "skipped": []}

每項行動只有一位負責人,並說明理由。

Lantern 為每項行動指定一位負責人,並說明 SAS 為什麼提出它:觸發的規則、冠軍模型對庫存位置給出的機率,以及選定優先順序、負責人與期限的規則集。負責人去完成工作(致電供應商、檢查產線、下訂單),記錄做了什麼,然後結案。

每個人看到的內容取決於角色。採購人員看到採購單,班長看到自己的產線,並由資料庫逐列強制執行。

決策
負責建構與治理的人使用 Viya 授權席次;所有執行的人使用 Lantern。
原因
數百名第一線人員不需要 Viya 授權,就能依 SAS 的決策採取行動,而他們做出的每個決定,都會在下週一回流到 SAS。
建構工具
LanternPostgreSQL 列層級安全性
Lantern 行動清單,開啟了一項補貨行動,顯示建議的下一步與 SAS 的決策
圖 9. Lantern 中的一項行動:下一步、規則集選定的負責人與期限,以及一句話說明 SAS 為什麼提出它。檢視原尺寸
SAS 如何決策:缺貨模型、規則集「選擇行動」、規則集「優先順序、負責人與複核」
圖 10. 同一項行動的推論過程,逐步呈現,直接取自決策的回應。檢視原尺寸

衡量實際結果,讓模型保持誠實。

作業每週將已處理的行動與後續情況對照:庫存是否用完、採購單是否準時到貨、不良率是否回落。結果會推送到 Lantern,顯示在行動旁邊。

模型也以同樣的方式評判。冠軍模型、挑戰者,以及單純依庫存水準排序的方法,都在同樣的 1,100 列保留資料上評分,其中 138 列在四週內缺貨。

決策
在同樣的資料列上評判每個模型,並與簡單的基準並列比較。
原因
模型唯有勝過單純依庫存水準排序,才值得採用。在風險最高的 300 列中,冠軍模型比基準多捕捉到 13 次缺貨。
建構工具
SAS 程式Visual AnalyticsLantern

同一批保留資料上的缺貨模型

模型AUC風險最高的 300 列中捕捉到的缺貨
Forest,冠軍模型0.939133 / 138
梯度提升,挑戰者0.927129 / 138
僅看庫存水準,基準0.918120 / 138

AUC:0.5 等於擲硬幣,1.0 為完美。由 ins_02 於 2026 年 10 月 20 日計算。

比較 Forest、梯度提升與僅看庫存水準的 Lantern 面板
圖 11. Lantern 中的同一項比較,以及從 Model Studio 到畫面的路徑。檢視原尺寸
SAS Visual Analytics 報表 Meridian Control Tower,頁面名稱為雙語
圖 12. Visual Analytics 中的 Meridian Control Tower,頁面名稱為英文與越南文。檢視原尺寸

決策紀錄

  1. 起點

    依原樣讀入檔案,所有修正都在 SAS 中完成,用人人都看得懂的程式碼。

    SAS Studio, SAS Content

  2. 清理與追溯

    一條規則、一行日誌,每支程式都有流程。

    SAS Studio 流程, DATA step 與 PROC SQL, SAS Lineage

  3. 預測

    Forest 是冠軍模型;梯度提升保留為挑戰者。

    Model Studio, Model Manager

  4. 決策

    把門檻值放在規則集中,而不是程式碼裡。

    Intelligent Decisioning, Micro Analytic Service

  5. 每週執行

    由批次作業呼叫已發布的決策,而不是把它的規則複製到程式碼裡。

    SAS Job Execution, PROC HTTP, Micro Analytic Service

  6. 在 Lantern 中行動

    負責建構與治理的人使用 Viya 授權席次;所有執行的人使用 Lantern。

    Lantern, PostgreSQL 列層級安全性

  7. 衡量

    在同樣的資料列上評判每個模型,並與簡單的基準並列比較。

    SAS 程式, Visual Analytics, Lantern

如何運作

Lantern 讀取 Viya 每週作業發布的資料表,因此工作空間中的每個數字都是真實的 SAS 輸出。上方各部分說明了每個環節是在哪裡建構的。

看看 Lantern 如何運作。

示範以 Meridian 運行,這是一家以真實供應鏈資料集建構的虛構製造商。登入後,像它的團隊一樣處理本週的行動。