演習:需要予測フレームワークを設計しよう
「理論はわかった。ここからは手を動かしてフレームワークを形にしてほしい。」
田中VPoEがあなたにノートPCを渡す。
「NetShop社の在庫問題を整理し、需要予測の分析計画を立ててくれ。経営会議で使えるレベルのものを頼む。」
ミッション概要
NetShop社の在庫問題に対して、需要予測フレームワークを設計する演習である。在庫コストの定量化から手法選定、分析ロードマップの策定までを一貫して行う。
Mission 1: 在庫コスト分析(10分)
NetShop社には3つの商品カテゴリがある。各カテゴリの在庫コストを算出せよ。
データ:
- 食品カテゴリ: 月間売上 5,000万円、在庫回転率 12回/年、欠品率 8%、廃棄率 5%
- 家電カテゴリ: 月間売上 3,000万円、在庫回転率 6回/年、欠品率 3%、廃棄率 1%
- アパレルカテゴリ: 月間売上 2,000万円、在庫回転率 4回/年、欠品率 5%、廃棄率 10%
タスク:
- 各カテゴリの月間欠品損失額を算出する
- 各カテゴリの月間廃棄コストを算出する(廃棄品の平均原価率を60%とする)
- 在庫回転率を1回改善した場合の保管コスト削減額を概算する
- どのカテゴリから優先的に需要予測を強化すべきか、根拠を示して提案する
解答例
import pandas as pd
categories = pd.DataFrame({
'カテゴリ': ['食品', '家電', 'アパレル'],
'月間売上': [50_000_000, 30_000_000, 20_000_000],
'在庫回転率': [12, 6, 4],
'欠品率': [0.08, 0.03, 0.05],
'廃棄率': [0.05, 0.01, 0.10],
})
# 月間欠品損失額 = 月間売上 × 欠品率
categories['欠品損失'] = categories['月間売上'] * categories['欠品率']
# 月間廃棄コスト = 月間売上 × 廃棄率 × 原価率(60%)
categories['廃棄コスト'] = categories['月間売上'] * categories['廃棄率'] * 0.6
# 月間在庫額 = 年間売上 / 在庫回転率 / 12 ≈ 月間売上 * 12 / 回転率 / 12
categories['平均在庫額'] = categories['月間売上'] * 12 / categories['在庫回転率']
categories['改善後在庫額'] = categories['月間売上'] * 12 / (categories['在庫回転率'] + 1)
categories['保管コスト削減'] = (categories['平均在庫額'] - categories['改善後在庫額']) * 0.25 / 12
categories['合計損失'] = categories['欠品損失'] + categories['廃棄コスト']
print(categories[['カテゴリ', '欠品損失', '廃棄コスト', '合計損失', '保管コスト削減']].to_string(index=False))
# 結果:
# 食品: 欠品400万+廃棄150万=550万、保管コスト削減 約32万/月
# 家電: 欠品90万+廃棄18万=108万、保管コスト削減 約61万/月
# アパレル: 欠品100万+廃棄120万=220万、保管コスト削減 約60万/月
#
# → 食品カテゴリの合計損失が最大であり、最優先で需要予測を強化すべき
# → ただしアパレルは廃棄率が高く、シーズン性が強いため予測改善余地も大きい
Mission 2: 需要パターン分類(10分)
NetShop社の主要10商品について、需要パターンを分類し、適切な予測手法を提案せよ。
タスク:
- 以下の商品の需要パターンを分類する(安定/季節性/トレンド/間欠/新商品)
- 各パターンに適した予測手法を1つ以上提案する
- 各商品のABCランクを推定する
| 商品 | 特徴 |
|---|---|
| ミネラルウォーター | 夏にピーク、冬に落ちる |
| コピー用紙 | 年間通じてほぼ一定 |
| クリスマスケーキ | 12月のみ集中 |
| スマートフォン | 新機種発売時に急増 |
| 防災グッズ | 地震・台風時に急増 |
| 日焼け止め | 4-8月にピーク |
| ノートPC | 緩やかに成長 |
| マスク | 冬にピーク+感染症流行時に急増 |
| 季節限定スイーツ | 2-3ヶ月のみ販売 |
| 特注家具 | 月に数件程度、不規則 |
解答例
| 商品 | パターン | 予測手法 | ABCランク |
|---|---|---|---|
| ミネラルウォーター | 季節性 | SARIMA / Prophet | A |
| コピー用紙 | 安定 | 移動平均 / 指数平滑法 | B |
| クリスマスケーキ | 季節性(極端) | 前年実績ベース | C |
| スマートフォン | イベント駆動 | LightGBM + イベント特徴量 | A |
| 防災グッズ | 間欠需要 | Croston法 / 安全在庫重視 | C |
| 日焼け止め | 季節性 | SARIMA / Prophet | B |
| ノートPC | トレンド | Holt法 / LightGBM | A |
| マスク | 季節性 + 外部要因 | Prophet + 外部変数 | B |
| 季節限定スイーツ | 短期季節性 | 類似商品の実績ベース | C |
| 特注家具 | 間欠需要 | Croston法 / 受注生産 | C |
Mission 3: 分析ロードマップの策定(10分)
Kaggle Store Sales - Time Series Forecastingデータセットを使った需要予測プロジェクトのロードマップを策定せよ。
タスク:
- プロジェクトを4フェーズに分割する
- 各フェーズのゴール、主要タスク、成果物を定義する
- 使用する評価指標を選定し、その理由を述べる
- 最終成果物の形式を提案する
解答例
分析ロードマップ
Phase 1: データ理解・EDA(1週目)
ゴール: Store Salesデータの全体像を把握し、予測方針を決定する
タスク:
- データ構造の理解(店舗、カテゴリ、時系列の関係)
- 時系列分解(トレンド/季節性/残差)
- 外部変数(石油価格、祝日、地震)の影響分析
- ACF/PACFによる自己相関分析
成果物: EDAレポート、予測方針書
Phase 2: モデル構築・比較(2週目)
ゴール: 複数の予測モデルを構築し、最適なモデルを選定する
タスク:
- ベースラインモデル(移動平均)
- ARIMA/SARIMA
- Prophet
- LightGBM + 特徴量エンジニアリング
- モデル比較・選定
成果物: 予測モデル群、性能比較レポート
Phase 3: AIエージェント化(3週目)
ゴール: 需要予測をAIエージェントとして実装する
タスク:
- 予測Tool、異常検知Tool、発注最適化Toolの実装
- LangGraphによるワークフロー構築
- アラートシステムの設計
成果物: 需要予測AIエージェント
Phase 4: 評価・改善(4週目)
ゴール: エージェントの精度と運用品質を担保する
タスク:
- 予測精度モニタリングの設計
- 自動再学習トリガーの設定
- ビジネスKPIとの連動評価
成果物: モニタリング計画書、改善提案書
評価指標:
- RMSLE: Kaggleの公式指標。対数変換で大きな値の影響を抑制
- MAE: 直感的な誤差の大きさ
- MAPE: パーセンテージで業務担当者に伝えやすい
- 選定理由: 複数指標で多角的に評価。ビジネス報告にはMAPE
最終成果物: 需要予測AIエージェント + 在庫最適化戦略レポート
達成度チェック
- 3カテゴリの在庫コストを正しく算出できた
- 欠品損失と廃棄コストを定量化できた
- 10商品の需要パターンを分類し予測手法を提案できた
- 4フェーズの分析ロードマップを策定できた
- 評価指標を選定し理由を述べられた
推定所要時間: 30分