このノートは、日付や時間に関連するデータの可視化や分析に関するExploratoryの機能を効率的に手を動かしながら体験していただくために用意された「時系列データ分析」のトライアルツアーの第3弾、「時系列予測モデルを使った分析」編となります。
Exploratoryでは、時系列データを分析するための様々なアナリティクスがサポートされていますが、今回はProphetというアルゴリズムを使った時系列予測モデルを使い、データの中にあるトレンドを分析してみましょう。
所要時間は20分ほどとなっています。
それでは、さっそく始めていきましょう!
今回使う「時系列予測(Prophet)」は、元Facebookのデータサイエンティスト、Sean J. Taylor氏と彼のチームがが作成しオープンソースとして公開された最先端の時系列予測アルゴリズムです。他の時系列予測アルゴリズムと違い、統計学や時系列予測の専門知識がなくても簡単に使えるようにデザインされているのが特徴です。
例えば、月ごとの売上の推移を可視化したラインチャートがあったとします。このデータは2017年から2020年までの4年分のデータがあります。
4年分のデータ(実測値)にある傾向をもとに、Prophetを使って将来の売上を予測をすることで、2021年の売上がどうなるのかを予測値として求めていくことができます。
今回は「時系列データ分析 Part1 - 時系列データの加工と可視化編」で使ったデータと同じデータを使います。まだインポートされてない方は、こちらから直接データをダウンロードできます。データのインポートに関する詳細は「時系列データ分析 Part1 - 時系列データの加工と可視化編」をご覧ください。
注文日のデータ型を見てみると、カテゴリー型(character)になっているため、「日付型(Date)」に変換する必要があります。
注文日の列ヘッダメニューから「データタイプを変換」を選択します。
次に、「Date(日付) / POSIXct(日付時間)タイプに変換」を選び、年月日を表す「Year, Month, Day」を選択します。
計算を作成のダイアログが表示され、「Year, Month, Day」の頭文字をとった「ymd」関数が既に指定されていることが確認できます。他に設定をする必要はないため、「実行」ボタンをクリックします。
注文日の列を日付型(Date)に変換することができました。
日付型(Date)や日付/時間型(POSIXct)への変換についての詳細は、「時系列データ分析 Part1 - 時系列データの加工と可視化編」の「3. 日付型 、日付/時間型に変換する」のセクションをご確認ください。
今回は月ごとの「売上」を予測するProphetのモデルを作成します。
アナリティクス・ビューを開き、タイプに「時系列分析」の「時系列予測(Prophet)」を選択します。
日付/時間に「注文日」の列を割り当て、日付の単位には丸め処理の「月」を選択します。
予測対象の値に「売上」を選び、集計関数に「合計値(SUM)」を選択します。
予測期間はデフォルトでは10が設定されていますが、プロパティから変更できます。日付/時間で選んだ単位が「月」の場合、予測期間が10の場合は10ヶ月後までの予測となります。
今回は1年後(12ヶ月後)までの予測としたいため、予測期間に「12」を指定してみましょう。
12ヶ月後の売上を予測する、Prophetのモデルが作成されました。
「予測結果」タブでは、Prophetで算出された予測値と実測値がラインチャートで可視化されます。
青の線は実測値を表しています。
オレンジの線は予測値を、淡いオレンジ色の幅は予測の不確実性区間(uncertainty interval)を表します。
オレンジ色の線だけの区間は今後1年間(12ヶ月後)の予測を表しています。
例えば、2021年の6月の予測値は約523,300ドルということがわかります。
トレンドタブでは、トレンドラインとそのトレンドの変化点がチャートとして表示されます。
緑の線がトレンドラインになります。
赤いバーはチェンジポイントでのトレンドラインの傾きの変化量を表します。
年周期タブでは、年周期の季節性のチャートが表示されます。ちなみに、年周期は日付の期間が2年以上ある場合のみ適用されます。
毎年、6月以降の売上は、5月以前に比べて売上が高い傾向があることがわかります。しかし、7月と10月は売上が落ち込んでしまうようです。
影響度タブでは、予測値を構成する各要素(トレンド、季節性)が表示されます。
サマリタブでは、この予測モデルの評価を確認できます。
表示される指標は下記の3つになります。
この予測モデルのRMSEをみると、売上の予測値は、平均して18,355ドルほどのずれがあるようです。MAPEは0.0669のため、平均して6.7%ほどのずれがあることになります。
マーケットごとに「売上」を予測するProphetのモデルを作成したいとします。
繰り返しに「マーケット」を選択します。
マーケットごとにProphetで売上を予測することができました。
Y軸が同期されているために、売上が高いアジアに合わせてY軸が作られています。その影響で、アフリカのラインが見づらくなっています。
それぞれのマーケットごとに売上のレンジ(Y軸)は異なるため、Y軸を同期のチェックを外します。
マーケットごとに、売上のレンジに合わせてY軸が設定されました。
アジアとヨーロッパは売上の実測値と予測値がフィットしているように見えます。
サマリタブでRMSEをソートすると、アジアが最もRMSEが高く、平均して9700ドルほどずれているということがわかります。
しかし、マーケットごとに売上のレンジは異なり、アジアは最も売上が高いマーケットの一つでした。そこで、実測値のずれであるRMSEで比較するのではなく、ずれを割合として比較ができるMAPEでソートをしてみましょう。
MAPE(ずれの比率)で見ると、アフリカが最もずれの割合が大きく、24.5%ほどずれていることがわかります。一方で、他のマーケットのずれの割合は12%から15%ほどで収まっているようです。
時系列データ分析の「時系列予測モデルを使った分析」編は以上となります!
時系列データ分析の他のパートには下記のリンクからご確認いただけます。