Alteryx Predictive Master資格取得を目指すシリーズです。
Alteryxの時系列予測モデルは、「時系列」カテゴリにあります。
モデルとしては、
- ETS(指数平滑法)
- ARIMA(自己回帰和分移動平均モデル)
の2種類を利用可能です。
基本的には、売上などのある項目と時間のデータから、時間経過と過去の状態から未来の状態を予測するのが時系列予測です。通常の「予測モデル」は、数多くの予測変数からある予測変数のときの値を予測するものですが、時系列予測は、過去の値の動き方(周期性、トレンド等)から未来を予測します。
時系列予測は、オートでできるオプションが存在するためとりあえずデータを突っ込んでみて、というレベルで使うことはできますが、過去のターゲット変数のパターンから予測しているので、精度的に長期の予測に向いていないのと、通常の予測モデルと異なりモデルを保存して使うのではなく、常に最新のデータを使って毎回学習してから予測する、といった形になるので、計算に若干時間を要します。
時系列予測の行い方
それでは、時系列予測を行ってみましょう。基本的には、
- データ準備
- 学習用データと検証用データに分割
- 各モデルで予測
- モデル比較
- 精度の良いモデルで予測
といった順序で行います。ただし、通常の機械学習と若干違いが有り、最終的な予測は4までで実施したモデルは使わず、新たに学習させる必要があります(通常の機械学習は4までで実施したモデルをそのまま5でも使います)。
1.データ準備
データの制限について
時系列予測で使うデータについては、以下の制限があります。
- 時系列的に古いデータが上、新しいデータが下(時間で昇順に並び替えましょう)
- ターゲット変数は数値データであること
- 単位はもちろん揃える
- 単一のフィールド(ただし、ARIMAには共変量予測というオプションがあります)
時系列予測のデータクリーニング
時系列予測で使うデータは以下のような内容でクリーニングを行う必要があります。
- 外れ値は悪影響を及ぼします。取り除いて適切な値を入れましょう。
- レコードの時間間隔は同じにする
- 時間の欠けがあれば、時系列フィルツールでレコードを補完する。
- ターゲット変数がNullの場合、前後の値を使って複数行フォーミュラツールで平均値を入れるなどする
レコードの時間間隔のチェックおよび補完方法
レコードの時間間隔が一定になっているかどうか、というのは非常に重要です。これをチェックするのに一番簡単な方法は、「時系列フィル(Time Series Fill)」ツールを使うことです。
これは、自分が想定している時間間隔を指定すると、不足していれば自動的に生成してくれるツールです。
という設定と、以下のようなインプットに対して処理を行ってみましょう。この入力するフィールドはDateもしくはDateTime型である必要があります。
結果として、以下のようなアウトプットが得られます。「OriginalDateTime」がNullになっているところ、「FlagGeneratedRow」という項目がTrueとなっており、このツールによって生成されたことがわかります。
また、3/15は強制的に3/1として処理されています。
しかしながら、生成された行はもともとあった値がNullのままになるので、平均値や前後の値から生成した値など、何かしら補完を行う必要があります。
2.学習用データと検証用データに分割
他の機械学習と同様、学習用データと検証用データに分割する必要があります。
機械学習の場合は、サンプル作成ツールで行っていましたが、時系列予測の場合は、フィルターツールを使います。データ分割を行いやすくなるよう、レコードIDツールでIDをつけた後、フィルターツールで指定したID以前、以後という形でデータ分割すると楽です。
基本的にはやりやすい方法で行えばよいかと思います。
3.各モデルで予測
各モデルの概要は以下のとおりです。
ETS(指数平滑法)
英語ではExponential Smoothingと呼ばれる手法ですが、ETSはError Trend Seasonalityの略です。
過去のデータのうち、新しいデータに重みをおき、過去データには、古いほど指数関数的に影響が少なくなるようなウェイトをかけて移動平均を計算し、将来を予測するモデルです。
なお、最近のデータに依存するパターンを持つデータに向いています。
詳細はこちら「Alteryxの時系列予測モデルETSを読み解く」。
ARIMA(自己回帰和分移動平均モデル)
ARIMAは、英語では「AutoRegressive Integrated Moving Average」という長ったらしい名前の頭文字を取って「ARIMA」となっています。これの原型となるのが、AR(自己回帰)、MA(移動平均)モデルで、これを組み合わせて一般化したモデルがARIMAです。
季節性の強いデータに向いています。
また、ARIMAモデルは、共変量(Covariate)を用いた予測が可能です。これは、一種の特徴量を用いた予測です。共変量を用いてモデルを作成した場合は、予測する際に時系列共変量予測ツールを用いる必要があります(また、時系列比較ツールは使えません使えます)。
詳細はこちら「Alteryxの時系列予測モデルARIMAを読み解く」。また、共変量予測はこちら「AlteryxのARIMA共変量予測を行う」を御覧ください。
4.モデル比較
モデル比較は、時系列比較(TS Compare)ツールで行います。ワークフローは以下のようになります。
使い方のポイントは以下のとおりです。
- モデル比較ツールのL入力には、モデルをユニオンツールでまとめたものを入力する
- モデル比較ツールのR入力は、比較したいデータを入力する。この時、フィルターツールで分割した検証用データを使用する
※入力がL、Rという記載になっているので正直どちらに何を入れたらいいか、直感的にわかりにくいです。が、最新版ではテレコになっても問題ありません(Rのコード内で解決されています)。古いバージョンだとLがモデル、Rがデータです。※2023/11/23更新
レポートとして、以下のようなものが出力されます。
- RMSE/MAEはターゲット変数のスケールに影響を受けます(値が大きいとエラーも大きく見える)
- パーセントでエラーを定義するMPE/MAPEは、異なるターゲット変数を持つモデルとの比較が可能です(解釈のしやすさ、Nega/Posiエラーの扱いに問題がある場合がある)
- MASEはスケール化されているので、外れ値の影響を受けにくいです
- いずれにしても、RMSE/MAE/MAPE/MPE/MASEなどの指標は値が低いのが良いモデルとなります
今回のサンプルであれば、全体的に値が小さいETSが良好な予測結果となっています。
その他、それぞれのモデルの予測値と実測値をグラフ化したものも出力されます。
黒色部分が実測値で、青色がこのサンプルではETSの予測結果、オレンジがARIMAの予測結果となります。なお、これの予測比較のテーブルデータも出力されます。
5.精度の良いモデルで予測
4で比較した結果、ETSが良さそうでしたので、ETSで予測していきましょう。
さて、最初に述べた通り、3で作成した学習済みモデルはここでは使えません。
その理由を解説すると、例えば元のデータが2010年~2020年だったとします。ステップ2で検証用データと学習用データに分割しますが、ここで学習用データを2010年~2019年とし、検証用を2020年のデータとして分割したとします。ステップ3では、2010年~2019年のデータしか学習していないため、1年分のデータが欠落してしまいます。時系列予測は直近のデータの傾向の影響を受けるため、最も直近である2020年のデータを入れるべきです。このような理由で、再度2010年~2020年のデータでモデルを作り直した方が、最終的な精度は保たれるはずです。
さて、今回はETSを使うことに決定しているため、改めてETSで学習させます。ポイントは、フィルタツールの前にある全データで学習することです。
この時、モデル比較を行っていた部分はすでに結論が出ているので無効化することをおすすめします。
そして、上のワークフローで予測まで行っていますが、予測は「時系列予測」ツールを使います。
時系列予測の場合は、モデルのみ入力します(通常の機械学習と異なり、データを入れる必要はありません)。オプションとしては、実質予測する期間のみとなります(「予測する将来の期間数」が良くする期間)。
これにより、各出力から以下のような出力が得られます。
O出力
予測値が出力されます。
R出力
レポート出力ということで予測した結果をグラフにしたものとO出力に出てきたデータもテーブル形式で再度出力されます
I出力
インタラクティブ出力は、ズーム等が可能なグラフで出力されます。
大量の時系列予測をする場合
複数のアイテムがあり、それぞれに対して時系列予測をする場合、バッチマクロを使えば一気に予測をすることが可能ですが、内部的にRを何度も起動するため時間がかかります。このような場合は、Galleryに公開されているマクロを使うことで効率的に予測が可能です。
TS Model Factory
各グループごとにモデルを作成します。
TS Forecast Factory
TS Model Factoryで作成した大量のモデルに対して予測を行います。
参考
インタラクティブレッスンですが、まだ英語版しかありません。
1時間程度の時系列予測を解説するビデオです(英語)。
時系列予測のチュートリアル的なブログです。
サンプルワークフロー
Designer 付属のワークフローがあまり良くないので、改めて見本的なサンプルワークフローとしてアップしておきます。
コメント