prophet
年・週・日の季節性とトレンドを自動で分けて予測するモデルです。欠けている期間や外れ値に強く、パラメータを細かく決めなくても動きます。説明変数を加えることもできます。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
| エラー情報 | データ |
Spark エンジンでは動きません。
入力の行はそのままでは残りません。 出力は実測値と予測値を縦に並べた別の表になります。
出力の形
説明変数を使うかどうかで、出力の列が変わります。
説明変数を使わないとき
| 列名 | 内容 |
|---|---|
カテゴリ | 実測 / 過去データ検証 / 予測 |
予測対象 | 予測した列の名前 |
| 日付列と同じ名前の列 | 日付 |
値 | 実測値または予測値 |
AR と同じ形です。グループごとにモデルを作成するを使ったときは、グループの列がいちばん右に付きます。
説明変数を使うとき
| 列名 | 内容 |
|---|---|
カテゴリ | 実測 / 過去データ検証 / 予測 |
| 日付列と同じ名前の列 | 日付 |
| 予測対象列と同じ名前の列 | 実測値または予測値 |
| 説明変数の列 | 入力の値そのまま |
予測対象 の列はできません。 予測対象を 1 列しか選べないためです。値は 値 ではなく元の列名のまま入ります。
2 つ目の エラー情報 には エラーメッセージ の列が入ります。エラーが 1 つも起きなかったときは、全てのグループで正常に終了しました という 1 行だけが入ります。
設定項目
- 説明変数を使用する
- 既定は off。on にすると、予測対象の列以外の数値列も使います。on / off で以降の項目が大きく変わります。
- 予測対象列を選択必須
- 数値の列だけ選べます。説明変数を使用するが off のときは複数選べ、on のときは 1 列だけです。
- 説明変数を選択必須
- 説明変数を使用するが on のときだけ出ます。数値の列だけ選べます。複数選べます。
- 日付列を選択必須
- 時間の軸。日付・日付時間・時間の列だけ選べます。
- 何期先まで予測するかを入力必須
- 予測期間の設定という見出しの下に出ます。既定は
3。説明変数を使用するが on のときは出ません。 - 期の単位を選択
- 説明変数を使用するが off のときだけ出ます。日付列の型で選択肢が変わります。日付型・日付時間型のときの既定は日です。
| 日付列の型 | 選べる単位 |
|---|---|
| 日付 | 年 / 月 / 週 / 日 |
| 日付時間 | 年 / 月 / 週 / 日 / 時 / 分 / 秒 |
| 時間 | 時 / 分 / 秒 |
日付列が時間型のときは、何も選ばれていない状態で出ます。 そのまま実行すると日単位で先を並べます。時・分・秒のいずれかを選んでください。
他のモデルと違い、1 期の長さを自分で決められます。 日付の間隔がまちまちでも、ここで指定した単位で先を並べます。
オプション
- 年単位の季節性を考慮する
- 季節性の設定の下に出ます。既定は on。
- 週単位の季節性を考慮する
- 既定は on。
- 日単位の季節性を考慮する
- 既定は on。
- グループごとにモデルを作成する
- 説明変数を使用するが off のときだけ出ます。on にするとグルーピングする列を選択が出ます。
- エラーを無視する
- 説明変数を使用するが off のときだけ出ます。失敗したグループ・失敗した予測対象列を飛ばして続けます。
説明変数を使うときの違い
「何期先まで予測するか」の設定がありません。 説明変数の未来の値が分からなければ先は読めないためです。
ただし、予測そのものはできます。 予測対象の列が空欄になっている行は 予測 として計算されます。先を予測したいときは、連続数値、日付の補間で未来の日付の行を足し、説明変数だけ埋めて予測対象列は空欄のままにしてください。
| 行の状態 | カテゴリ |
|---|---|
| 予測対象に値がある | 実測 と 過去データ検証 の 2 行 |
| 予測対象が空欄 | 予測 |
グループごとのモデル作成とエラーを無視する設定は使えません。 1 本のモデルだけを作ります。
季節性の設定
データの期間が足りない季節性は on にしても働きません。年単位の季節性には 2 年分以上が目安です。
不要な季節性は off にしてください。 日次データに日単位の季節性は意味がなく、無駄に複雑になります。
SARIMA と違い、複数の周期を同時に扱えます。 曜日の波と年の波が両方あるデータは prophet が向いています。
欠けている期間があってもよい
AR 系と違い、日付が連続していなくても動きます。 「(列名)が連続ではありません。時系列データの補間をお試しください。」のエラーも出ません。休業日のデータがないようなケースはそのまま掛けられます。
ただし、同じ日付の行が複数あると落ちます。
エラーと対処
「エラーを無視する」を on にすると、途中で止まらずに済みます。 失敗した分は出力から抜け、理由が エラー情報 に入ります。ただしひとつも作れなかったときは「全てのグループでモデル作成に失敗しました」で止まります。
日付列の値が重複している
同じ日付の行が複数あるときに出ます。
{{index_label}}列が重複しています。集計するなどして重複をなくしてください。
直し方 — データ集計で日付をキーにまとめてください。
予測対象列を説明変数にも選んでいる
{{X_label}}が説明変数の列にも選択されているので実行できません。説明変数から取り除くか、予測対象の列を変更してください。
直し方 — 説明変数から予測対象の列を外してください。
説明変数に欠損値がある
説明変数を使用するが on のときに出ます。文面は「処理対象列」ですが、指しているのは説明変数の列です。
処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。
直し方 — 時系列に沿った欠損値処理で埋めてください。予測対象列の空欄は埋めないでください(それが予測したい行です)。
予測対象列に欠損値がある
説明変数を使用するが off のときに出ます。文面は上と同じで、どちらの列が原因かはメッセージからは分かりません。
処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。
直し方 — 時系列に沿った欠損値処理で埋めてください。
対象の列に数値以外がある
処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。
直し方 — 列の型変更で数値にしてください。
すべてのグループで失敗した
全てのグループでモデル作成に失敗しました。:
{{error_msg}}
直し方 — グループの分け方を粗くするか、1 グループあたりの行数を増やしてください。
選んだ列が入力にない
前のノードで列名を変えたり削除したりすると出ます。
対象の列が選択されていません。
対象の列が存在しません。
直し方 — 予測対象列を選択・説明変数を選択・日付列を選択・グルーピングする列を選択を選び直してください。
よく使う例
1. 日次の売上を 30 日先まで予測する
来月の見込みを立てたいとき。
入力
| 日付 | 売上 |
|---|---|
| 2024-04-01 | 120 |
| 2024-04-02 | 95 |
| …(365 日分) | … |
設定
| 設定項目 | 値 |
|---|---|
| 予測対象列を選択 | 売上 |
| 日付列を選択 | 日付 |
| 何期先まで予測するかを入力 | 30 |
| 期の単位を選択 | 日 |
出力 — 予測 の 30 行が足されます。実測 と 過去データ検証 を重ねれば当てはまりが確かめられます。
2. 曜日と季節の波を両方扱う
週末に上がり、年末にも上がるデータのとき。
入力 — 例 1 と同じ形で、2 年分(730 日)。年単位の季節性には 2 年分以上が要ります
設定
| 設定項目 | 値 |
|---|---|
| 年単位の季節性を考慮する | on(既定) |
| 週単位の季節性を考慮する | on(既定) |
| 日単位の季節性を考慮する | off |
出力 — 曜日の山谷と年末の山が両方出ます。日次データに日単位の季節性は意味がないので off にしています。
3. 店舗ごとに予測する
店舗別の見込みが欲しいとき。
入力
| 店舗 | 日付 | 売上 |
|---|---|---|
| 渋谷 | 2024-04-01 | 120 |
| 池袋 | 2024-04-01 | 60 |
設定
| 設定項目 | 値 |
|---|---|
| グループごとにモデルを作成する | on(列に 店舗) |
| エラーを無視する | on |
出力 — 4 列に 店舗 が加わります。行数の足りない店舗は出力から抜け、理由が エラー情報 に入ります。
4. 気温を要因に含めて当てはめる
売上が気温に左右されるので、その関係も含めて説明したいとき。
入力
| 日付 | 売上 | 気温 |
|---|---|---|
| 2024-04-01 | 120 | 18.2 |
| 2024-04-02 | 95 | 15.1 |
| 2024-04-03 | 140 | 22.4 |
| 2024-04-04 | 130 | 21.0 |
| 2024-04-05 | 105 | 16.8 |
設定
| 設定項目 | 値 |
|---|---|
| 説明変数を使用する | on |
| 予測対象列を選択 | 売上 |
| 説明変数を選択 | 気温 |
| 日付列を選択 | 日付 |
出力 — カテゴリ / 日付 / 売上 / 気温 の 4 列になります。予測対象 の列も 値 の列もできません。
行数は入力の 2 倍の 10 行です。売上 に値のある 5 行が 実測 としてそのまま出たうえで、同じ 5 行が 過去データ検証(当てはめ値)としてもう一度出ます。
5. 気温の予報を使って先を読む
例 4 の続きで、天気予報の気温から売上を見込みたいとき。
入力 — 例 4 の表の下に、未来の日付の行を足します。気温 は予報の値を入れ、売上 は空欄のままにします。
| 日付 | 売上 | 気温 |
|---|---|---|
| 2024-04-01 | 120 | 18.2 |
| 2024-04-02 | 95 | 15.1 |
| 2024-04-03 | 140 | 22.4 |
| 2024-04-04 | 130 | 21.0 |
| 2024-04-05 | 105 | 16.8 |
| 2024-04-06 | (空欄) | 23.1 |
設定 — 例 4 と同じ
出力 — 11 行になります。実測 5 行(売上 に値のある行)、過去データ検証 5 行、予測 1 行です。4 月 6 日の行が カテゴリ = 予測 になり、売上 に見込み値が入ります。
6. 休業日のあるデータをそのまま予測する
定休日のデータがなく、ARIMA 系が「(列名)が連続ではありません。時系列データの補間をお試しください。」で止まるとき。
入力
| 日付 | 売上 |
|---|---|
| 2024-04-01 | 120 |
| 2024-04-02 | 95 |
| 2024-04-04 | 110 |
設定 — 例 1 と同じ
出力 — 抜けを埋めなくても予測できます。prophet は日付の抜けを前提にしています。