【データサイエンティストの分析録④】過剰在庫と欠品を同時に減らす|在庫データ分析の実践アプローチ

ECデータ ECマーケティング

【データサイエンティストの分析録➂】「経験と勘」から脱却する在庫分析と適正在庫の数理アプローチ」では、「安全係数」と「標準偏差」を用いた「安全在庫・発注点」の統計的算出方法を解説しました。この数式をデータパイプラインに組み込むことで、日常的な販売ペースにおける「欠品リスク」を自動で抑制できるようになります。

しかし、在庫管理の現場においては、それだけでは防ぎきれない2つの課題が存在します。

  1. 過剰在庫(デッドストック)によるキャッシュの固定化: トレンドの終了や型落ちによって売れなくなったものの、「いつか売れるかもしれない」という判断の遅れから倉庫のピッキングスペースを圧迫し、手元資金を滞留させ続ける問題。
  2. プロモーションや特売スパイクによる特需欠品 過去の平均値や緩やかな変動からはみ出す、キャンペーンや急な気象変化に伴う一時的な需要増(特需)による在庫切れ(機会損失)。

これらは、過去の単純な集計値だけを眺めて発注をかける「事後管理」の限界を示しています。今回は、「ECコネクター® DashBoard」の構築において実践している、過剰在庫を排除する「流動性・財務分析」と、特需を先取る「時系列需要予測」のアプローチについて解説します。

データサイエンスであぶり出す「滞留在庫」と「損切り方程式」

「見えないデッドストック」をシステム上で自動的に検知・整理するために、「ECコネクター® DashBoard」のデータパイプラインには以下の分析・指標を実装しています。

1. GMROIによる在庫投資効率の客観的評価

売上高という表面上の数字ではなく、保有している在庫がどれだけ効率よく利益(粗利)に転換されているかを測定する「GMROI:商品投下資本粗利益率」をSKU単位で追跡します。

(※ 粗利益率 = 粗利益 ÷ 売上高、在庫回転率 = 売上高 ÷ 平均在庫高)

GMROIを出すことで、「利益率は低いが、回転率が高く資金効率が良い商品(例:回転率40回 × 粗利率5% = GMROI 200%)」と、「回転率は低いが、1回あたりの利益率が高い商品(例:回転率4回 × 粗利率50% = GMROI 200%)」を、共通の基準で評価できるようになります。

実務上、GMROIが200%以上であれば効率よく利益を生み出している「優良商品」、100%以下であれば投資効率が著しく低下している「見直し対象」と判定します。

2.  ABC-XYZマトリクスによる戦略的ポートフォリオ配置

売上規模を基準にする「ABC分析」に、需要の安定性(動きの予測しやすさ)を基準にする「XYZ分析」を掛け合わせ、商品を9つのセルに分類・管理します。XYZ分類の基準となるのは、出庫データから算出する「需要の変動係数(CV )」です。

この変動係数に基づき、需要が非常に安定している商品をXクラス、季節性や波がある商品をYクラス、需要が不定期なものをZクラスと自動分類します。

  • AX領域(売上高大 × 需要安定/重点補充): 需要が安定しているため、安全在庫を絞って(例:推奨在庫日数7日)資金効率を最大化しても欠品リスクを低く抑えられます。
  • CZ領域(売上高極小 × 需要不安定/削減・廃止候補): 売上貢献が小さく動きも読みにくい領域です。新規仕入れの停止やSKUの削減(廃止)を検討する対象となります。

XYZと安全在庫係数の関係を表にまとめると以下の通りです。

ABC \ XYZX (変動小: 安定)Y (変動中: 標準)Z (変動大: 不安定)
S (超重要)1.641.88 (現在)2.05 (手厚く保護)
A (重要)1.481.64 (現在)1.88 (厚めに保護)
B (普通)1.341.48 (現在)1.64
C (下位)1.151.34 (現在)1.00 (欠品をある程度許容)

3. 不動在庫の可視化による在庫循環 の改善

不動在庫が滞留する主な要因は、個人の感覚による値下げタイミングの遅れです。これを防ぐため、Dashboardでは任意の期間の不動在庫商品をご確認いただけます。

在庫を安全に保有・循環させられる目安は業界ごとに異なりますが、一般的に30日〜60日とされています。過去60日間に一度も出庫がないSKUの価格変更を行うことで、在庫滞留を防ぐことができます。

4. 「過剰在庫」を自動判定するSQLロジック

「ECコネクター® DashBoard」では、以下の判定ロジックを用いて「過剰在庫」を抽出しています。

クエリ例

WITH prep AS (
SELECT
  "受注コード",
  ROW_NUMBER() OVER(PARTITION BY "受注コード" ORDER BY "商品コード") 
   AS "明細番号",
  "商品コード",
  "販売単価",
  "送料",
  "クーポン値引き額"
FROM csv_data
)
SELECT
  "受注コード",
  "明細番号",
  "商品id",
  "販売単価",
  IF ("明細番号" = 1, "送料", 0) AS "送料",
  IF ("明細番号" = 1, "クーポン値引き額", 0) AS "クーポン値引き額"
FROM prep

在庫切れをゼロにする「未来の在庫予測」への挑戦

過去の販売データに基づいて安全在庫を設定するだけでは、季節の切り替わりや特売キャンペーンによる「突発的な需要の波」に対応できず、機会損失が生じることがあります。

そのため、過去のデータ集計にとどまらない「時系列需要予測」を近日実装予定です。

1. 従来の統計予測(移動平均・指数平滑)の限界

「直近3ヶ月の平均値」を使う移動平均法などは計算が容易ですが、「過去のトレンドがそのまま続く」前提に立っています。そのため、天候の急変やプロモーションによる意図的な需要の増加を反映しにくい側面があります。

2. 二重季節性モデル(Prophet)によるリズム学習

アパレルや食品ECなどでは、「1年単位の季節サイクル」と「1週間単位の曜日リズム」が重なって現れます。こうした複雑な需要変動を捉えるため、時系列解析ライブラリ「Prophet」や、価格・気温・プロモーション予定などの外生変数を考慮できる統計モデル「RegARIMA」を活用した分析を行います。

「LINE配信を行う週末に気温が一定を超えた場合、どれくらいの注文が見込まれるか」を事前に試算し、必要な発注や補充を計画的に行う仕組みづくりを進めています。

3. 予測精度の評価:MAPEによる検証プロセス

予測モデルの実装にあたっては、「どの程度の誤差が生じるか」を事前に検証する必要があります。評価指標には、実務で扱いやすい「MAPE(平均絶対パーセント誤差)」を採用しています。

モデルの評価手順(バックテスト)は以下の通りです。データ量が少ない新規SKUなどは安全在庫を用いた簡易計算へ自動的に切り替え、モデルの誤予測を防ぐ設計となっています。

  1. 検証用データの隔離: 過去データのうち直近2ヶ月分を除外してモデルを学習させます。
  2. 予測値と実績値の照合: 学習済みモデルに直近2ヶ月の条件を入力して予測値を算出し、実際のデータと照合してMAPEを計算します。
  3. 基準に基づく運用判断: MAPEが20%未満(予測精度80%以上)を満たしたモデルを本番環境へ適用します。

まとめ

在庫管理を経験や勘だけに頼る運用から脱却し、「GMROI」や「ABC-XYZ分析」といった指標を活用することで、効率の低下している在庫を数値に基づいて特定できます。

ただし、システム上で予測精度を高めるだけでは不十分であり、確定したデータに基づいて現場の発注オペレーションや意思決定をスムーズに連動させることが重要です。

在庫管理の改善に取り組む際は、まず過去1年間のデータから「直近90日間に動きがないSKU」を抽出し、それらの商品が全体の在庫資産に対してどの程度の割合を占めているかを確認することから始めてみてください。現状の数値を客観的に把握することが、在庫運用を効率化するための確実な手掛かりとなります。

在庫の可視化や、Prophet等の機械学習を用いた需要予測モデルの導入など、データ活用による在庫最適化についてご不明な点がございましたら、お気軽にお問い合わせください。

■ECのためのダッシュボード「ECコネクター® DashBoard」についてはこちら

〈筆者プロフィール〉
データサイエンティスト J

ECコネクター® DashBoard 開発・データ分析担当。
大学・大学院にてコンピューターサイエンスおよびデータ解析を専攻し、修士課程を修了。
現在は「ECコネクター® DashBoard」の開発エンジニア/データサイエンティストとして、サービス全体のアルゴリズム設計からダッシュボード開発までを担当。 Amazon AthenaやBigQueryを用いた大規模データのクエリ処理、Pythonによるデータパイプライン構築、各種API連携の自動化を得意とし、データの集計・加工からビジネスに直結する可視化までを一貫して手がけている。