Googleアナリティクス：時系列予測のアルゴリズムProphetを使ってページビュー数を予測する

![p1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/9b033db1-1458-6e34-9780-7d4aec3816f0.png)

# Googleアナリティクス：時系列予測のアルゴリズムProphetを使ってページビュー数を予測する


Webサービスやeコマースを運営していると、特定の指標が将来上がるのか下がるのかが重要となることはよくあります。

例えば、将来のWebサイトのページビュー数を予測することができれば、Webサーバーのリソースを管理するIT部門では、ビジネスの成長を犠牲にしない範囲でWebサーバーのリソースをコントロールして、コストを最適化できますし、マーケティング部門ではビジネス上のターゲットの達成に向けてアクションを最適化することができます。

このように**将来を予測することが、様々な部門のビジネスの意思決定に役に立つ**ということはよくあることです。

そこで今日は[リクルートテクノロジーズ](https://www.atmarkit.co.jp/ait/articles/1906/07/news004.html)や、[SmartHR](https://qiita.com/t_kano/items/747fc067074b3f4e5c98)など日本の企業でも活用ケースが増えている、**Facebookがオープンソースしている時系列予測アルゴリズムのPropehtを予備知識なしで利用**して、Googleアナリティクスに蓄積されているデータから将来のページビュー数を予測する方法について紹介します。


# Prophetの特徴

Prophetの特徴は統計や時系列予測の専門知識がなくても、以下を考慮したモデルを簡単に作成できることにあります。

- 大局的な成長トレンド
- 年周期の季節性 (Seasonality)
- 週周期の季節性 (曜日による影響)
- 祝日効果 - クリスマス, 新年,みどりの日, etc. 


# Prophetで時系列予測のモデルを作成するステップ

今回は[Exploratory](https://ja.exploratory.io/?utm_campaign=ga_prophet&utm_medium=blog&utm_source=qiita)を使って、以下のステップで時系列予測のモデルを作成して、予測結果を可視化していきます。

1. ページビュー数の取得
2. モデルを作成して、ページビュー数を予測する
3. 作成したモデルからトレンドや周期性などの特徴を理解する

# 1. ページビュー数の取得

それでは早速、Google アナリティクスからデータを取得していきます。Exploratoryで新規プロジェクトを作成したら、データフレームの横にある+（プラス）ボタンをクリックして「クラウドアプリケーションデータ」を選択します。

![p2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/ce2fc8b0-750a-1519-2b8c-4e0561aa558c.png)

- ExploratoryとGoogle アナリティクスの接続方法 - [Link](https://docs.exploratory.io/import/google-analytics-ja.html)

続いてクラウドアプリケーション・データソースからGoogle Analyticsを選択します。

![p3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/9b611cb5-d394-fd03-5e46-235b8571910e.png)

するとGoogle アナリティクスのデータ・インポート・ダイアログが表示されるので、データを取得するアカウント、プロパティ、ビュー、セグメントを選択します。

![p4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/d85b0c02-601e-17ab-bcdc-e1751346dbff.png)


続いてデータを取得する期間を設定します。今回は2016年1月1日からのデータを取得して、2020年1月1日以降のページビュー数を予測していきたいので、期間に「この日より後」を選択し、日付を「2016-01-01」に設定します。

![p5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/e28bf33b-e901-3cb1-c7a4-f979badde175.png)

続いてページビュー数の取得です。<!-- Googleアナリティクスでは「ページビュー」という指標があらかじめ用意されているので、そちらを使っていきます。-->

Prophetは時系列の予測を行うモデルなので、ディメンションに「日付（Date）」を選択します。次に指標から「ページビュー数（Pageviews）」を選択し、実行ボタンをクリックします。

![p6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/e7ef7cb0-ed32-5214-3e1c-0dc2734fea83.png)


すると2016年01月01日以降の日ごとのページビュー数がプレビュー画面に表示されるので、保存ボタンをクリックします。

![p7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/3086f464-8721-82f7-2dfe-c5da44ea5b60.png)


続いてデータフレームの名称設定ダイアログが表示されるので、今回は「pageview」という名前にして、作成ボタンをクリックします。
これでデータの取得は完了です。

![p8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/d59c134c-0ab1-163d-b9d7-be62b34a28aa.png)

このまま予測モデルを作成しても良いのですが、どのような特徴をもつデータなのかを理解するためにチャートで可視化していきます。チャートビューに移動して、チャートタイプに「ライン」を選択します。続いて、X軸に「date（日付）」、Y軸に「pageview（ページビュー数）」を選択します。

![p9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/91adab01-4168-17c6-f0f3-b5324c3ca873.png)


続いてX軸のスケールの丸め処理から「週」を選択します。

![p10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/1195be7c-1734-e5d4-9f3f-837c012d2cb6.png)

これで週ごとのページビュー数が可視化できました。

![p11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/90586777-9d9c-5c88-86a5-8576b5943147.png)

こういったチャートからでも長期的にページビュー数が増加していることは分かりますが、同時にページビュー数が直線的に増え続けているわけではなく、複雑な動きをしていることが分かります。そのため翌週のページビュー数がどうなるのか、さらにその翌週はどうなるか、ということをチャートから読み解くことは簡単ではないわけです。

![p12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/2a1a79f6-9cb8-c5dd-05ec-2bbc7009e80b.png)

では実際にProphetを使ってこのように複雑に上下する指標を予測してみましょう。

# 2. 予測モデルを作成する

まずはアナリティクスビューに移動します。タイプから「時系列予測（Prophet）」を選択し、日付/時間の列に「date」を選択します。続いて、値の列に今回予測したい「pageviews」を選択します。

![p13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/73e06057-7876-1856-4bd9-c6b5a0cdcb1a.png)

今回は週ごとのページビュー数を予測していきたいので、「date」のスケールに「週」を選択します。準備はこれで完了です！
実行ボタンをクリックします。

![p14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/e00b70af-5d75-ac5c-8716-e5af11f7f4a8.png)


# 3. 作成したモデルからトレンドや周期性などの特徴を理解する

実行ボタンをクリックしたら、予測結果タブに移動します。ページビュー数の実績値が青色、予測値のForecasted Valueがオレンジで可視化されています。


![p15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/651d0665-9b70-f5f3-0725-dc181288ec3c.png)


またチャートの右端にマウス・カーソルを合わせると、今回は2020年3月8日までの予測となっていることが分かります。

![p16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/8912b6ce-56fb-9a3b-f689-48259d8e94c3.png)


これはデフォルトの予測期間が「10」となるためです。今回は「週ごと」のページビュー数を予測しているため、「10週間後」までのページビュー数を予測していることになります。より短い期間や長い期間での予測を行いたい場合はプロバティから予測期間を変更することで、自由に増減させることが可能です。

実際にやってみましょう。プロパティ・アイコンをクリックして、予測期間を1年間である「52」週間にして、適用ボタンをクリックします。


![p18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/83122902-0ae5-84a8-ead7-5acebe54d94c.png)


すると、1年先まで予測できていることが分かります。

![p19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/694a4502-9a75-2aed-bd75-74d85b7732e3.png)

ここで面白いのは例えば2月、３月にページビュー数は下落し、6月にかけて増加、11月にピークを迎える、といったように複雑な季節性や周期性を考慮した予測が作成されていることです。


![p20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/fb20c53e-a655-582d-b844-dc920af72364.png)


これは冒頭で紹介したように、Prophetが以下の情報をデータから抽出し、予測モデルを作成するからなのですが、モデルを作成するときに利用したそれらの特徴を個別に確認することも可能です。

- 大局的な成長トレンド
- 年周期の季節性 (Seasonality)
- 週周期の季節性 (曜日による影響)
- 祝日効果 - クリスマス, 新年,みどりの日, etc. 

まずはトレンドを確認してみましょう。「トレンド」タブに移動して、緑のラインを確認するとトレンドがどのように変化しているかが確認できます。

![p21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/862aceca-dfb0-615e-ed31-0d66cbbb7429.png)

今回のチャートからは、ページビュー数が増加トレンドにあること、さらに2018年の年末以降、その傾きがさらに急になってることから、ページビュー数の増加トレンドがより大きくなっていることが分かります。

さらに緑のバーは、トレンドに変化があった時点（チェンジポイント）を表しています。


![p22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/5868aa4d-5fc3-922b-1595-dfe67a86bbfe.png)


2018年10月21日週の前後にトレンドに変化があったことが分かります。

続いて「年周期」タブをクリックすると年周期のチャートが表示されます。

![p23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/4bd3dc9d-02ad-3ee3-744c-1f2c40bd050c.png)

このチャートからはページビュー数は2月の下旬および、7月の初旬に下落する傾向があり、11月初旬にピークを迎えることが読み取れます。


週の周期のトレンドが知りたいときは、「日ごと」の予測モデルを作成する必要があります。日付/時間の列のスケールで「日」を選択し、実行します。


![p25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/4b69df51-1116-b49c-b68d-1fe12eff27f9.png)


すると「週周期」のタブが表示されます。

![p27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/2962afe2-189a-f36a-0d71-7bcd60c1ef7b.png)


土曜と日曜、つまりは週末にかけてページビュー数が減少する周期性があることが確認できます。

# より精度の高い予測モデルを作成する

さらに、より予測の精度を高めるために、祝日を考慮したモデルを作成することや、例えば国といった、カテゴリごとにモデルを作成することも簡単にできます。

他にも作成したモデルにどの程度の信憑性があるのかを理解するためのテスト・モードという機能もあります。

これらの詳しい機能については、[オンライセミナー](https://exploratory.io/online-seminar-jp/?utm_campaign=ga_prophet&utm_medium=blog&utm_source=qiita)やこちらの[インサイトページ](https://exploratory.io/insight?q=prophet&language=ja&utm_campaign=ga_prophet&utm_medium=blog&utm_source=exploratory)でも紹介していますので興味がある方は是非ご参考ください！

# 自分のデータで実際に試してみる

[Exploratory](https://ja.exploratory.io/?utm_campaign=ga_prophet&utm_medium=blog&utm_source=exploratory)では30日間、無料でトライアルができます。実際に自分達のデータを使って試してみたい方は下記より無料トライアルをご利用ください！

![p32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/47ae87f1-29f4-1a44-4e87-4ca2391a2417.png)