オンライン教育の利用予測 Prophet

オンライン教育の利用予測

オンライン教育の利用予測の例題を解決するために、Facebookが開発したProphetというツールを使用します。

Prophetは、時系列データの予測に特化したオープンソースの予測モデルです。

以下の例では、”Date”と”Usage”の2つの列を持つデータセットを想定しています。

“Date”列は各データポイントのタイムスタンプを表し、”Usage”列はその日付のオンライン教育利用者数を表します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pandas as pd
from prophet import Prophet

# 入力データを定義する
data = pd.DataFrame({
'ds': ['2023-01-01', '2023-01-08', '2023-01-15', '2023-01-22', '2023-01-29', '2023-02-05', '2023-02-12', '2023-02-19', '2023-02-26', '2023-03-05'],
'y': [100, 120, 110, 130, 150, 140, 160, 180, 170, 190]
})

# 'ds'列を日付型に変換する
data['ds'] = pd.to_datetime(data['ds'])

# Prophetモデルを初期化してフィットさせる
model = Prophet(weekly_seasonality=True)
model.fit(data)

# 予測用の未来のデータフレームを作成する
future = model.make_future_dataframe(periods=10, freq='W')

# 予測を行う
forecast = model.predict(future)

# 予測結果をプロットする
fig = model.plot(forecast)

この例では、2023年1月1日から2023年3月5日までの10個のデータポイントを持つ入力データを定義しています。

weekly_seasonality=Trueパラメータは、モデルがデータの週次周期性を考慮するようにします。

make_future_dataframe関数は、10週間の追加予測用データフレームを作成するために使用されます。

freq='W'パラメータは、頻度を週次に設定します。

最後に、plot関数を使用して予測結果をグラフで可視化します。

これは単なる基本的な例であり、具体的な要件に応じて入力データやパラメータをカスタマイズすることができます。

ソースコード解説

提供されたコードは、Prophetという時系列予測モデルを用いて、一連の時系列データの予測を行う基本的な手順を示しています。以下に各部分の詳細説明を示します。

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

まず、必要なライブラリをインポートしています。
pandas ライブラリはデータの操作や整形、Prophet ライブラリは時系列予測モデルを構築するために使用されます。

2. 入力データの定義:

data という名前のデータフレームを作成しています。
このデータフレームには、’ds’ 列に日付情報、’y’ 列に対応する時系列データ(ここでは例として利用回数)を含むデータが格納されています。

3. 日付データの整形:

‘ds’ 列は日付を文字列として格納しています。
そのため、pd.to_datetime を使用してこの列を日付型に変換しています。
これにより、日付データを効果的に処理できるようになります。

4. Prophetモデルの初期化とフィッティング:

Prophet クラスのインスタンスを作成し、weekly_seasonality=True を設定して週次の周期性を考慮するようにしています。
その後、このモデルに data データフレームを適合させています。

5. 予測用の未来データの作成:

予測のために、元のデータ期間に加えて未来の期間を含むデータフレーム future を作成しています。periods=10freq='W' を指定して、未来の10週間分の日付データを生成しています。

6. 予測の実行:

model.predict(future) を呼び出すことで、未来の期間に対する予測を行います。
予測結果は forecast というデータフレームとして返されます。

7. 予測結果のプロット:

model.plot(forecast) を呼び出すことで、元のデータと予測結果を含むグラフが表示されます。

このグラフを通じて、予測の範囲、予測された時系列データの変化、週次の季節性などが視覚的に確認できます。

このコードは、Prophetモデルを使って時系列データの予測を行う基本的な手法を示しており、実際のデータに適用する際には、データの特性に合わせて適切な調整が必要です。

結果解説

グラフは、以下の要素を含んでいます。

1. 黒い点:

元のデータポイントを表しており、各データポイントの x 軸には日付(’ds’ 列の値)、y 軸には対応する時系列データの値(’y’ 列の値)が配置されています。

2. 青い線と青い範囲:

予測の結果として、黒い線が描かれ、これは予測された時系列データの値を示しています。
青い範囲は、予測の不確実性を示すもので、予測された値の上下に広がっています。

3. 縦軸 (y 軸):

利用回数などの時系列データの値を表します。

4. 横軸 (x 軸):

日付を示し、時間の経過に伴うデータの変化を示しています。
青い点と黒い線が連続している範囲が、過去から未来への時系列の推移を表しています。

5. 週次の周期性:

グラフ上に縦線が表示され、週ごとの周期性を示しています。
この週次の周期性は、Prophetモデルによって考慮されています。

このグラフを通じて、元のデータと予測されたデータの変化、および週ごとの季節性を視覚的に理解することができます。