Prophet予測モデル

英語名 Prophet Forecasting
読み方 プロフェット・フォーキャスティング
難易度
所要時間 2〜4週間
提唱者 Meta(旧Facebook) 2017年
目次

ひとことで言うと
#

Prophet予測モデルは、トレンド・季節性・イベント効果の3要素を加法モデルで分解し、ビジネスデータの将来値を予測する時系列分析フレームワークです。

用語の定義
#

押さえておきたい用語
  • トレンド成分(Trend Component):データの長期的な増加・減少傾向を表す関数。線形またはロジスティック成長で表現される
  • 季節性成分(Seasonality Component):週次・年次など周期的な変動パターン。フーリエ級数で近似して捉える
  • チェンジポイント(Changepoint):トレンドの傾きが大きく変化した時点。Prophetが自動検出し、柔軟な予測を可能にする要素
  • イベント効果(Holiday Effect):祝日・セール・キャンペーンなど、不定期だが予測可能な変動要因
  • 不確実性区間(Uncertainty Interval):予測値の信頼幅。将来のチェンジポイントやノイズを考慮して算出する

全体像
#

トレンド長期的な増減傾向g(t)季節性周期的な変動パターンs(t)イベント効果祝日・セール等の一時変動h(t)加法モデルy(t) = g(t) + s(t) + h(t) + ε予測 + 不確実性区間将来値と信頼幅の出力
過去データ収集
日次データ・イベント日
モデルフィッティング
トレンド+季節性+イベント
チェンジポイント検出
傾き変化の自動特定
予測生成
将来値+信頼区間出力

こんな悩みに効く
#

  • 来月以降の売上見込みをエクセルの延長線で出しているが、季節変動やセール効果を織り込めない
  • ARIMAなどの時系列手法を試したが、パラメータ調整に時間がかかり実務で運用が回らない
  • 予測値だけでなく「上振れ・下振れ幅」も含めた計画を立てたいが、不確実性の定量化が難しい

基本の使い方
#

データを準備する
日付列(ds)と実績値列(y)の2列構成でCSVを用意します。欠損日がある場合は行を飛ばしても問題ありません。最低でも1年分のデータがあると季節性の学習精度が上がります。
イベント情報を定義する
祝日やセール開始日など、通常の周期から外れる日をイベントとして登録します。前後の影響日数(lower_window / upper_window)も指定し、セール前日の買い控え効果などを捉えます。
モデルをフィットさせる
Prophetオブジェクトを生成し、トレンドの柔軟性(changepoint_prior_scale)と季節性の強さ(seasonality_prior_scale)を調整します。デフォルト値で十分な精度が出ることも多いため、まず初期値で実行します。
予測と診断を行う
futureデータフレームを作成して予測を実行し、成分分解プロット(plot_components)でトレンド・季節性を可視化します。不確実性区間の幅が実務判断に適切かを確認し、必要に応じてパラメータを再調整します。

具体例
#

EC企業の月次売上予測
アパレルECサイトが過去3年分の日次売上データ(約1,100日分)をProphetに投入。年末セール(12月)と夏セール(7月)をイベントとして登録した。モデルは年次季節性で12月に平月比+62%、7月に**+38%のスパイクを学習。翌四半期の売上予測精度(MAPE)が、移動平均法の18.4%から7.2%に改善した。仕入れ計画の精度が上がり、シーズン終了後の在庫残が前年比で23%削減**された。
SaaS企業のサポート問い合わせ予測
月間アクティブユーザー12万人のSaaS企業が、日次の問い合わせ件数をProphetで予測。月曜日に件数が平均1.4倍になる週次季節性と、月末に請求関連の問い合わせが集中する月次パターンを検出。チェンジポイントとして、料金改定を実施した時点でトレンドの傾きが日次+8件から**+15件に変化していることも判明した。この予測を基にシフト配置を最適化し、平均応答時間が4.2時間から2.8時間**に短縮された。
食品スーパーの来客数予測
地方のスーパーマーケットチェーン(15店舗)が、各店舗の日次来客数をProphetで予測。土日の来客数は平日の1.7倍、特売チラシ配布日は通常土日のさらに1.3倍になるパターンをモデルが捉えた。年次成分では、お盆と年末年始にピークが立ち、2月に底を打つ波形を学習。予測を基にパート・アルバイトのシフト枠を動的に設定した結果、人件費の過不足が月あたり約120万円改善し、レジ待ち時間も平均3.5分から2.1分へ短縮された。

やりがちな失敗パターン
#

失敗原因対策
予測精度が突然悪化する外部環境の構造変化(コロナ禍など)をモデルが学習していないチェンジポイントを手動追加するか、構造変化以降のデータのみで再学習する
季節パターンが過学習になるデータ量が少ない状態でフーリエ次数を上げすぎているseasonality_prior_scaleを小さくし、フーリエ次数もデフォルト(年次10、週次3)から始める
イベント効果が反映されないイベント日の定義が不正確、またはlower/upper_windowの設定漏れ過去の実績を確認し、イベント前後の影響日数を実データから推定して設定する
不確実性区間が広すぎて使えないチェンジポイントの数や柔軟性が高すぎるchangepoint_prior_scaleを0.05程度に下げ、n_changepointsも25→15に減らして安定性を優先する

まとめ
#

Prophetの強みは、統計の深い知識がなくてもトレンド・季節性・イベントの3成分に分解して予測できるところにあります。まずはデフォルト設定で動かし、成分分解プロットを見ながら「このパターンはビジネス実態と合っているか」を確認するのが最も効率的な始め方です。パラメータ調整は精度が不足したときだけ行い、changepoint_prior_scaleとseasonality_prior_scaleの2つから手を付けるのが実務的でしょう。