ビジネス実務で昔からあるデータ活用の1つが時系列予測です。来月や来年の売上を予測したいであるとか、明日や来週のPVを予測したいであるとか、1時間先や明日の電力消費量を予測したいであるとか、時間という概念の紐付いた、時系列予測は昔からあります。このような予測をするために、時系列予測モデルを構築し活用するケースが多いです。
例えば、4月の売上を予測するとき、昨年の4月の売上を参考に予測する、というのも、ある種の時系列予測モデルと言えます。このような時系列予測モデルを使ったとき、予測対象が複数(例:1日先から7日先、来月から1年間、など)になることが多いです。今回は「時系列予測モデルの複数先予測(Multi-Step ahead prediction)」というお話しをします。
【目次】
1. 時系列予測
2. 複数先予測
3. 複数先予測を実現する時系列予測モデル群
4. n期先予測モデルを個々に作る方法(観測データのみ利用)
5. 1期先予測モデルを1つ作り再帰的に利用する方法
6. n期先予測モデルを個々に作る方法(観測データ+予測データ)
7. 時系列の多変量予測モデルを1つ作る方法
8. 時系列予測モデル
【この連載の前回:データ分析講座(その261)視座の高低と将来予測へのリンク】
1. 時系列予測
時系列予測モデルを検討するとき、運用時の予測対象期間と学習データ期間を明確にしておく必要があります。
- 予測時点
- 学習データ期間
- 予測対象期間
実務運用を見据えて明確にします。
ある企業のあるサービスの見込み顧客数予測の例ですと……
- 予測時点:各月の第3周の金曜日
- 学習データ期間:予測時点の前日を含む90日間
- 予測対象期間:翌月(日単位)、翌月から3ヶ月間(月単位)
この企業のあるサービス(一般消費者向けのサービス)の売上は、見込み顧客数と非常に相関しています。見込み顧客数を増やすために色々なマーケティング施策を実施しており、計画していたマーケティング施策をもとに、翌月の日単位の予測と、翌月から3ヶ月月間の予測を実施しています。
見込み顧客予測の結果が芳しくないとき、マーケティング施策の修正のための検討を、各月の第3周の金曜日に実施します。例えば、その月が30日間で第3周の金曜日が28日の場合、翌月が1日は4期先予測、2日は5期先予測、…と複数先予測をすることになります。
2. 複数先予測
時系列予測モデルの基本は1期先予測です。日単位であると想定すると、1期先予測とは、学習データ期間の次の日です。2期先予測とは、学習データ期間の翌々日です。3期先予測とは、学習データ期間の翌翌々日です。ここで1つ問題が起こります。
1期先予測の予測モデルは、例えば日単位の場合、前日までの学習データ期間のデータを使いモデル構築します。しかし、2期先予測の予測モデルの場合、そうは行きません。2期先予測対象日の前日は、学習データ期間ではなく、1期先予測対象日だからです。
どうすればいいでしょうか?
3. 複数先予測を実現する時系列予測モデル群
複数先予測を実現する方法がいくつかあります。よくある方法が以下の4つです。
- n期先予測モデルを個々に作る方法(観測データのみ利用)
- 1期先予測モデルを1つ作り再帰的に利用する方法
- n期先予測モデルを個々に作る方法(観測データ+予測データ)
- 時系列の多変量予測モデルを1つ作る方法
4. n期先予測モデルを個々に作る方法(観測データのみ利用)
一番わかり易いのが、n期先別に個々に予測モデルを構築する方法です。学習データ期間は同じで……
- 1期先予測モデル:例えば、1期先予測対象日前の過去90日間のデータを使う
- 2期先予測モデル:例えば、1期先予測対象日前の過去90日間のデータを使う
- 3期先予測モデル:例えば、1期先予測対象日前の過去90日間のデータを使う
……と必要なだけ作ります。
翌月を日単位で予測するならば、31個の予測モデルを準備しておく、ということです。ただ、例えば30期先予測モデルだと、学習データ期間が離れすぎている、という気持ち悪さがあります。
5. 1期先予測モデルを1つ作り再帰的に利用する方法
1期先予測モデルを使いまわして、複数先予測を実現しようという考え方もあります。例えば、過去90日間のデータを使う予測モデルの場合、利用するデータ期間をスライドさせながら……
- 1期先予測:1期先予測対象日前の過去90日間のデータを使う
- 2期先予測:1期先予測対象日前の過去89日間のデータ+前日の予測値のデータを使う
- 3期先予測:1期先予測対象日前の過去88日間のデータ+前日と前々日の予測値のデータを使う
……といった感じで、予測データを使いながら予測を実施します。
予測モデルが1つで済むというのが利点です。ただ、2期先予測、3期先予測、……をするとき、その前までの予測値を過去の観測データの代わりに予測データを利用するという気持ち悪さは生まれます。
6. n期先予測モデルを個々に作る方法(観測データ+予測データ)
その前までの予測値を過去データの代わりに利用する、ということを前提にした予測モデルを作ったほうがいのでは、という考え方もあります。というこことで、1期先予測モデルを使いまわすのではなく、学習データ期間を変化させながらn期先別に個々に予測モデルを構築しようとなります。学習データ期間を変化させながら……
- 1期先予測モデル:例えば、1期先予測対象日前の過去90日間のデータを使う
- 2期先予測モデル:例えば、1期先予測対象日前の過去89日間のデータ+前日の予測値のデータを使う
- 3期先予測モデル:例えば、1期先予測対象日前の過去88日間のデータ+前日と前々日の予測値のデータを使う
……と必要なだけ作ります。翌月を日単位で予測するならば、31個の予測モデルを準備しておく、ということです。
7. 時系列の多変量予測モデルを1つ作る方法
以上の3つの時系列予測モデルは、単変量(1変量)の時系列予測モデルを前提にしています。単変量(1変量)ではなく、多変量の時系列予測モデルを構築すればいいのでは、という考え方もあります。多変量とは、(1期先、2期先、3期先、……)というベクトルにする、ということです。学習データ期間が、1期先、2期先、3期先、…とも同じになります。
8. 時系列予測モデル
時系列予測モデルで利用できる数理モデルは色々あります。例えば、以下のような時系列に特化した数理モデルもあります。
- 指数平滑化モデル
- ARIMAモデル(SA...