事例

データ分析基盤構築から予測モデル運用まで:ECサイトの需要予測システム開発

2026年1月1日16 分で読める
データ分析基盤構築から予測モデル運用まで:ECサイトの需要予測システム開発

年商50億円のアパレルECが、AI需要予測システムを導入して在庫回転率30%改善、欠品率60%削減を達成。データ基盤構築からMLOps運用まで、プロジェクトの全貌を公開します。

はじめに

「売れ筋商品が欠品して機会損失」「売れない商品の在庫が積み上がる」

EC事業者にとって、在庫管理は永遠の課題です。発注が少なすぎれば欠品で売上を逃し、多すぎれば在庫コストと値下げ処分で利益を圧迫します。

今回ご紹介するのは、年商50億円のアパレルECを運営するB社が、AI需要予測システムを導入して在庫回転率30%改善、欠品率60%削減を達成した事例です。

データ分析基盤の構築から、予測モデルの開発、そしてMLOpsによる本番運用まで、プロジェクトの全プロセスをお伝えします。


プロジェクト背景

クライアント概要

B社プロフィール

  • 業種:アパレルEC(自社ブランド + セレクト)
  • 年商:約50億円
  • SKU数:約8,000点
  • 月間注文数:約50,000件
  • 倉庫:自社運営(1拠点)
  • 従業員:80名(うちMD・在庫管理5名)

抱えていた課題

課題1:属人的な発注判断

発注量の決定は、ベテランMD担当者の経験と勘に依存していました。担当者によって判断基準が異なり、予測精度にばらつきがありました。

課題2:欠品による機会損失

人気商品の欠品が頻発し、推定で年間1億円以上の機会損失が発生していました。特にSNSでバズった商品や、セール期間中の欠品が深刻でした。

課題3:過剰在庫によるコスト増

一方で、売れ残った商品の在庫が積み上がり、シーズン終了後に大幅値下げで処分。粗利率を5ポイント以上圧迫していました。

課題4:データの分断

販売データ、在庫データ、マーケティングデータが別々のシステムに分散しており、統合的な分析ができていませんでした。

プロジェクトの目標

B社とAlgoboaで協議し、以下のKPIを設定しました:

指標現状目標
在庫回転率4.0回/年5.2回/年(+30%)
欠品率8.5%3.5%以下(-60%)
過剰在庫率15%10%以下
予測精度(MAPE)-20%以下

フェーズ1:データ分析基盤の構築

現状のデータ環境

プロジェクト開始時、B社のデータ環境は以下の状態でした:

  • ECプラットフォーム:Shopify(販売・顧客データ)
  • 在庫管理:独自システム(Excelベース)
  • マーケティング:Google Analytics、各SNS管理画面
  • 基幹システム:発注・仕入れデータ

これらがサイロ化しており、統合的な分析には手作業でのデータ結合が必要でした。

データウェアハウスの設計

まず、すべてのデータを統合するデータウェアハウス(DWH)を構築しました。

技術選定

  • DWH:BigQuery(Google Cloud)
  • ETL:Fivetran + dbt
  • オーケストレーション:Cloud Composer(Airflow)

データモデル設計

【ソースレイヤー】
├── shopify_orders(注文データ)
├── shopify_products(商品マスタ)
├── inventory_levels(在庫データ)
├── google_analytics(Web行動データ)
└── weather_data(天気データ)

【変換レイヤー】
├── dim_products(商品ディメンション)
├── dim_dates(日付ディメンション)
├── dim_customers(顧客ディメンション)
├── fct_sales(販売ファクト)
└── fct_inventory(在庫ファクト)

【分析レイヤー】
├── mart_daily_sales(日次販売集計)
├── mart_product_performance(商品別実績)
└── mart_demand_features(需要予測用特徴量)

ETLパイプラインの構築

各データソースからDWHへのデータ連携パイプラインを構築しました。

更新頻度

  • 販売データ:1時間ごと
  • 在庫データ:1時間ごと
  • Web行動データ:日次
  • 天気データ:日次

データ品質チェック

  • 欠損値の検出
  • 異常値の検出
  • 遅延の監視

フェーズ2:予測モデルの開発

特徴量エンジニアリング

需要予測の精度は、特徴量の設計に大きく依存します。以下の特徴量を設計しました。

時系列特徴量

  • 過去7日、14日、28日の販売数
  • 前年同週の販売数
  • 曜日、月、季節のフラグ
  • トレンド成分、季節成分

商品特徴量

  • カテゴリ、サブカテゴリ
  • 価格帯
  • 発売からの経過日数
  • 新商品フラグ

外部要因

  • 天気(気温、降水確率)
  • 祝日・イベントフラグ
  • セール期間フラグ
  • SNSバズ検出(急激なPV増加)

在庫関連

  • 現在庫数
  • 入荷予定
  • 過去の欠品期間

モデル選定

複数のアルゴリズムを比較検討しました。

モデルMAPE特徴
LightGBM18.2%高速、特徴量重要度が見やすい
XGBoost19.1%安定した性能
Prophet24.5%時系列特化、解釈しやすい
LSTM21.3%長期依存関係を学習可能

最終的にLightGBMを採用。精度と解釈性のバランスが最も良好でした。

予測粒度の設計

予測対象

  • 粒度:SKU × 日
  • 予測期間:14日先まで
  • 更新頻度:日次

階層予測(Hierarchical Forecasting)

個別SKUの予測は変動が大きいため、階層的なアプローチを採用しました。

全社合計(トップダウン調整)
  ↓
カテゴリ別(中間調整)
  ↓
SKU別(ボトムアップ予測)

上位階層の予測との整合性を取ることで、全体としての精度を向上させました。

モデル評価

評価指標

  • MAPE(平均絶対パーセント誤差):18.2%
  • RMSE(二乗平均平方根誤差)
  • 欠品予測の適合率・再現率

バックテスト

過去6ヶ月分のデータでバックテストを実施し、季節性やセール期間での精度を確認しました。


フェーズ3:MLOpsによる本番運用

システムアーキテクチャ

┌─────────────────────────────────────────────────────────┐
│                    データパイプライン                      │
│  Shopify → Fivetran → BigQuery → dbt → 特徴量テーブル    │
└─────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────┐
│                    予測パイプライン                        │
│  特徴量取得 → モデル推論 → 予測結果保存 → 発注推奨算出     │
│            (Vertex AI Pipelines)                        │
└─────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────┐
│                    アプリケーション層                       │
│  発注推奨ダッシュボード(Looker Studio + カスタムUI)       │
└─────────────────────────────────────────────────────────┘

自動化されたワークフロー

日次バッチ処理

  1. 05:00 - データ取り込み・変換
  2. 06:00 - 特徴量生成
  3. 07:00 - 予測実行
  4. 08:00 - 発注推奨計算
  5. 08:30 - MD担当者へメール通知

リアルタイム更新

  • 急激な販売増(バズ検出)
  • 大幅な天気変動 → 予測の臨時更新をトリガー

モニタリングとアラート

予測精度のモニタリング

  • 日次で予測と実績を比較
  • 精度が閾値(MAPE 25%)を超えたらアラート
  • カテゴリ別、価格帯別の精度トラッキング

データ品質のモニタリング

  • データ遅延の検知
  • 欠損値の急増検知
  • 異常値の検知

モデルドリフトの検知

  • 特徴量の分布変化
  • 予測値の分布変化
  • 定期的な再学習トリガー

再学習パイプライン

定期再学習

  • 頻度:週次
  • 直近データを追加して再学習
  • A/Bテストで新旧モデルを比較
  • 精度向上が確認できたら本番適用

臨時再学習

  • 大きなイベント後(大型セール後など)
  • 精度劣化が検知された場合
  • 新カテゴリ追加時

発注推奨システム

安全在庫の自動計算

需要予測に加えて、適切な安全在庫水準を自動計算しました。

計算式

安全在庫 = Z × σ × √(リードタイム + 発注間隔)

Z:サービス水準に対応する安全係数(95% → 1.65)
σ:需要の標準偏差

動的調整

  • 予測不確実性が高い商品は安全在庫を多めに
  • 安定した定番商品は安全在庫を少なめに

発注推奨ロジック

推奨発注量 = (予測需要 × リードタイム) + 安全在庫 - 現在庫 - 発注残

制約条件

  • 最小発注単位(MOQ)
  • 発注上限
  • 倉庫キャパシティ

ダッシュボードUI

MD担当者向けのダッシュボードを構築しました。

主な機能

  • 本日の発注推奨リスト
  • SKU別の需要予測グラフ
  • 欠品リスク商品のハイライト
  • 過剰在庫商品のハイライト
  • 予測精度のトラッキング

人間の判断を支援

AIの推奨はあくまで参考情報。最終判断はMD担当者が行う設計としました。

  • 推奨値の根拠(どの特徴量が効いているか)を表示
  • 調整理由を記録できる機能
  • 過去の調整履歴から学習

プロジェクト成果

定量的成果

導入から6ヶ月後の成果を測定しました。

指標導入前導入後改善率
在庫回転率4.0回/年5.2回/年+30%
欠品率8.5%3.2%-62%
過剰在庫率15%9.5%-37%
予測精度(MAPE)-17.8%目標達成

金額換算

  • 機会損失削減:推定年間6,000万円
  • 在庫コスト削減:推定年間3,000万円
  • 値下げ損失削減:推定年間2,000万円
  • 合計:年間約1.1億円の効果

定性的成果

MD担当者の声

「勘に頼っていた発注が、データに基づいて判断できるようになりました。特に新商品の初期発注で大きなミスが減りました」(MD担当・30代)

「ダッシュボードで欠品リスクが一目でわかるので、先手を打った対応ができます」(在庫管理担当・40代)

経営者の声

「在庫を圧縮しながら欠品も減らせたのは大きい。何より、データに基づく意思決定の文化が社内に根付いてきました」(経営企画室長・50代)


成功要因の分析

1. データ基盤への投資

予測モデルを作る前に、データ基盤を整備したことが成功の土台となりました。クリーンなデータなしに高精度な予測は実現できません。

2. 現場との協働

MD担当者を巻き込み、彼らのドメイン知識を特徴量設計に反映しました。現場が使いたくなるシステムを作ることが重要です。

3. 段階的な導入

最初は一部カテゴリでパイロット運用し、成果を確認してから全社展開しました。小さな成功を積み重ねることで、社内の信頼を獲得しました。

4. MLOpsへの投資

モデルを作って終わりではなく、継続的なモニタリングと改善の仕組みを構築しました。予測精度は運用しながら向上し続けています。


今後の展望

B社では、需要予測システムを基盤として、さらなる高度化を計画しています。

短期(6ヶ月以内)

  • 価格最適化との連携
  • 自動発注への段階的移行

中期(1〜2年)

  • 複数倉庫への展開
  • 新規出店計画への活用
  • サプライヤーとのデータ連携

まとめ

B社は、データ分析基盤の構築からMLOpsによる本番運用まで、一貫したアプローチで需要予測システムを構築し、大きな成果を上げました。

成功のポイント

  1. データ基盤への先行投資
  2. 現場との協働による特徴量設計
  3. 段階的な導入とフィードバック
  4. MLOpsによる継続的改善

需要予測・在庫最適化についてのご相談は、Algoboaまでお気軽にお問い合わせください。御社のデータ環境と課題に応じた最適なソリューションをご提案いたします。

AI活用について相談してみませんか?

記事を読んで興味を持たれた方、具体的な課題をお持ちの方、まずは30分の無料相談でお話しましょう。

30分相談