# AIモデルによる需要予測の事例と手法を紹介！Pythonで実装してみよう！

> 当サイト【スタビジ】の本記事では、AIモデルによって顧客の需要を予測する手法とその事例について紹介します！また、Pythonで簡単な実装も行っていきましょう！

- URL: https://toukei-lab.com/demand-forecast
- 公開: 2024.01.17 / 更新: 2025.10.02
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、AIモデルによって顧客の需要を予測する手法とその事例について紹介します！また、Pythonで簡単な実装も行っていきましょう！
:::

こんにちは！スタビジ編集部です！

今回は**需要予測におけるAIモデル**についてその活用方法や具体的な事例について紹介していきます。

記事の後半では、実際に<mark>Pythonを使った需要予測のやり方</mark>についても紹介します！

:::point
**・AIを用いた需要予測とは？**\
**・AIモデルの種類と活用事例**\
**・Pythonでの実装**
:::

以下のYoutube動画でも解説していますのであわせてチェックしてみてください！

::youtube{#4oOsMuNlyiw}

## 需要予測とは？AIモデルを用いるメリットは？

![そもそも推定とは？](/wp-content/uploads/2023/08/001c43e0065230e0d9382843bf5f3914-1024x1024.jpg)

まず初めに、**需要予測とは何なのか？**&#x306B;ついて解説していきます！

需要予測とはその名の通り、誰にも定かではない<mark>将来の需要を予測するプロセス</mark>でありビジネスにおいて欠かせないものとなっています。

:::talk{who="umatan"}
イメージしやすい例だと製造業界におけるお客様の需要予測などがあるね！
:::

需要予測は、企業が製品やサービスを供給する量を最適化し、<mark>在庫を多く抱えすぎないように抑えつつ、</mark><mark>需要に応じて生産や調達の量を調整する目的</mark>で利用されます。

製品の製造計画や在庫管理、サービス提供の最適化など、戦略的な意思決定を行う需要予測のプロセスは多岐にわたります。

昨今では、この需要予測に**AIモデル**が活用されるケースが見られます。

:::talk{who="robotan" side="left"}
そうなんだ！なぜAIモデルが需要予測に使われてるの？
:::

:::talk{who="umatan" side="right"}
AIが「需要を予測する」という課題にマッチしていることが多いからだよ！精度の向上やカスタマイズ性など、様々なメリットが存在するんだ！
:::

**AIモデルを用いて需要予測を行うメリット**は以下などがあります。

:::box
**・精度向上：**&#x904E;去の大量のデータから学習を行い、パターンやトレンドを把握することが可能。また過去データだけでなく異なる変数や要因を組み合わせた予測を行うことによる精度向上も期待できる。\
**\
・ロスタイムがない：**&#x5909;化する市場の状況や消費者の行動に対してリアルタイムでデータ分析を行えるため、需要の急激な変化にも対応しやすい。\
**\
・カスタマイズ性：**&#x7570;なる業界やビジネス特性においてもモデルの調整により柔軟に適応し、適切な予測を効率的に行える
:::

:::talk{who="robotan" side="left"}
いろんなメリットがあるんだね！反対にデメリットは存在しないの？？
:::

:::talk{who="umatan" side="right"}
デメリットとしては需要予測の精度が、**使用されるデータの品質**に依存されやすいことが挙げられるんだ。そのため、適切なデータ品質管理や定期的なプロ人材によるチェックなど、AIモデル導入による弱点に対処する戦略を合わせて採用していくことをオススメするよ！
:::

## AIモデルの種類と選定

![AIモデルの種類と選定](/wp-content/uploads/2024/01/38e846372e2b02336675b6797947e2d7.png)

需要予測に用いられるAIモデルは様々あります。

異なるモデルにはそれぞれ、得意なデータやパターンがあり、ビジネスの特性によって最適なモデルは変化します。

本章では、代表的な３つのモデルである<mark>「ARIMAモデル」「LSTM」「Prophet」</mark>に焦点を当ててそれぞれの特性について見ていきましょう。

### ARIMAモデル

ARIMA（AutoRegressive Integrated Moving Average）は、**時系列データの予測**に広く使用される統計的手法です。

時系列データの予測なので需要予測以外にも、様々な予測に活用されます！\
（ex.ある地域の降水量）

ARIMAモデルでは以下の3つの要素が組み合わさっています。

**・自己相関（AutoRegressive：AR）**\
**・和分（Integrated：I）**\
**・移動平均（Moving Average：MA）**

詳しい説明はここでは割愛しますが、上記3つの要素が組み合わさっていることにより、<mark>データのトレンドや季節性を捉える</mark>ことが可能です。

このモデルの特徴は、**非定常**（時系列によって平均値などのトレンド感が異なるなど）の特徴を持つ時系列データに対しても、<mark>差分を取り定常性を持つデータに変換</mark>させるところにあります。

<https://toukei-lab.com/%e5%ae%9a%e5%b8%b8%e3%81%a8%e9%9d%9e%e5%ae%9a%e5%b8%b8>

これにより、モデルがデータのトレンドや季節性をより適切に捉えられるようになります。

季節性のあるデータにも対応できるARIMAモデルは、例えば<mark>特定の月や週ごとのパターンを考慮して予測を行える</mark>ことが強みです。

:::box{title="メリット"}
・**実装が比較的容易**\
PythonやR、Excelなどでパッケージを用いて使用できる

・**解釈性**\
数学的に理解がしやすく、モデルの構造やパラメータについて把握した上でユーザーがモデルの調整を行える

・**柔軟なモデルである**\
非線形や定常・非定常データ、季節データなど、様々な時系列データに対して適用できる
:::

ARIMAモデルについては以下の記事をチェックしてみてください！

<https://toukei-lab.com/%E6%99%82%E7%B3%BB%E5%88%97%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90>

:::talk{who="umatan"}
学習コンテンツ「スタアカ」では実際に**ARIMAモデルを用いた株データの予測**を行っているよ！分析コンペをふまえた実践的な内容なので要チェックなのだ！**☟☟**
:::

:::box
[スタビジアカデミー：「株データの分析（ARIMAモデル）」](https://toukei-lab.com/achademy/?sfwd-courses=stock-analysis)
:::

### LSTM

LSTM（Long Short Term Memory）は、時系列データに対する**ニューラルネットワーク**の一種です。

ニューラルネットワークの仕組みや種類についてまとめたこちらの記事もぜひチェックを！

<https://toukei-lab.com/nn>

通常のリカレントニューラルネットワーク（RNN）の、「**時系列データの長期記憶を保持するのが困難である**」という課題を解決するために開発されたのが**LSTM**になります。

RNNの概要はこちら↓↓

<https://toukei-lab.com/rnn#RNN-5>

RNNの派生型LSTMについてはこちら↓↓

<https://toukei-lab.com/lstm>

![LSTM](/wp-content/uploads/2024/01/LSTM-1024x576.jpg)

LSTMモデルでは上記のイメージ図のように、<mark>長期記憶と短期記憶を保持しつつ、長期記憶から不要な記憶を忘却させ新たな記憶をインプットして次に渡していく</mark>ような仕組みになっています。

このモデルはデータの中に潜む複雑な**非線形関係**を捉えることができ、特に大量のデータが用意できる場合に効果を発揮します！

:::box{title="メリット"}
・**非線形データへの相性**\
非線形なデータや複雑な時系列パターンをモデリングするのに優れている

・**長期記憶に強い**\
時系列データの長期記憶も保持しつつ新しい記憶をインプットしていくことが可能
:::

ニューラルネットワークについては以下の学習コンテンツもぜひ覗いてみてくださいーー！

:::box
[スタビジアカデミー：「ディープラーニングコース：ニューラルネットワーク」](https://toukei-lab.com/achademy/?sfwd-courses=deep-learning)
:::

### Prophet

最後にProphet。

Prophetは、<mark>Facebookが開発した時系列データの予測に特化したモデル</mark>です！

季節性や休日などの時系列的要因を柔軟に取り扱うことができ、トレンドの変化に適応できます。

非常に使いやすくパラメータの調整が容易なため、**初学者にもおすすめ**のAIモデルとなっています！

:::box{title="メリット"}
・**シンプルで使いやすい**

・**外れ値に強い**\
外れ値に対して頑健であり、データの不安定性や異常値の存在があっても安定した予測が可能

・**オープンソースで広く利用されている**\
Facebookが開発・メンテナンスしており、豊富なドキュメントやコミュニティサポートを利用できる
:::

## AIモデルによる需要予測の具体事例

![AIモデルによる需要予測の具体事例](/wp-content/uploads/2024/01/6928d186dbe464a00fefa653af52a46b-1024x924.png)

前章で紹介した３モデルの適用事例を簡単に紹介します！

#### **ARIMAモデルを用いた需要予測**

ある小売業界では、**スーパーマーケット**での商品の需要予測にARIMAモデルを適用しました。

過去の売り上げデータを学習させたARIMAモデルを用いて未来の需要を予測し、在庫を最適化した結果、**在庫コスト減＆機会損失の減少＆顧客満足度向上**に繋がりました！

#### **LSTMを用いた需要予測**

ある**製造業**では、機械の故障データや生産量などから未来の需要を予測し、生産計画を最適化するためにLSTMを活用しています。

データの中に潜む複雑な時系列関係を学習でき、非線形なパターンに対応することが出来るLSTMが活躍し、活用前より**効率的な生産計画を実現**しました！

#### **Prophetを用いた需要予測**

Prophetの利用事例として、**小売業**の季節性の強い商品や、イベントによる需要変動の予測が挙げられます！

Prophetは季節性を柔軟に扱えるため、クリスマスやお正月、ゴールデンウイークなど、**季節イベントによる需要予測において有用**です！

## Pythonによる実装

![信頼区間の計算方法](/wp-content/uploads/2023/08/a714533919c158a5ff4d2d4acf413361-1024x1019.jpg)

ここからは、実際の需要予測の手法を**Python上で実装**していきます！

今回はシンプルな例として、年月日と売れた個数からなるデータを学習させて<mark>LSTMモデルを構築し、実際に需要の予測値の算出</mark>まで行っていきます。

以下の流れで分析を進めます。

:::box
**1. 必要なライブラリのインポート\
2\. 日付と需要（売上数）からなるダミーデータの生成\
3\. データの前処理\
4\. LSTMモデルの構築\&#xA;**__5. テストデータの設定＆モデルの性能評価\
6\. 予測結果を可視化__
:::

### 1. 必要なライブラリのインポート

まずはじめに必要な**ライブラリをインポート**してあげましょう。

普段importすることの多い[numpy](/numpy)や[pandas](/python-pandas)、可視化に用いる[matplotlib](/matplotlib)以外に、今回はLSTMモデルを利用するのでそれに関連するものもインポートしてしまいます！

```python
# 必要なライブラリのインポート
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import LSTM, Dense
```

### 2.日付と需要（売上数）からなるダミーデータを生成

次に**ダミーデータを生成**します。

各コードで何を行っているかは#で記載の通りです。

```python
# 疑似乱数の設定
np.random.seed(1)
# 2022/1/1から2023/12/31までの日付データを1日ごとに生成
date_range = pd.date_range(start='2022-01-01', end='2023-12-31', freq='D')
# 正規分布からの乱数に疑似的に周期性を持たせた値を加算したものを需要データとして生成
demand_data = np.random.normal(loc=50, scale=10, size=len(date_range)) + np.sin(np.linspace(0, 4*np.pi, len(date_range)))
# 生成された日付データと需要データを結合しdataに格納
data = pd.DataFrame({'Date': date_range, 'Demand': demand_data})
```

上記コードにより、<mark>時系列データを模したダミーデータを生成し、データフレームに格納</mark>できました！

データの中身を確認してみましょう！

![LSTM学習データ](/wp-content/uploads/2024/01/5403a976a212d34fa76c2746cb5f6727.jpg)

365日×2年間分の730行からなる需要量のダミーデータが作成されていることが分かります！

手元に実際の時系列データがある方は、そちらを使ってみましょう！

### 3. データの前処理

続いて時系列データの前処理として、**正規化・整形・ラベルの作成**を行っていきます。

```python
# データの正規化
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data['Demand'].values.reshape(-1, 1))

# データの整形（データの95%を学習用として使用）
training_data_len = int(np.ceil(len(scaled_data) * .95))
train_data = scaled_data[0:int(training_data_len), :]

# ラベルの作成
x_train, y_train = [], []
for i in range(60, len(train_data)):
    x_train.append(train_data[i-60:i, 0])
    y_train.append(train_data[i, 0])

x_train, y_train = np.array(x_train), np.array(y_train)
```

### 4. LSTMモデルの構築

このフェーズでは、実際に**LSTMモデルを構築**していきます！！

```python
# LSTMモデルの構築
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1], 1)))
model.add(LSTM(units=50, return_sequences=False))
model.add(Dense(units=25))
model.add(Dense(units=1))

# モデルのコンパイル
model.compile(optimizer='adam', loss='mean_squared_error')

# モデルのトレーニング
model.fit(x_train, y_train, batch_size=1, epochs=1)
```

モデル構築の箇所では**各層を追加**し、**ユニット数や出力の指定**を行っております。

そしてコンパイルの箇所で**最適化アルゴリズム：adam**、**損失関数：平均二乗誤差**をそれぞれ指定し、学習させています！

### 5. テストデータの作成＆モデルの性能評価

続いてこちらのフェーズでは、<mark>テストデータを作成し、そのテストデータとLSTMモデルから出力させた予測値をもとに、モデルの性能を評価</mark>しています。

```python
# テストデータセットの作成
test_data = scaled_data[training_data_len - 60:, :]

# 特徴とラベルの作成
x_test = []
y_test = data['Demand'][training_data_len:].values
for i in range(60, len(test_data)):
    x_test.append(test_data[i-60:i, 0])

x_test = np.array(x_test)

# データの再形成
x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))

# 予測値の取得
predictions = model.predict(x_test)
predictions = scaler.inverse_transform(predictions)

# モデルの性能評価
rmse = np.sqrt(np.mean(((predictions - y_test) ** 2)))
print(f'Root Mean Squared Error (RMSE): {rmse}')
```

### 6. 予測結果を可視化

ここまできたら、最後に**予測結果を可視化**します！

```python
# 予測結果の可視化
train = data[:training_data_len]
valid = data[training_data_len:]
valid['Predictions'] = predictions

plt.figure(figsize=(16, 8))
plt.title('Model')
plt.xlabel('Date')
plt.ylabel('Demand')
plt.plot(train['Date'], train['Demand'])
plt.plot(valid['Date'], valid[['Demand', 'Predictions']])
plt.legend(['Train', 'Test', 'Predictions'], loc='lower right')
plt.show()
```

上記により、**学習データ(Train)とテストデータ(Test)で示す実際の需要**と、**モデルによる予測結果(Predictions)**&#x304C;同プロット上に表示され、視覚的にモデルの性能を評価することが可能です！

実際の出力結果を見てみましょう！

![LSTMによる需要予測結果](/wp-content/uploads/2024/01/adc24296658baf3e80a497216ab884c3-1024x550.jpg)

結果がしっかりとグラフ上に可視化できていることが確認できますね！！

最後の方の60日間はテストデータとしていて、予測値を出した際に**評価**を行っていました。

実際にモデルを作成して予測に用いる際には、<mark>パラメータを調整する必要があり、そのためにテストデータによる性能評価・検証のフェーズが存在</mark>します！

:::talk{who="umatan"}
パラメータの調整の際、1日おきの変動をもっと大きくしてよりモデルを実データにマッチさせていくか等は、月単位での需要が知りたいのか、日ごとのばらつきも合わせて考慮したいのか、など需要予測を行う目的によって変化する部分になってくるよ！
:::

## AIモデル×需要予測のまとめ

![画像が生成されました](https://sdmntprnorthcentralus.oaiusercontent.com/files/00000000-f9d4-622f-855a-42e505da20c8/raw?se=2025-10-01T15%3A57%3A39Z\&sp=r\&sv=2024-08-04\&sr=b\&scid=06db3fa6-de54-5cba-aa27-0c2dd60df689\&skoid=d5627e4c-566b-4761-a954-54993b0ed17b\&sktid=a48cca56-e6da-484e-a814-9c849652bcb3\&skt=2025-09-30T23%3A50%3A58Z\&ske=2025-10-01T23%3A50%3A58Z\&sks=b\&skv=2024-08-04\&sig=xFci6YyjvlYvDUlGcQ4%2B2auSjFooecaM%2B0h6YvADnBk%3D)

ここまでご覧いただきありがとうございました！

本記事では、<mark>AIモデルを使用して需要を予測する方法や事例</mark>についてまとめました！

需要予測は<mark>ビジネスのあらゆる分野で重要な課題</mark>であり、AIの進化に伴ってより精緻で効果的な予測が可能になっています！

ぜひ理解して、自分でAIモデルを使えるようになりましょう！

このようなデータサイエンスの力を身に付けるためには**スタビジの記事やスクール**を活用すると良いでしょう。

そして僕の経験を詰め込んだデータサイエンス特化のスクール[「スタアカ（スタビジアカデミー）」](https://toukei-lab.com/achademy/)を運営していますので，興味のある方はぜひチェックしてみてください！

:::box
[スタビジアカデミー：「株価予測コース：ARIMAモデルとLSTMを使用」](https://toukei-lab.com/achademy/?sfwd-courses=stock-analysis)
:::

**AIデータサイエンス特化スクール「スタアカ」**

![スタアカトップ](/wp-content/uploads/2021/11/2bc9f22d0f8dfe24080b83884b7a5ec6-1024x576.jpg)

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1280円/月<br>
プレミアムプラン：149,800円</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>データサイエンスを網羅的に学ぶ<br>
実践的なビジネスフレームワークを学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
マーケティングの実行プラン策定<br>
マーケティングとデータ分析の掛け合わせで集客マネタイズ</td>
</tr>
</tbody>
</table>

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「[スタアカ](https://toukei-lab.com/achademy/)」！！

当メディアが運営するスクールです。

<mark>24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します！</mark>

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください！

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

<mark>そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコース</mark>になっています！

Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください！

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定\
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ**
:::

＼今すぐ試す／

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/"}

データサイエンスに関する記事はこちら！

<https://toukei-lab.com/statistics-freshman>

<https://toukei-lab.com/datascience-book>

データサイエンスを勉強できるスクールやサイトは、ぜひこちらを参考にしてみてください！

<https://toukei-lab.com/datascientist-school>