今回は、Pythonの時系列予測モデルProphetを使用して時系列データの未来の値を予測する際に、予測精度向上のために行う基本的な工夫についてまとめます。
Prophetによる予測

時系列予測モデルProphetで予測精度を向上させるためには、ハイパーパラメータを最適化したり、予測に有用な外部変数を導入するなどの工夫が必要です。
以下では、Optunaによるハイパーパラメータチューニングと祝日フラグの追加、外部変数の追加、学習期間の最適化について解説します。
パラメータチューニング
Optunaを使うことで、パラメータチューニングを簡単に行うことができます。
Prophetのパラメータチューニングのコード例については、以下で紹介されています。
OptunaでProphetのパラメータをいじって時系列予測の精度を改善してみた Qiita 2025/3/9閲覧
時系列データから、学習データ期間と検証データ期間を抽出し、チューニングしたいパラメータと探索範囲を指定し、予測を実施してMAPEで評価して最適な組み合わせを探索しています。
祝日フラグの追加
Prophetでインスタンスを作成するProphet関数にはholidaysという引数があり、この引数に対して祝日の日付と祝日情報を与えると、その日が祝日かどうかを考慮したモデルを作成できます。
引数holidaysに与えるデータフレームはds(yyyymmdd)とholidays(祝日の名称)からなる祝日の日付のみをデータフレームです。
Prophetのmake_holidays_df関数を使用すると、引数holidaysに入れるデータを国別に簡単に作成できます。
ただし、日本の場合は振替休日が反映されていないなど問題が多いので、jpholidayの使用をおすすめします。また、Prophetではholidaysの名前ごとに別物として扱うため、予測を行う際にはholidaysの値は統一した方が良いです。
さらに、一律で祝日とするのではなく、実態に合わせて「三連休」「週の中日の単独祝日」「大型連休」といった形で祝日の性質ごとに分類した方が良いでしょう。
大型連休や三連休の場合は祝日以外の日でも普段より利用が増えるため、三連休であれば土日も含めて「三連休」という祝日を与えるといった工夫も考えられます。
このような祝日フラグの作成については、次のページで解説しています。
-
参考祝日フラグの作成と連休の反映
時系列分析を行う際には、曜日配列や祝日の配置が重要です。祝日が月曜日や金曜日であれば土日と合わせて3連休になりますし、年末年始やお盆はカレンダー上は平日であっても、実際には大型連休と呼ばれ帰省ラッシュ ...
続きを見る
外部変数の追加
Prophetでは、add_regressor関数を使用することで、予測対象とは別の時系列データを外部変数として追加した上で予測できます。
たとえば、ある商品の売上を予測する際に、別の商品の「予測対象期間の実績値」を使うことで予測精度向上が期待できます。
具体的には、8/1のアイスクリームの売上を予測する際に、通常ではアイスクリームの過去の日次の売上データを使って予測します。
ここで、過去に売上データに加えて、気温というアイスクリームに売上に影響する因子をadd_regressor関数で追加することで、精度向上が期待できます。
過去データを使って売上と気温の関係を学習し、8/1の気温が与えらた状態で同日の売上を予測することで、気温に応じた予測値を出せます。
このようなモデルを作成することで、気温に応じた売上のシミュレーションを行えます。
学習期間の最適化
学習期間を変更することで、予測精度が変化する可能性があります。
学習期間が短すぎると季節変化を十分に学習できずに精度が低下する可能性がありますが、一方で学習期間が長すぎると過去の古すぎる(もはや役に立たない)変動を学習してしまい、かえって精度が低下する可能性もあります。
たとえば、今後の売上を予測する際に、コロナ禍という特殊な環境の売上データを学習してしまうと、かえって精度が低下する可能性が高いです。
参考文献
Quick Start, Prophet 2023/1/28閲覧
OptunaでProphetのパラメータをいじって時系列予測の精度を改善してみた Qiita 2025/3/9閲覧
Prophetでチューニングすべきパラメータ 株式会社GRI 2025/3/9閲覧
PROPHET_Diagnostics_Hyperparameter tuning Prophet 2025/3/9閲覧
Seasonality, Holiday Effects, And Regressors Prophet 2025/3/9閲覧