NeuralProphet 0.2 : ノートブック : Sub-daily データ (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 07/24/2021 (Beta 0.2.7)
* 本ページは、NeuralProphet の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- テレワーク & オンライン授業を支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
- ウェビナー運用には弊社製品「ClassCat® Webinar」を利用しています。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション |
E-Mail:sales-info@classcat.com ; WebSite: https://www.classcat.com/ ; Facebook |
NeuralProphet 0.2 : ノートブック : Sub-daily データ
NeuralProphet は ds カラムでタイムスタンプを持つデータフレームを渡すことにより sub-daily 観測を持つ時系列のための予測を行なうことができます。タイムスタンプの形式は YYYY-MM-DD HH:MM:SS であるべきです – ここ のサンプル csv を参照してください。sub-daily データが使用されるとき、daily 季節性は自動的に適合しています。
ここでは NeuralProphet を 5 分解像度のデータに適合させます (Yosemite の毎日の気温)。
if 'google.colab' in str(get_ipython()):
!pip install git+https://github.com/ourownstory/neural_prophet.git # may take a while
#!pip install neuralprophet # much faster, but may not have the latest upgrades/bugfixes
data_location = "https://raw.githubusercontent.com/ourownstory/neural_prophet/master/"
else:
data_location = "../"
import pandas as pd
from neuralprophet import NeuralProphet, set_log_level
# set_log_level("ERROR")
df = pd.read_csv(data_location + "example_data/yosemite_temps.csv")
今は次の 7 日間を予測することを試みます。5 分データ解像度は 60/5*24=288 の daily 値を持つことを意味します。従って、先の 7*288 期間を予測することを望みます。
幾つかの常識を使用して、以下を設定します :
- 最初に、weekly 季節性を無効にします、自然は人間の週のカレンダーに従いません。
- 2 番目に、変化点を無効にします、データセットは 2 ヶ月のデータだけを含むからです。
m = NeuralProphet(
n_changepoints=0,
weekly_seasonality=False,
)
metrics = m.fit(df, freq='5min')
future = m.make_future_dataframe(df, periods=7*288, n_historic_predictions=len(df))
forecast = m.predict(future)
fig = m.plot(forecast)
# fig_comp = m.plot_components(forecast)
fig_param = m.plot_parameters()
The daily seasonality seems to make sense, when we account for the time being recorded in GMT, while Yosemite local time is GMT-8.
トレンドと季節性を改良する
288 の記録された daily 値を持つので、過剰適合の危険性なしに、daily_seasonality の柔軟性を増やすことができます。
更に、天気で典型的であるように、データがトレンドで明瞭に変化を示していますので、変化点を無効にするという決定を再検討することを望むかもしれません。以下の変更を行ないます :
- 短期的な予測を行なっていますので、changepoints_range を増やします。
- トレンドの突然の変化に適合することを可能にするため n_changepoints を増やします。
- 過剰適合を回避するために trend_reg を設定することにより、トレンド変化点を注意深く正則化します。
m = NeuralProphet(
changepoints_range=0.95,
n_changepoints=50,
trend_reg=1.5,
weekly_seasonality=False,
daily_seasonality=10,
)
metrics = m.fit(df, freq='5min')
future = m.make_future_dataframe(df, periods=60//5*24*7, n_historic_predictions=len(df))
forecast = m.predict(future)
fig = m.plot(forecast)
# fig_comp = m.plot_components(forecast)
fig_param = m.plot_parameters()
以上