AutoML Tables を用いた離脱ユーザーの予測

Keiji Yoshida
google-cloud-jp
Published in
15 min readMay 1, 2020

はじめに

この記事では、BigQuery のテーブル データをもとに予測モデルを構築できる AutoML Tables を用いて、過去のユーザーの行動履歴にもとづいて将来的な離脱ユーザーを予測し、かつ、その離脱の要因として考えられそうなものを把握する方法の一例をご紹介します。

* AutoML Tables は、現在ベータ版として提供されています。

使用するデータ

この記事では、Firebase イベント データの BigQuery 公開サンプル データセットを用いて、AutoML Tables で離脱ユーザーを予測するモデルを構築します。このデータセットには、モバイル用のパズル ゲーム アプリケーション「Flood-It!」の、Firebase イベントのサンプル データが格納されています。このデータの詳細については、「Firebase イベント データ分析のための Google Cloud 活用方法 (1) Firebase イベント データのスキーマ」をご覧ください。

作業手順

この記事では、以下の手順で作業を実施します。

  1. AutoML Tables で使用する BigQuery のテーブルの作成
  2. AutoML Tables での離脱ユーザー予測モデルの構築
  3. 離脱ユーザーの予測
  4. 離脱の要因として考えられそうなものの把握

予測モデルの構築方法と予測方法

この記事では、「離脱ユーザー」を「1 週間アプリケーションを起動しなかったユーザ」と定義します。各ユーザーについて、ある 1 週間の行動履歴にもとづいて、その次の 1 週間に離脱するか(=全くアプリケーションを起動しないか)を予測するモデルを構築します。

今回使用する Firebase イベント データの BigQuery 公開サンプル データセットでは、2018 年の第 24 週 (6/17 ~ 6/23) から第 38 週 (9/23 ~ 9/29) の各週について、1 週間全体のユーザーの行動履歴(Firebase イベント データ)が存在します。

予測モデルの構築では、第 24 週から第 36 週の各週のユーザーの行動履歴と、「その翌週に離脱したか否か」という情報を使用します。各週のユーザーの行動履歴から「その週に、どのような行動を取ったのか」という情報(特徴量:構築するモデルの予測のもととなる入力値)をユーザー単位で集計し、また、その翌週のユーザーの行動履歴から「翌週に、各ユーザーは離脱したか」という情報(目的変数:構築するモデルが予測する値)をユーザー単位で集計します。例えば、「第 24 週に各ユーザーは、どのような行動を取ったのか。そして、それらのユーザーは、その翌週である第 25 週に離脱したのかどうか。」というようなことを表現するデータを用意します。このようなデータをもとに、予測モデルを構築します。

予測モデルの構築方法

構築したモデルにもとづく予測では、第 37 週のユーザーの行動履歴を特徴量として使用します。第 37 週の各ユーザーの行動履歴をもとに、それらのユーザーがその翌週である第 38 週に離脱するかどうかを予測します。

構築したモデルにもとづく予測方法

最後に、その予測結果と、第 38 週の実際のユーザーの行動履歴を照らし合わせて、どのくらいの精度で離脱ユーザーを予測することができたのかを評価します。

1. AutoML Tables で使用する BigQuery のテーブルの作成

BigQuery Web UI で SQL を記述して実行し、AutoML Tables での予測モデルの構築時に使用する BigQuery のテーブルを作成します。SQL の基本的な書き方については、「Firebase イベント データ分析のための Google Cloud 活用方法 (2) SQL の基礎」をご覧ください。

BigQuery Web UI で以下のクエリを実行し、AutoML Tables で使用する BigQuery のテーブルを作成します。

AutoML Tables で使用する BigQuery のテーブルを作成するクエリ

このクエリでは、2018 年の第 24 週 (6/17 ~ 6/23) から第 36 週 (9/9 ~ 9/15) の各週における各ユーザーの行動を集計し、また、「その翌週に各ユーザーが離脱したか否か」を表す情報もあわせて取得し、その結果をテーブルとして保存します。作成されたテーブルのデータは、以下のようになります。

クエリ実行により作成されたテーブルのデータ

2. AutoML Tables での離脱ユーザー予測モデルの構築

先ほど作成した BigQuery のテーブル データを用いて、AutoML Tables で離脱ユーザーを予測するモデルを構築します。

AutoML Tables の「データセット」ページを開き、「新しいデータセット」メニューをクリックし、表示されるモーダル ウインドウにて「データセット名」に任意の値を入力し、「データセットの作成」ボタンをクリックします。

データセットの作成

「データのインポート」ページへ遷移するので、このページで、先ほど作成した BigQuery テーブルのプロジェクト ID、データセット ID、テーブル ID を入力して「インポート」ボタンをクリックします。

データのインポート

以下のような「トレーニング」ページが表示されます。

「トレーニング」ページ

このページにて、 countrydays のデータ型をそれぞれ「カテゴリ」と「数値」へ変更します。また、 event_XXXX のデータ型を全て「数値」へ変更します。さらに、「ターゲット列」に churned を設定して「モデル トレーニング」ボタンをクリックします。

「データ型」を修正し、「ターゲット列」を設定して「モデル トレーニング」ボタンをクリック

「モデルのトレーニング」というタイトルのウインドウが開くので、ここで、「予算」に任意の値を入力し(以下のスクリーンショットの例では 3 時間を設定しています)、「特徴列」から weekuser_pseudo_id を除外して「モデル トレーニング」ボタンをクリックし、予測モデルのトレーニングを開始させます。

予測モデルのトレーニングの開始

トレーニングが完了するまで待ちます。トレーニングが完了すると、以下のようなモデルの「評価」ページへアクセスすることができます。

モデルの「評価」ページ (1/2)
モデルの「評価」ページ (2/2)

以上で、「ある 1 週間の行動履歴にもとづいて、各ユーザーが、その翌週に離脱するか」を予測するモデルを構築することができました。

3. 離脱ユーザーの予測

先ほど構築した予測モデルでは、第 24 週から第 36 週の各週のユーザーの行動履歴を使用してトレーニングが行われていました。ここでは、この予測モデルに対して、第 37 週のユーザーの行動履歴を特徴量として投入し、その翌週である第 38 週に、各ユーザーが離脱するかどうかを予測します。また、その予測結果と、第 38 週の実際のユーザーの行動履歴を照らし合わせて、どのくらいの精度で離脱ユーザーを予測することができたのかを評価します。

まずは、以下のクエリを実行し、第 37 週のユーザーの行動履歴を集計した結果を格納するテーブルを作成します。主な集計内容は、前述の「1. AutoML Tables で使用する BigQuery のテーブルの作成」で実行したクエリと同じものになっており、集計対象が第 37 週のみであるという点と、「その翌週に離脱したかどうか」という情報を取得していない点のみが異なっています。

第 37 週のユーザーの行動履歴を集計した結果を格納するテーブルを作成するクエリ

ここで作成したテーブル データと、先ほど構築した予測モデルを用いて、各ユーザーが翌週の第 38 週に離脱するかどうかを予測します。

AutoML Tables で先ほど構築した予測モデルを開き、「テストと使用」ページヘアクセスします。「入力データセット」に先ほど作成した第 37 週のユーザーの行動履歴が格納されたテーブルのプロジェクト ID、データセット ID、テーブル ID を入力し、「結果」の「BigQuery プロジェクト」欄に任意のプロジェクト ID を入力して「バッチ予測を送信」ボタンをクリックして予測を開始します。

予測の開始

予測が完了するまで待ちます。予測が完了すると、前述の「結果」の「BigQuery プロジェクト」欄で指定したプロジェクトに prediction_[AutoML Tables の予測モデル名]_XXXX という形式で BigQuery のデータセットが作成されます。このデータセット内の predictions テーブルの predicted_churned カラムに、予測結果が格納されます。以下のようなクエリを実行して、このテーブルから予測結果を取得します。

予測結果を取得するクエリ

このクエリの実行結果は、以下のようになります。

予測結果の取得

以上で、第 37 週のユーザーの行動履歴をもとに、各ユーザーが、その翌週である第 38 週に離脱するかどうかを予測した結果を取得することができました。

さらに、先ほどの予測結果と、実際の第 38 週のユーザーの行動履歴を照らし合わせ、どのくらいの精度で離脱ユーザーを予測することができたのかを評価します。以下のクエリを実行します。

予測精度を評価するクエリ

このクエリの実行結果は、以下のようになります。

予測精度の評価結果

このクエリの実行結果より、以下のことがわかります。

  • accuracy(精度): 73.8% → 全ユーザーのうち、「翌週に離脱する」または「翌週に離脱しない」と正しく予測できたユーザーの割合は、73.8% であった。
  • precision(適合率): 72.9% → 「翌週に離脱する」と予測したユーザーのうち、実際に翌週に離脱したユーザーの割合は、72.9% であった。
  • recall(再現率): 86.0% → 実際に翌週に離脱したユーザーのうち、「翌週に離脱する」と正しく予測できたユーザーの割合は、86.0% であった。

この精度を今後改善するためには、「予測モデル構築時に使用するデータ量を増加させる」、「予測モデル構築時に使用する特徴量を変える」などの対応が考えれられます。

4. 離脱の要因として考えられそうなものの把握

AutoML Tables で、前述の「2. AutoML Tables での離脱ユーザー予測モデルの構築」で構築した予測モデルの「評価」ページを開きます。「評価」ページの一番下に、以下のような「特徴量の重要度」というグラフが表示されています。

特徴量の重要度

この「特徴量の重要度」のグラフでは、「その予測モデルを構築するうえで特に重要であると思われる特徴量」が上から順番に表示されています。そのため、上記のグラフからは、「翌週に離脱するか否か」を予測する上で、以下の特徴量が特に重要であると思われる、ということがわかります。

  1. days:その週でアプリケーションを起動した日数
  2. days_since_first_launch:最初のアプリケーション起動日から直近のアプリケーション起動日までの日数
  3. avg_sessions_per_day:1 日あたりの平均セッション数
  4. event_level_complete_quickplay:1 セッションあたりの「level_complete_quickplay」イベント(Quick Play モードでのパズルをクリアしたときに発生するイベント)の平均発生件数
  5. avg_engagement_time_per_session:1 セッションあたりの平均アプリケーション起動時間

翌週に離脱するユーザーと離脱しないユーザーで、 days (その週でアプリケーションを起動した日数)に違いがあるのかを見てみます。以下のクエリを実行します。

days の違いを調査するクエリ

このクエリの実行結果は、以下のようになります。

離脱ユーザーとそうでないユーザーの days の違い

この実行結果により、翌週に離脱していないユーザー( churnedfalse であるユーザー)の方が、離脱しているユーザーよりも、その週のアプリケーションの起動日数の平均値と中央値が、それぞれ 1 日ほど多い、ということがわかります。これにより、離脱しそうなユーザーに対しては、1 週間におけるアプリケーションの起動日数を増やすような施策を検討して実施する、という対応が考えられるかもしれません。

同様に、翌週に離脱するユーザーと離脱しないユーザーで、 event_level_complete_quickplay (1 セッションあたりの「Quick Play モードでのパズルをクリアしたときに発生するイベント」の平均発生件数)に違いがあるのかを見てみます。以下のクエリを実行します。

event_level_complete_quickplay の違いを調査するクエリ

このクエリの実行結果は、以下のようになります。

離脱ユーザーとそうでないユーザーの event_level_complete_quickplay の違い

この実行結果により、翌週に離脱していないユーザー( churnedfalse であるユーザー)の方が、離脱しているユーザーよりも、「1 セッションあたりの平均パズル クリア回数」の平均値と中央値が、それぞれ 1 回ほど多い、ということがわかります。これにより、「パズルをクリアするという成功体験を積むことが、翌週に離脱するか否かに影響するかもしれない」という仮説を立てることができ、例えば、「パズルをあまりクリアできていないユーザーについては、パズルの難易度を下げる」といった改善施策を考えることができるかもしれません。

Firebase Predictions を用いた離脱ユーザーの予測

Firebase には Firebase Predictions という、機械学習によって自動的にユーザー セグメントを作成するサービスがあります。これを活用することで、将来離脱することが予想されるユーザーとそうでないユーザーでセグメントを作成することができます(詳細は、「事前定義された予測 | Firebase」 をご覧ください)。さらに、そのようにして作成されたユーザー セグメントごとに、 Notifications Composer を用いたメッセージの配信Remote Config を用いたアプリケーションの動作の調整などを行うことができます。

ただし、前節「4. 離脱の要因として考えられそうなものの把握」でご紹介したような、「どの要因が離脱に大きな影響を与えていると考えられそうか」というようなことを詳細に調査するためには、Firebase イベント データを BigQuery へエクスポートして、この記事でご紹介したような方法で、調査や分析を行う必要があります。Firebase イベント データを BigQuery へエクスポートする方法につきましては、Firebase ヘルプ ページ「Firebase の BigQuery Export — Firebase ヘルプ」をご参照ください。

おわりに

この記事では、BigQuery のテーブル データをもとに予測モデルを構築できる AutoML Tables を用いて、過去のユーザーの行動履歴にもとづいて将来的な離脱ユーザーを予測し、かつ、その離脱の要因として考えられそうなものを把握する方法の一例をご紹介しました。

AutoML Tables を活用することで、BigQuery のテーブルを用いて、離脱ユーザーなどを予測するモデルを構築することができますので、もしよろしければ、今回ご紹介したような方法で、AutoML Tables を活用した予測モデルの構築を実施いただければと思います。

また、Google Cloud の公式ソリューション ページ「AutoML Tables を使用して顧客の生涯価値を予測する | ソリューション | Google Cloud」に、AutoML Tables を用いた顧客生涯価値 (Customer Lifetime Value) の予測モデルの構築方法が紹介されていますので、もしよろしければ、こちらもあわせてご覧いただければと思います。

--

--