Prophet 1.0 : 不確定区間 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 07/13/2021 (1.0)
* 本ページは、Prophet の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
スケジュールは弊社 公式 Web サイト でご確認頂けます。
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
- ウェビナー運用には弊社製品「ClassCat® Webinar」を利用しています。
人工知能研究開発支援 | 人工知能研修サービス | テレワーク & オンライン授業を支援 |
PoC(概念実証)を失敗させないための支援 (本支援はセミナーに参加しアンケートに回答した方を対象としています。) |
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション |
E-Mail:sales-info@classcat.com ; WebSite: https://www.classcat.com/ ; Facebook |
Prophet 1.0 : 不確定区間
デフォルトでは Prophet は予測 yhat のための不確定区間を返します。これらの不確定区間の背後には幾つかの重要な仮定があります。
予測の不確実さには 3 つの源 (= source) があります : トレンドの不確実性、季節性推定の不確実性、そして追加の観測ノイズです。
トレンドの不確実さ
予測の不確実性の最大の源は未来のトレンド変化の可能性です。このドキュメントの既に見た時系列は履歴で明確なトレンド変化を示します。Prophet はこれらを検出して適合させることができますが、その先にどのようなトレンド変化を想定するべきでしょうか?確実に知ることは不可能ですから、可能な最も合理的なものを行ない、そして未来は履歴と同様のトレンド変化を見ることを仮定します。特に、未来のトレンド変化の平均頻度と大きさは履歴で観測したものと同じであることを仮定しています。これらのトレンド変化を前方に予測し、そしてそれらの分布を計算することにより不確定区間を取得します。
不確実性の測定の方法の一つの特性は changepoint_prior_scale を増加することにより、レートの高い柔軟性を許容することで予測の不確実性を増加することです。これは、履歴のより多くのレート変化をモデル化すれば、未来でより多く (のレート変化) を想定して、不確定区間を過剰適合の有用な指標にするからです。
不確定区間の幅 (デフォルトで 80%) はパラメータ interval_width を使用して設定できます :
forecast = Prophet(interval_width=0.95).fit(df).predict(future)
再度、これらの区間は未来は過去と同じ頻度と大きさのレート変化を見ることを仮定しています。この仮定は多分真実ではありませんので、これらの不確定区間の正確なカバーを得ることは期待するべきではありません。
季節性の不確実性
デフォルトでは Prophet はトレンドと観測ノイズの不確実性だけを返します。季節性の不確実性を得るには、完全なベイジアン・サンプリングを行なわなければなりません。これはパラメータ mcmc.samples (このデフォルトは 0 です) を使用して成されます。ここではクイックスタートからの Peyton Manning データの最初の 6 ヶ月のためにこれを行ないます。
m = Prophet(mcmc_samples=300)
forecast = m.fit(df).predict(future)
これは典型的な MAP 推定を MCMC サンプリングで置き換えます、そしてどれだけの観測があるかに依存して遥かに長い時間がかかる可能性があります – 数秒の代わりに数分を予想します。完全なサンプリングを行なう場合、それらをプロットするとき季節的な成分で不確実性を見ます :
fig = m.plot_components(forecast)
Python でメソッド m.predictive_samples(future) か、R で関数 predictive_samples(m, future) を使用して raw 事後予測サンプルにアクセスできます。
Windows の PyStan では upstream issue があります、これは MCMC サンプリングを極めて遅くします。Windows での MCMC サンプリングのための最善の選択は R を使用するか、あるいは Linux VM で Python を使用することです。
以上