ExploratoryでProphetを使って時系列予測してみた(前編)

ff31a937e792035dcf5dd7c166d976b8_m

こんにちは。truestarの田中です。

Exploratoryで新たに使用できるようになったProphetを使った時系列予測機能がとっても簡単に使えたので、

二回に分けて、どんなことができるのかご紹介いたします。

  • 1回目(今回):ExploratoryでProphetを使って時系列予測してみた(前編)-モデル作成篇
  • 2回目(次回):ExploratoryでProphetを使って時系列予測してみた(後編)-モデルの精度を上げよう篇

想定読者

  • Prophetに興味あるけど、R,Pythonが使えないから諦めた方
  • モデリングに時間はかけてられないけど、すぐに精度の高い予測結果を出さないといけない方
  • とにかく時系列予測をやらなければいけないが、どこから手を付けていいかわからない方

本投稿でお伝えできること

  • Exploratoryで時系列予測をする方法

本投稿でお伝えできないこと

  • そもそもProphetとはなにか ※facebook(https://facebook.github.io/prophet/)
  • データの読み込みといった基本操作方法

※ちなみに、一般的にProphetはRやPythonでパッケージをDLして使用します。Exploratoryも裏でRが動いていますがコードを書く必要がないので皆さん利用できます。

 

簡単にProphetの利点をご紹介

今回は、家具の日別売上データを使用して売り上げ予測をしたいと思います。

”売り上げ”のような数値の予測はビジネスにおいても特に重要である一方で分析の難易度は高く課題としてる方も多いのではないでしょうか。

数値の予測が難しい背景には、数値の裏にあるビジネス上の要因、季節性、周期性、トレンド、、、といった様々な要素があり

これらをビジネス知識に基づき”チューニング”しなければならず、時系列予測アルゴリズムにもビジネスにも強い必要がある、ということで非常に難易度が高くなっています。

Prophetの特徴はいろいろありますが、データサイエンティストのような時系列予測の知識や、細かなチューニングができなくとも

ビジネス上重要なイベント、季節性、周期性、トレンドなどを含めて時系列予測モデルを作れる(しかも高精度)という点が注目される所以となっております。

 

【従来の時系列モデル】

  • データ間の時間的間隔はデータ通して一定である必要がある(この月はデータがないな、、、は許されません)
  • 値がNA(欠損値)となる日があってはなりません
  • 複数の周期性(週と年など)を同時に扱うのは難しい
  • パラメーターの設定に専門的知識が必要

これだけでも相当準備してデータを取得していかないと時系列予測はできないことがわかります..。

【Prophetでの時系列モデル】

  • データ間の時間間隔が一定である必要はない
  • 値がNAとなる日があっても問題ない
  • 複数の周期性(週と年)がデフォルトで考慮される
  • 設定可能なパラメーターはほとんど専門知識なしで理解可能

やさしさの塊のような内容になっています。実際、社内のデータ等、時期も揃い欠損もない、なんてことの方が少ないのではないでしょうか。

その点で、Prophetによる時系列予測は実務家向きといえるでしょう。

 

データの特徴を把握する

さて前置きが長くなりましたが、さっそくデータを取り込んでみました。

まずデータの特徴を把握をしましょう。売り上げの推移が今回の目的変数であるため、折れ線グラフでみてみましょう。

ひとまず粒度は月別で全体的な動きをみます。

【操作手順】

  • チャート > タイプ=ライン > X軸「Order day」(粒度はMONに) > Y軸「Sales」

なんとなく、11月12月に売り上げが上がる傾向がありそうです。そしてトレンド自体は緩やかに右肩上がりですね。

この売り上げデータを時系列予測する場合、やはり周期性は考慮すべきなようです。

では、さっそく2019年11月以降、売り上げがどうなっていくか予測してみましょう

時系列予測の手順

【操作手順1】:ひとまず向こう1年間の予測をしてみよう

  • アナリティクス > タイプ=「時系列予測(Prophet)」 > 日付/時間の列=「Oder Date(粒度はMONに)」 > 値の列=「Sales」 >
  • 操作パネル右上歯車マーク > 予測期間=「12」(カ月) > 適用 > 実行 

  • 青枠内=不確実性区間のためのシミュレーション:不確実性区間を決定するために行われる計算の回数です。デフォルトで1000です。青枠内はひとまずこのままで

 

予測結果の確認

【結果の読み方】

  • 青ライン=実測値、オレンジライン=予測値、薄いオレンジ=不確実性区間※
  • ※不確実性区間:デフォルトでは80%に設定されています。80%の確率でデータが収まる範囲が薄オレンジで示されています。

はい、もうできました。設定した未来の12か月間も予測されています。ではこの予測値どうやって算出されているのか見てみましょう。

トレンド

トレンドを選択してみました。全体的なトレンドライン、トレンドの変わる変化点(Trend Change)が表示されます。

全体的なトレンドは右肩上がり、またこの会社または市場で2017年10月にトレンドの変化があったことがわかります。次に周期性を確認してみましょう

年周期

年周期は毎年繰り返している特徴と考えてください。この会社ないし市場では、3月、9月、11月に売り上げがあがり、

全体的にみると、1年の後半で売り上げが上がるとう特徴があるようです。(なんでしょうか引っ越しシーズン??)

このトレンドと年周期を足し上げたのが予測結果でみた予測値(オレンジライン)になります。※効果ページでは予測値はグレーで表示されています。

このように、デフォルトの設定(トレンド、周期性)だけでもそれなりに時系列予測ができるのがProphetの強みかと思います。

しかし、再度「予測結果」の予測値と実測値を見てください。

まだまだ両者の間に乖離がある上、不確実性区間も広くなっており予測精度に不安があります。

次回はモデル精度を検証しながら、よりよいモデルづくりをしてみよう!という内容です。

次回「ExploratoryでProphetを使ったで時系列予測してみた(後編)」(https://blog.truestar.co.jp/exploratory/20200601/39527/

もどうぞよろしくお願いいたします。