Alteryxで時系列比較した分析モデルを自動判定するワークフローを組んでみた
アルテリックス?アルタリクス?どちらでもわたしは一向にかまわんッッ!の國崎です。
今回はAlteryxで2つの時系列モデルを比較して精度の高いモデルを自動判定するワークフローを組んでみます。
毎回「時系列予測モデル」の判定を目視で行っている方は、ぜひ今回のワークフローを使ってモデルの自動判定を活用してみてください。
本記事はこんな方におすすめ
- Alteryxで時系列分析を使っている
- 「ARIMA」と「ETS」の比較を目視で行っている
今回のワークフローはAlteryxの時系列分析について、ある程度理解を持っている方向けの記事になりますので、基本的なツールの使い方から学びたい方は以下記事を参照ください。
今回用意したデータとゴール
今回用意したデータはあるECの2012年~2017年の注文データになります。
以下のような感じのカラムが入っています。
今回のデータでは2017年までしかないですが、時系列分析をして2018年の売上推移を月別に出すのをゴールとします。
またその売上推移を出すのにあたり、「ARIMA」と「ETS」のモデルを使いますが、精度の高い方のモデルを自動判定して出力します。
今回作ったワークフロー
時系列分析は大まかに以下の流れで行われます。
- 時系列分析するためのデータ整形
- 既存データの一部を使って分析モデルの比較
- 比較した内容を基に精度の高い分析モデルを判定
- 判定された予測モデルに全データを流し込み分析
- 指定した期間の予測分析を出力
各ブロック毎にどういった処理を行っているか解説していきます。
時系列分析するためのデータ整形
こちらのブロックでは投入したデータを時系列分析するための整形をします。
今回出力したい最終的なデータが月別の売上推移になるので、フォーミュラーに以下関数式を書いて日別で入っているデータから年月のデータを新たなカラム「YearMonth」に抽出します。
DateTimeFormat([O_ORDERDATE],"%Y%m")
集計で必要なフィールドのみに絞ります。
時系列分析では「時系列のフィールド」と「予測分析したいフィールド」があれば予測分析ができます。
そのため年月のフィールドである「YearMonth」のグループ化、各レコード毎の売上のフィールドである「TOTAL_PRICE」を年月毎の合計金額にまとめます。
出力されたデータを直近の時系列順に並び替えて、各レコードにIDを割り当てます。
既存データの一部を使って予測モデルの比較
フィルターを使って【直近1年以外を分析モデルの学習データ】【直近1年を学習データの予測と比べる実測データ】の2つに分けます。
この分岐に割り当てたレコードのIDを活用します。
フィルターで振り分けた後は時系列の古い順に並び替えて、【「ETS」「ARIMA」の分析モデルに流した予測データ】と【直近1年を学習データの予測と比べる実測データ】を「時系列比較」で比べます。
以下は時系列比較のRで出力される正解率測定です。
通常はこの正解率測定で各指標を比較し、どちらの分析モデルが優れているかの判定をします。
しかし、今回はこの判定を自動判定で判断できるようにするのが目的なので、この出力Rは無視します。
精度の高い分析モデルを判定
時系列比較のOから出力されるデータを整形し、各指標の判定を行います。
ここで計測する指標は以下の見解になります。
- ME…平均誤差。正または負の誤差の平均。値がゼロに近いほど良い。
- RMSE…平均二乗誤差の平方根。値が小さいほど精度が高い。
- MAE…平均絶対誤差。正または負の誤差の平均。値が小さいほど良い。
- MPE…平均パーセント誤差。正または負の誤差の平均。値がゼロに近いほどバイアスが少ない。
- MAPE…平均絶対パーセント誤差。予測誤差の絶対値のパーセントを平均したもの。値が小さいほどモデルの精度が高い。
- MASE…平均絶対スケール誤差。値が1未満であれば、モデルの予測は単純なベースライン予測より優れている。
細かい説明は割愛しますが、指標の判定については「ME」「MPE」はゼロに近く、それ以外は値が小さい方が良い予測モデルと判断できます。
この判定を自動でするために5つのツールを以下のように設定しデータを自動判定できるように整理していきます。
転置
クロスタブ
フォーミュラ
if [Name]="ME" or [Name]="MPE" then IIF(ABS([arima_price])<ABS([ets_price]),1,0) else IIF([arima_price]<[ets_price],1,0) endif
集計
フォーミュラ
IIF([Sum_chk]>=3,"arima_price","ets_price")
指標は6つのため3:3で優劣がつかない場合があります。
その場合は広範囲に利用される「ARIMA」のモデルを優先して判定するようにします。
今回の結果では「ARIMA」が精度の高いモデルと判定されました。
判定された分析モデルに全データを流し込み分析
予測モデルの比較をする前の全データを2つの予測モデルに流し込みユニオンで結合します。
「ユニオンで結合した予測データ」と「自動判定で出力されたモデルのデータ」を結合ツールで結合します。
結合ツールから出力されるデータをセレクトにつなぎ、時系列予測につなげるためのフィールドを抽出します。
指定した期間の予測分析を出力
時系列予測につないだデータを閲覧で可視化します。 今回予測モデルで精度が高いと判定された「ARIMA」の予測データが出力されます。
Oから出たデータ
Rから出たデータ
Iから出たデータ
以上がAlteryxで精度の高い分析モデルを自動判定して出力するワークフローの案内になります。
これができたら毎回目視で分析モデルを判定しなくてもいいね!!