Lantern

Meridian:部門ファイルから、担当者のいるアクションへ。

ベトナムに4つの工場を持つ架空のメーカー、Meridian Components を題材にした構築事例です。以下の SAS 画面はすべて、構築に使った Viya 環境で2026年10月に取得したものです。数値もすべて、その環境が出したものです。

出発点となった部門ファイル
19出発点となった部門ファイル
40のクレンジングルールで修正した行
28,09840のクレンジングルールで修正した行
比較した欠品モデル
7比較した欠品モデル
公開したデシジョンが1件ずつ確認したアクション
306公開したデシジョンが1件ずつ確認したアクション

4つの工場、部門の数だけある「正しい数字」。

Meridian は4つの工場と4つの倉庫を、部門ごとのワークブックで回しています。シフト別の生産実績、購買の管理表、在庫の棚卸し、標準原価表です。部門ごとに自分たちの数字を持っていたため、週次会議は数字をもとに動くのではなく、数字の突き合わせから始まっていました。

誰にもファイルを手放すようには求めませんでした。SAS はファイルをそのまま読み込み、プロジェクトは5つのステージで構成されます。各ステージはプログラムのフォルダーで、すべてのプログラムの横にフローがあります。

判断
ファイルはそのまま読み込み、修正はすべて SAS の中で、誰でも読めるコードで行う。
理由
使い慣れたツールはそのまま使えます。修正はすべて目に見えて再現でき、誰かの手元のコピーに埋もれることがありません。
使用ツール
SAS StudioSAS Content
05 Decide and Act のプログラムとフローを含む GDA Meridian フォルダーを表示した SAS Studio
図 1. SAS Content 上のプロジェクト。ステージごとにフォルダーがあり(Collect、Clean、Insights、Visualize、Decide and Act)、すべてのプログラムの横にフローがあります。原寸で開く

クレンジングは一度だけ、監査できるルールで。

19のファイルは、23の生テーブル、12のクレンジング済みテーブル、判断にそのまま使える23のゴールドテーブルになりました。40のクレンジングルールが28,098行を修正しました。テキストで入力された金額、3種類の形式が混在する日付、何通りもの書き方があるシフトコードなどです。ルールはそれぞれ、データ品質ログに1行ずつ記録します。

すべてのプログラムにフローがあるため、SAS Lineage はどのテーブルについても、それを作ったプログラムまでさかのぼり、それを読むレポートまでたどる経路を描けます。

判断
ルール1つにログ1行、そしてすべてのプログラムにフローを。
理由
ある数字の出どころを管理者に聞かれたら、答えは会議ではなく SAS Lineage でのワンクリックです。
使用ツール
SAS Studio のフローDATA step と PROC SQLSAS Lineage
dec_01 フローと2つの Visual Analytics レポートを含む GOLD_ACTIONS の SAS Lineage グラフ
図 2. GOLD_ACTIONS の SAS Lineage。これを作るフロー、CAS 上のテーブル、そしてこれを読む2つの Visual Analytics レポート。原寸で開く

欠品を予測し、モデル同士を競わせる。

計画担当者の問いはシンプルです。どの倉庫のどの製品が、今後4週間で発注点を下回るのか。Model Studio は同じ特徴量(発注点に対する在庫、輸送中の在庫、直近の出荷、サプライヤーの遅延、季節)で7つの候補モデルを学習し、後半の週はテスト用に学習から除外しました。

学習から除外した週で最もランキング性能が高かった Forest を、チャンピオンとして Model Manager に登録しました。勾配ブースティングはチャレンジャーとして毎週コードで再学習されるため、チャンピオンの性能が落ちれば数字に表れます。

判断
Forest をチャンピオンとし、勾配ブースティングをチャレンジャーとして残す。
理由
Forest は一度も見ていないデータで最も良いランキングを示しました。チャレンジャーを残しておけば、チャンピオンの性能が落ち始めていないかがわかります。
使用ツール
Model StudioModel Manager
欠損値補完、変数選択、7つのモデル、アンサンブル、モデル比較からなる Model Studio のパイプライン
図 3. Model Studio の Pipeline 1。欠損値補完と変数選択の結果が候補モデルとアンサンブルに渡り、最後にモデルを比較します。原寸で開く
Forest がチャンピオンとして示されたモデル比較表
図 4. テスト用パーティションでのモデル比較。チャンピオンとして星印の付いた Forest が、KS(0.80)と曲線下面積(0.94)で最も高い値です。原寸で開く
Forest モデルをチャンピオンとする Model Manager のプロジェクト Meridian stockout risk
図 5. チャンピオンは Model Manager のプロジェクト Meridian stockout risk で管理しています。原寸で開く

業務の責任者が読めるルールで判断する。

スコアはまだアクションではありません。デシジョン Meridian_next_best_action はチャンピオンモデルを実行し、続いて2つのルールセットを通します。「アクションの選択」(6ルール)は、在庫ポジションに再発注が必要か、発注書の納期督促が必要か、製品に利益率の見直しが必要か、ラインの確認が必要かを決めます。「優先度・担当・レビュー」(14ルール)は、影響額に応じて優先度を設定し、担当者を選び、期限を決め、いつ2人目が確認するかを判断します。

デシジョンは SAS Micro Analytic Service に公開されるため、Web リクエストを送れるものなら何でも、何をすべきかを問い合わせられます。

判断
しきい値はプログラムのコードではなく、ルールセットに置く。
理由
サプライチェーンの責任者は、「直近の注文の60%でサプライヤーが遅れたら納期督促」を開発者なしで読み、変更できます。Intelligent Decisioning はすべての変更をバージョン管理します。
使用ツール
Intelligent DecisioningMicro Analytic Service
デシジョンフロー:Start、Forest モデル、ルールセット「アクションの選択」、ルールセット「優先度・担当・レビュー」、End
図 6. デシジョンフロー。チャンピオンモデルの後に2つのルールセット。公開前に検証済みです。原寸で開く
IF、AND、THEN のルールが並ぶルールセット Meridian 1「アクションの選択」
図 7. ルールセット「アクションの選択」。発注点を下回る在庫ポジションは再発注、モデルが4週間以内に欠品する可能性が高いと評価したものは早期警戒の再発注になります。原寸で開く
microAnalyticService に公開された1件のデシジョンを示す Intelligent Decisioning のデプロイメント画面
図 8. Micro Analytic Service の公開先に公開済み。モデルはデシジョンの中に含まれています。原寸で開く

毎週月曜に、同じロジックで実行する。

スケジュールされたジョブが毎週月曜06:00に動きます。Lantern で人が判断し解決した内容を読み戻し、今週の候補アクションを作り、それぞれを公開済みのデシジョンに通し、メッセージを下書きし、先週の結果を測定して、結果を Lantern に送ります。

バッチジョブもほかのすべてと同じ公開済みのデシジョンを呼び出すため、レポート上のアクションと画面上のアクションが食い違うことはありません。デシジョンサービスに接続できない場合、ジョブは停止し、空のリストを公開する代わりに先週のアクションを残します。

  1. 1Lantern から判断と解決内容を読み戻す
  2. 2候補アクションを作る
  3. 3すべての候補を Meridian_next_best_action に通す
  4. 4メッセージを下書きして確認する
  5. 5過去のアクションの後に何が起きたかを測定する
  6. 6アクション、結果、欠品リスクを Lantern に送る
判断
ルールをコードにコピーせず、バッチジョブから公開済みのデシジョンを呼び出す。
理由
判断する場所は1か所だけです。ルールを1つ変えればすべてのチャネルが一度に変わり、ずれが生じません。
使用ツール
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": []}

すべてのアクションに担当者を1人、そして根拠を示す。

Lantern は各アクションに担当者を1人割り当て、SAS がなぜそれを挙げたのかを示します。発動したルール、在庫ポジションについてのチャンピオンの確率、そして優先度・担当者・期限を選んだルールセットです。担当者は仕事をし(サプライヤーに電話する、ラインを確認する、注文を出す)、行ったことを記録して解決します。

見える内容は役割で決まります。購買担当者には発注書が、シフトリーダーには自分のラインが表示され、データベースが行単位でそれを強制します。

判断
構築と統制を担う人には Viya のライセンスを、行動するすべての人には Lantern を。
理由
何百人もの現場の人が、Viya のライセンスなしで SAS の判断に基づいて動けます。彼らの判断はすべて、翌週の月曜に SAS へ戻ります。
使用ツール
LanternPostgreSQL の行レベルセキュリティ
再発注アクションを開いた Lantern のアクション一覧。推奨される次のステップと SAS の判断が表示されている
図 9. Lantern のアクション。次のステップ、ルールセットが選んだ担当者と期限、そして SAS がそれを挙げた理由を1行で。原寸で開く
SAS の判断の流れ:欠品モデル、ルールセット「アクションの選択」、ルールセット「優先度・担当・レビュー」
図 10. 同じアクションの根拠を、デシジョンの応答からそのまま、ステップごとに。原寸で開く

何が起きたかを測り、モデルを正直に保つ。

ジョブは毎週、解決済みのアクションをその後の結果と照らし合わせます。在庫は切れたか、発注書は期日どおりに届いたか、不良率は下がったか。結果は Lantern に送られ、アクションの横に表示されます。

モデルも同じ方法で評価します。チャンピオン、チャレンジャー、そして在庫水準だけで単純に順位付けする方法を、学習から除外した同じ1,100行でスコアリングします。そのうち138行が4週間以内に欠品しました。

判断
すべてのモデルを同じ行で、単純なベースラインと並べて評価する。
理由
在庫水準で並べるだけの方法に勝って初めて、モデルは使う価値があります。チャンピオンはリスク上位300件で、ベースラインより13件多く欠品を捕捉します。
使用ツール
SAS プログラムVisual AnalyticsLantern

学習から除外した同じ行での欠品モデル

モデルAUCリスク上位300件で捕捉した欠品
Forest(チャンピオン)0.939133 / 138
勾配ブースティング(チャレンジャー)0.927129 / 138
在庫水準のみ(ベースライン)0.918120 / 138

AUC: 0.5 はコイン投げ、1.0 は完全。2026年10月20日に ins_02 で算出。

Forest、勾配ブースティング、在庫水準のみを比較する Lantern のパネル
図 11. Lantern での同じ比較と、Model Studio から画面までの経路。原寸で開く
ページ名が2言語で表示された SAS Visual Analytics のレポート Meridian Control Tower
図 12. Visual Analytics の Meridian Control Tower。ページ名は英語とベトナム語です。原寸で開く

判断の記録

  1. 出発点

    ファイルはそのまま読み込み、修正はすべて SAS の中で、誰でも読めるコードで行う。

    SAS Studio, SAS Content

  2. クレンジングと追跡

    ルール1つにログ1行、そしてすべてのプログラムにフローを。

    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 で動きます。サインインして、そのチームと同じように今週のアクションに取り組んでください。