時系列モデリングを行うにはどのようなフォーマットのデータを用意すれば良いでしょうか。また、時間軸に欠損があったりしてはいけないのでしょうか。
このセクションでは時系列モデリングを行う際に用意するデータについて解説します。
時系列データのフォーマット
時系列モデリングを行うには時間/日時の特徴量とターゲット、その他の特徴量を含んだフォーマットのデータである必要があります。DataRobotの時系列モデリングではラグやヒストリカル変数を自動で生成するため、手動で生成する必要はありません。ラグ/ヒストリカル変数とは例えば売上予測を予測する問題では、前日、7日前、1年前の売上や来店客数を特徴量としたものです。
図1に「TS-1. 店舗の売上予測(単時系列問題)」で用いたデータで「時間軸の特徴量」と「ターゲット」にあたる部分を示します。また、このデータのようにひとつの系列(今回は店舗)から構成された時系列を単時系列と呼びます。
図1. 単時系列データのフォーマット
これに対し店舗が複数あってそれらの時系列データをまとめて扱いたい場合もあります。このようにいくつかの系列(店舗)が含まれている時系列のことを複数時系列と呼びます。
複数時系列の場合、ひとつひとつの単時系列データのIDとなる系列認識子を数値またはカテゴリとして含めます(単時系列データにそれぞれの系列認識子を与え、縦につなげたデータというイメージです。例えば店舗ごとの日次売上を格納した複数時系列データであれば、店舗番号などが系列認識子にあたります)。系列認識子は1列のみ指定可能で、複数列ある場合は連結して1つの特徴量とする必要があります。以下に例を示します。
図2. 複数時系列データのフォーマット
時系列対応データ
時系列データには以下のようなパターンが存在します。
- 定期的 :月曜から日曜毎日など、均等な間隔で発生するイベント
- 半定期的:閉店しているので日曜日、祝日だけ売上が存在しないなど、ほぼ均等な間隔で発生するイベント
- 不定期的:トランザクションなど、一貫しない時間ステップで起こるイベント
下の図で具体例を見てみましょう。
図3. 定期的な時系列データ(日ごとのデータが存在している)
図4. 半定期的な時系列データ(日曜日・祝日が存在しないなど)
図5. 不定期的な時系列データ(ランダムに多くのデータが欠損)
DataRobotの時系列モデリングでは上記の全ての時系列データに対応していますが、不定期的なデータでは行ベースの予測が行われます。
行ベースの予測だと次にイベントが起こる際の値は予測できますが、それがいつ起こるかは予測できません。(例:過去の地震の大きさから次回の地震の大きさを予測。ただ次回の地震がいつ起こるかは予測できない。)
図6. 不定期的なデータで時間認識モデルを選択した画面
【複数時系列】時系列対応データ
複数時系列の場合には、各系列の時系列が以下のように不揃いであっても構いません。
以下の例の系列2や系列3のようにデータが途中までしかない、あるいは最初の時点のデータがない場合も対応可能です。系列4のような不定期なデータセットには行ベースのモデリングを行います。系列5のように過去のデータがまったくない時系列の予測にも対応していますが、その場合には精度に注意が必要です。
図7. 複数時系列データのパターン