# 需要予測モデル構築の全体フロー
需要予測は、単にモデルを作るだけではなく、
**「何を予測するか決める → データを集める → 整える → モデルを作る → 評価する → 運用する」**
という流れで進める。
全体像は以下。
```mermaid
flowchart TD
A[① 予測目的・対象の定義]
--> B[② 予測粒度・予測タイミングの決定]
B --> C[③ データ収集]
C --> D[④ データ確認・クレンジング]
D --> E[⑤ 探索的データ分析 EDA]
E --> F[⑥ 特徴量作成]
F --> G[⑦ Train / Validation / Test 分割]
G --> H[⑧ ベースラインモデル作成]
H --> I[⑨ 時系列モデル作成]
I --> J[⑩ 外部要因を含むモデル作成]
J --> K[⑪ 機械学習モデル作成]
K --> L[⑫ モデル精度比較]
L --> M[⑬ 予測要因の分析]
M --> N[⑭ 採用モデル決定]
N --> O[⑮ 将来需要予測]
O --> P[⑯ モデル運用・精度監視]
P --> Q[⑰ 定期的な再学習]
各工程
| Step | 工程 | 主な内容 |
|---|---|---|
| 1 | 予測目的・対象の定義 | 何の需要を予測するのか決める |
| 2 | 予測粒度・タイミング | 月次・年次、製品単位、地域単位などを決める |
| 3 | データ収集 | 販売、価格、在庫、金利、景気指標などを収集 |
| 4 | データ確認・クレンジング | 欠損、異常値、重複などを処理 |
| 5 | EDA | 販売傾向、季節性、各要因との関係を確認 |
| 6 | 特徴量作成 | ラグ、移動平均、季節、前年差などを作成 |
| 7 | データ分割 | 過去を学習、未来を評価データにする |
| 8 | ベースライン | 前月値、移動平均などを作成 |
| 9 | 時系列モデル | Holt-Winters、SARIMAなどを試す |
| 10 | 外部要因モデル | SARIMAX、線形回帰などを試す |
| 11 | 機械学習 | Random Forest、XGBoost、LightGBMなど |
| 12 | 精度比較 | MAE、RMSE、MAPEなどで比較 |
| 13 | 要因分析 | SHAPなどで予測理由を確認 |
| 14 | モデル決定 | 精度・説明性・運用性で判断 |
| 15 | 将来予測 | 来月、来年度などを予測 |
| 16 | モデル運用 | 実績と予測値の差を監視 |
| 17 | 再学習 | 新しい実績データを使ってモデル更新 |
大きく分けると5フェーズ
需要予測の工程は、大きく以下の5つに分類できる。
① 要件定義
↓
② データ準備
↓
③ 分析・特徴量作成
↓
④ モデル構築・評価
↓
⑤ 予測・運用
① 要件定義
- 何を予測するか
- どの粒度で予測するか
- いつの需要を予測するか
- 何の意思決定に使用するか
を明確にする。
② データ準備
必要なデータを集める。
例:
- 過去販売台数
- 製品価格
- 在庫
- 受注情報
- キャンペーン
- 顧客情報
- 金利
- CPI
- GDP
- 為替
- 季節情報
その後、
- 欠損
- 異常値
- 重複
- データ粒度
などを確認する。
③ 分析・特徴量作成
データを可視化して、
- トレンド
- 季節性
- 周期性
- 外部要因との関係
を確認する。
さらに、
- 前月販売台数
- 3か月前販売台数
- 3か月移動平均
- 前年同月販売台数
- 前年比
- 月
- 四半期
などの特徴量を作成する。
④ モデル構築・評価
最初に単純なモデルを作成し、
徐々に高度なモデルを試す。
前月値
↓
移動平均
↓
Holt-Winters
↓
SARIMA
↓
SARIMAX
↓
線形回帰
↓
Random Forest
↓
XGBoost / LightGBM
各モデルを、
- MAE
- RMSE
- MAPE
などで比較する。
⑤ 予測・運用
最も精度・説明性・運用性のバランスが良いモデルを採用する。
採用後は、
予測
↓
実績取得
↓
予測との差を確認
↓
精度監視
↓
必要に応じて再学習
というサイクルを回す。
需要予測で特に重要なポイント
需要予測ではモデルそのものより、
「予測時点で使用可能なデータだけを使用する」
ことが重要。
将来にならないと分からないデータを学習時に使用すると、
データリーク
が発生する。
そのため、
この変数は
「予測する時点で分かっているか?」
を各説明変数について確認する必要がある。
全体像
最終的には以下の流れで需要予測を構築する。
予測対象・目的を決める
↓
予測粒度を決める
↓
予測タイミングを決める
↓
必要なデータを洗い出す
↓
データを収集する
↓
データを確認・クレンジング
↓
EDA
↓
特徴量作成
↓
学習・評価データ分割
↓
ベースラインモデル
↓
時系列モデル
↓
外部要因モデル
↓
機械学習モデル
↓
モデル精度比較
↓
SHAP等による要因分析
↓
採用モデル決定
↓
将来需要予測
↓
実績との比較
↓
モデル改善・再学習
この構成なら、次の記事部分を **「①要件定義」「②データ収集」「③クレンジング」…と順番に掘り下げていけば、そのままQiita記事になります。**