BigQuery ML を使用して、いくつかの異なるタイプの傾向モデルをトレーニング、評価、予測値を得る方法を学びます。傾向モデルは、特定のユーザーがアプリに戻ってくる可能性を判断するのに役立ち、その情報をマーケティングの意思決定に役立てることができます。
概要
あなたがモバイルゲームのデベロッパーであれば、ユーザーの維持はおそらく課題の 1 つだと思われます。2019 年版のモバイルゲーム業界分析によると、初日以降のユーザー維持率はほとんどのモバイルゲームでわずか 25% にすぎません。その後、より多くの割合のユーザーを維持するためには、再訪問してくれる可能性の高いユーザーのモチベーションを高め、インセンティブを与えるような施策を講じることをおすすめします。しかし、そのようなユーザーをターゲットにするためには、特定のユーザーが最初の 24 時間後に戻ってくる傾向を特定する必要があります。視聴者の離脱を減らすことを優先するほかのタイプのオンライン アプリケーションを開発している場合、このアプローチも有効です。
この記事で紹介したアプローチを実現するには、以下のノートブックを使用します。
この記事では、以下のような傾向モデルの高度なアプローチについて説明しています。
- 機械学習(ML)モデルの学習に使用できるように、ゲームデータを準備する
- 使用する傾向モデルを選択する
- モデルのトレーニングと評価を行う
- モデルから予測値を得る
- 予測データをエクスポートしてマーケティング キャンペーンに利用する
対象
このソリューションは、オンライン アプリケーション デベロッパー、特にモバイルゲーム デベロッパーを対象としています。以下の知識があることを前提としています。
- 機械学習のコンセプト
- 標準 SQL
サンプル データセット
このソリューションでは、一般公開の firebase-public-project.analytics_153293282.events_20181003 データセットを使用します。このデータセットには、実際のモバイルゲーム アプリ「Flood It!」からの Google アナリティクス 4(GA4)のデータが含まれています。このデータセットには 15,000 人以上のユーザーから 570 万件のイベントが含まれます。
GA4 はイベントベースの測定モデルを使用します。このデータセットの各行は固有のイベントであり、イベント パラメータのネストされたフィールドが含まれています。データの構造の詳細については、BigQuery Export のスキーマをご覧ください。
Google アナリティクス データを BigQuery にエクスポートする
サンプルデータの代わりに、GA4 プロパティの独自のデータを使用したい場合は、(GA4)BigQuery Export の設定の手順に沿ってエクスポートできます。
データの処理
イベントデータを処理して、トレーニング データとして使用するのに適した形式とフォーマットにする必要があります。データを処理することで、次のような目的を達成できます。
- アプリへの再訪問の可能性が低いユーザーをフィルタする
- ユーザー属性データのための機能を作成する
- ユーザー行動データのための機能を作成する
ユーザー属性データと行動データの両方を組み合わせることで、より予測性の高いモデルを作ることができる
処理が完了すると、トレーニング データの各行は user_pseudo_id
列で識別される一意のユーザーのデータを表します。
ユーザーのラベル付け
データを処理するには、まずレコードにラベルを付けて、アプリに戻ってくる可能性が低いと思われるユーザーを特定します。このソリューションでは、アプリケーションとのやり取りに基づいてレコードをラベル付けして分類します。
まず、初回アクセス時にアプリを使用した時間が 10 分未満のユーザーをフィルタします。それらのユーザーにはバウンスというラベルを付けます。
そして、残りのユーザーを、アプリを初めて使用してから 24 時間後にそのユーザーのイベントデータがない場合は離脱、アプリを初めて使用してから 24 時間後に少なくとも 1 つのイベント記録がある場合は復帰とラベル付けします。モデルはトレーニング時にこれらのラベルを使用して、ユーザーがどちらかのカテゴリに分類される可能性を識別する方法を学習します。次に、トレーニングしたモデルを使用して、特定のユーザーの可能性を予測できます。
別のユースケースがある場合は、さまざまな条件を使用して、バウンスしたユーザーまたは離脱したユーザーを特定できます。対象者の離脱以外のものを予測する場合は、たとえば、次のようなことを検討できます。
- ユーザーがゲーム内通貨を購入する可能性が高いかどうか
- ユーザーが n 個のゲームレベルを完了する可能性
- ユーザーがゲーム内で n 時間を費やす可能性
ユーザー属性機能の処理
データ処理の次のステップは、ユーザー属性に関する機能を追加することです。このソリューションでは、次のフィールドをユーザー属性機能として使用します。
geo.country
device.operating_system
device.language
ただし、ユースケースに合わせて別のフィールドを選択することもできます。
1 人のユーザーがこれらのフィールドに複数の固有の値を持つことができます。たとえば、ユーザーが 2 つの異なるデバイスからアプリを使用したとします。シンプルにするため、このソリューションでは最初のユーザー エンゲージメント イベントの値を使用します。
処理動作機能
データを処理するための最後のステップは、ユーザー行動に対する特徴の追加です。
データからユーザーの行動を抽出するために、このソリューションでは、ユーザー エンゲージメントの最初の 24 時間における各ユーザーの行動を分析します。アナリティクスが自動的に収集するイベントに加えて、ゲームの推奨イベントがあり、ユーザーの行動を理解するために調査ができます。この場合、ユーザーの離脱を予測するために、このソリューションでは、最初のユーザー エンゲージメントから 24 時間以内に、各ユーザーについて以下のイベントが収集された回数をカウントします。
user_engagement
level_start_quickplay
level_end_quickplay
level_complete_quickplay
level_reset_quickplay
post_score
spend_virtual_currency
ad_reward
challenge_a_friend
completed_5_levels
use_extra_steps
ここで説明するユースケースとは異なるユースケースの場合は、別のイベントを使用できます。使用可能なイベントのリストを表示するには、次のクエリを使用します。
SELECT
event_name,
COUNT(event_name) as event_count
FROM
firebase-public-project.analytics_153293282.events_*
GROUP BY 1
ORDER BY
event_count DESC
モデルの選択
トレーニング データを準備したら、ML モデルを作成できます。モデルのさまざまな分類アルゴリズムから選択できます。次のテーブルに、モデルタイプとそのメリットとデメリットを示します。
モデル | モデルの種類 | メリット | デメリット |
---|---|---|---|
ロジスティック回帰 | LOGISTIC_REG |
他のモデルタイプよりも速くトレーニングできます。 | 最も高いパフォーマンスは得られない可能性があります。 |
XGBoost | BOOSTED_TREE_CLASSIFIER |
|
LOGISTIC_REG モデルよりもトレーニングに時間がかかります。 |
ディープ ニューラル ネットワーク | DNN_CLASSIFIER |
LOGISTIC_REG モデルよりも優れたパフォーマンスが得られます |
LOGISTIC_REG モデルよりもトレーニングに時間がかかります。 |
AutoML Tables | AUTOML_CLASSIFIER |
LOGISTIC_REG モデルよりも優れたパフォーマンスが得られます |
|
このソリューションは、トレーニングが最も速いロジスティック回帰モデルをデフォルトで使用しますが、ノートブックでは、必要に応じて別のモデルタイプを使用することもできます。
モデルのトレーニング
BigQuery ML を使用して分類モデルをトレーニングします。トレーニングされたモデルは、ユーザーが離脱する確率を示す傾向スコアを出力します。100% の確率で離脱される場合を churned
= 1、100% の確率で復帰する場合を churned
= 0 とし、ほとんどの結果がこの境界線の間にあることを示しています。
CREATE MODEL
ステートメントを使用すると、BigQuery ML は自動的にトレーニング データをトレーニング セットとテストセットに分割します。これにより、トレーニング完了後にモデルを評価して、モデルの精度を確認できます。
次のクエリは、モデルをトレーニングするための CREATE OR REPLACE MODEL
ステートメントを示しています。
CREATE OR REPLACE MODEL bqmlga4.churn_logreg
TRANSFORM(
EXTRACT(MONTH from user_first_engagement) as month,
EXTRACT(DAYOFYEAR from user_first_engagement) as julianday,
EXTRACT(DAYOFWEEK from user_first_engagement) as dayofweek,
EXTRACT(HOUR from user_first_engagement) as hour,
* EXCEPT(user_first_engagement, user_pseudo_id)
)
OPTIONS(
MODEL_TYPE="LOGISTIC_REG",
INPUT_LABEL_COLS=["churned"]
) AS
SELECT
*
FROM
Bqmlga4.train
このクエリは、トレーニング前に実行できる追加の特徴量の前処理の一例として、datetime
列と timestamp
列から month
、julianday
、dayofweek
の値を抽出します。CREATE MODEL
クエリの TRANSFORM()
関数を使用すると、モデルは抽出された値を保持できます。こうすることで、後でこのモデルを使用して予測する際に、これらの値を再度抽出する必要がなくなります。
ノートブックを参照して、XGBoost、ディープ ニューラル ネットワーク、AutoML Tables のモデルをトレーニングする方法の例を確認します。
モデルの評価
モデルのトレーニングが完了したら、モデルを評価してパフォーマンスを確認します。
このソリューションでは、ML.EVALUATE
ステートメントを使用して、モデルの適合率、再現率、精度、F1 スコアの指標を生成します。複数のモデルをトレーニングして評価指標を比較すると、データに最適なモデルを特定できます。
また、このソリューションでは、混同行列を用いて、実際のラベルと比較し、モデルがどの程度ラベルを予測したかを検査します。混同行列は、デフォルトのしきい値 0.5 を使用して作成されますが、再現率、適合率、またはそれらのバランスを考慮して最適化できます。オプションの THRESHOLD
パラメータを使用すると、デフォルトのしきい値を変更できます。
予測の取得
モデルのトレーニングと評価が完了したら、それを使って予測値を得ることができます。
このソリューションでは ML.PREDICT
ステートメントを使用して、モデルから予測をリクエストします。
傾向モデルでは、予測出力は行動が発生する確率です。予測確率が 1 に近いほど、ユーザーが戻る可能性が高くなります。予測される確率が 0 に近いほど、ユーザーが離脱する可能性が高くなります。
予測のエクスポート
モデルによる予測が得られれば、このデータをマーケティングの活性化に役立てることができます。一般的な方法は、データをエクスポートして、アナリティクスまたは Firebase で使用できるようにすることです。
Google アナリティクスでの予測の使用
予測データは、アナリティクスでのマーケティング キャンペーンに利用できます。Google アナリティクス 4 のデータ インポート機能を使えば、モデル予測をユーザー属性としてアナリティクスに戻すことができます。予測値に基づいて、対象の作成と編集、対象のターゲティングを行うことができます。たとえば、予測確率が 0.4~0.7 のユーザーに基づいて対象を定義できます。これは、自分では戻らないかもしれないが、インセンティブを与えることで戻る可能性のあるユーザーです。
Firebase での予測の使用
Firebase アプリケーションの場合、セグメントのインポート機能を使用して予測データをインポートできます。このデータを使用すると、Remote Config、クラウド メッセージング、アプリ内メッセージングなどの Firebase サービスを通じて、特定されたユーザーをターゲットにして、ユーザー エクスペリエンスをカスタマイズできます これにより、ユーザーへの通知の送信、ユーザー向けのアプリの設定、デバイス間でのユーザー ジャーニーの確認などを行うことができます。
継続的なモデル評価
ユーザーからより多くのデータが生成されるようになったら、新鮮なデータでモデルを定期的に評価し、モデルの品質が低下していることに気づいたら、モデルを再トレーニングすることをおすすめします。
本番環境の機械学習モデルが、新しいデータに対しても十分な性能を発揮していることを確認するこのプロセスは継続評価と呼ばれ、ML のワークフローには欠かせないものとなっています。継続評価はモデルドリフトの検出に有効です。モデルドリフトとは、モデルのトレーニングに使用したデータが予測のリクエストに使用するデータを反映しなくなると発生する現象です
継続的なモデル評価の詳細については、BigQuery ML、Stored Procedures、Cloud Scheduler を使用した継続的なモデル評価をご覧ください。
次のステップ
- ソリューション ノートブックを使ってみます。
- Google アナリティクス データの BigQuery Export の概要を学びます。
- Google アナリティクス 4 で自動的に収集されるイベントを確認します。
- BigQuery ML で需要予測モデルを構築する方法について学びます。
- BigQuery ML を使用して e コマースデータのレコメンデーション システムを構築する方法について学びます。