游戏应用的偏好建模

了解如何使用 BigQuery ML 从几种不同类型的偏好模型中进行训练、评估和获取预测。偏好模型可以帮助您确定特定用户返回您的应用的可能性,因此您可以在营销决策中使用该信息。

概览

如果您是手机游戏开发商,那么保留用户可能是您面临的挑战之一。根据 2019 年的移动游戏行业分析,大多数移动游戏在第一天之后对用户的保留率仅为 25%。如需在那之后保留更大比例的用户,您可以采取措施来激励和激励那些最有可能返回的用户。但是要锁定这些用户,您需要确定前 24 小时后返回的特定用户的倾向。如果您开发优先考虑减少用户流失的其他类型的在线应用,则此方法也应为您工作。

若要实现本文中描述的方法,请使用此笔记本

本文讨论了偏好模型的高级方法,包括:

  • 准备游戏数据,以便将其用于训练机器学习 (ML) 模型
  • 选择使用哪种类型的偏好模型
  • 训练和评估模型
  • 获取预测结果
  • 导出预测数据以用于市场营销活动

受众

该解决方案适用于在线应用开发人员,尤其是手机游戏开发人员。本教程假定您基本了解以下各个方面:

  • 机器学习概念
  • 标准 SQL

示例数据集

该解决方案使用公共 firebase-public-project.analytics_153293282.events_20181003 数据集。此数据集包含来自名为“Flood It!”的真实移动游戏应用的 Google Analytics(分析)4 (GA4) 数据。此数据集包含来自 15,000 多位用户的 570 万个事件。

GA4 使用基于事件的衡量模型。此数据集中的每一行都是一个唯一事件,其中包含事件参数的嵌套字段。如需详细了解数据的结构,请参阅 BigQuery Export 架构

将 Google Analytics(分析)数据导出到 BigQuery 中

如果您希望使用自己的来自 GA4 媒体资源的数据(而非抽样数据),则可以按照 (GA4) 设置 BigQuery Export 中的说明导出您的数据。

处理数据

您必须处理事件数据以使其具有正确的形状和格式,以用作训练数据。处理数据可实现以下目标:

  • 过滤掉不太可能返回应用的用户
  • 为用户受众特征数据创建特征
  • 为用户行为数据创建特征

结合使用受众特征数据和行为数据有助于创建预测能力更高的模型。

处理完成后,训练数据的每一行代表一个唯一身份用户的数据,由 user_pseudo_id 列标识。

标记用户

如需处理数据,请首先标记记录以标识似乎不太可能返回应用的用户。在此解决方案中,您可以给记录加标签以进行分类,然后根据它们与应用的交互进行分类。

首先,过滤掉首次访问应用期间使用时间不到 10 分钟的用户。您可将这些用户标记为跳出

然后,您将剩余的用户标记为搅动,如果他们在首次使用该应用后 24 小时没有该用户的事件数据,或者将其标记为返回,如果他们在首次使用该应用 24 小时后至少有一个事件记录。该模型在训练过程中使用这些标签来学习如何识别用户落入一个或另一个类别的可能性。

如果您有不同的应用场景,则可以使用不同的条件来识别跳出或流失的客户。如果您想要预测受众群体流失以外的其他情况,则可以考虑以下各项:

  • 用户是否有可能花钱购买游戏代币
  • 用户完成 n 个游戏关卡的可能性
  • 用户在游戏中花费 n 的时间量的可能性

处理受众特征

处理数据的下一步是为用户人口统计添加功能。此解决方案使用以下字段作为人口统计特征:

  • geo.country
  • device.operating_system
  • device.language

但是,如果这些字段更适合您的用例,则可以选择其他字段。

用户在这些字段中可能具有多个唯一值。例如,如果用户从两个不同的设备上使用了该应用。为简化起见,此解决方案使用来自第一个用户参与事件的值。

处理行为特征

处理数据的最后一步是为用户行为添加功能。

为了从数据中提取用户行为,该解决方案将在用户参与的前 24 小时内分析每个用户的活动。除了 Google Analytics(分析)自动收集的事件之外,您还可以浏览游戏的推荐事件,以了解用户行为。为了预测这种情况下的用户流失,该解决方案计算在首次用户参与后 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

选择一个模型

训练数据准备好后,您就可以创建机器学习模型了。您可以从模型的许多分类算法中进行选择。下表列出了模型类型及其优缺点:

模型 model_type 优势 缺点
逻辑回归 LOGISTIC_REG 训练速度高于其他模型类型。 表现可能不是最佳。
XGBoost BOOSTED_TREE_CLASSIFIER
  • 表现高于 LOGISTIC_REG 模型。
  • 允许检查特征重要性。
训练速度低于 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

此查询会从 datetimetimestamp 列中提取 monthjuliandaydayofweek 值,作为在训练之前可以执行的其他特征预处理的一个示例。CREATE MODEL 查询中的 TRANSFORM() 函数可让模型保留提取的值。这样,以后使用此模型进行预测时,无需再次提取这些值。

查看笔记本,了解有关如何训练 XGBoost、深度神经网络和 AutoML Tables 模型的示例。

评估模型

模型完成训练后,评估模型以了解其表现。

此解决方案使用 ML.EVALUATE 语句生成模型的精确率召回率准确率f1_score 指标。训练多个模型,然后比较其评估指标可以帮助您确定哪个模型最适合您的数据。

此解决方案还使用混淆矩阵来检查模型预测标签与实际标签的对比情况。混淆矩阵是使用默认阈值 0.5 创建的,您可能需要进行调整以针对召回率、精确率或两者的平衡进行优化。您可以使用可选的 THRESHOLD 参数来修改默认阈值。

获取预测结果

模型经过训练和评估后,您可以使用它来获取预测结果。

此解决方案使用 ML.PREDICT 语句请求通过模型进行预测。

对于倾向建模,预测输出是发生行为的概率。预测概率越接近 1,用户返回的可能性就越大。预测概率越接近 0,用户流失的可能性就越大。

导出预测结果

通过模型进行预测后,您就可以将此数据用于营销激活。执行此操作的常见方法是导出要在 Analytics(分析)或 Firebase 中使用的数据。

在 Google Analytics(分析)中使用预测结果

您可以将预测数据用于 Analytics(分析)中的营销活动。您可以使用 Google Analytics(分析)4 的数据导入功能,将模型预测结果作为用户属性导入回 Analytics(分析)。您可以根据预测值创建和修改受众群体,并执行受众群体定位。例如,您可以根据预测概率介于 0.4 到 0.7 之间的用户来定义受众群体,这些用户可能不会自己返回但可以被激励这样做。

在 Firebase 中使用预测结果

对于 Firebase 应用,您可以使用导入细分功能来导入预测数据。利用这些数据,您可以通过 Firebase 服务(例如 Remote ConfigCloud MessagingIn-App Messaging)定位标识的用户来定制用户体验。这样,您就可以执行向用户发送通知、为用户配置应用,以及跨设备跟踪用户体验历程等操作。

持续模型评估

随着从用户生成更多数据,如果您注意到模型质量下降,则可能需要定期根据新数据评估模型并重新训练模型。

确保生产机器学习模型在新数据上仍然表现良好的过程称为连续评估,这是任何机器学习工作流程中必不可少的一部分。进行持续评估可以帮助您捕获模型漂移,这种现象是在用于训练模型的数据不再反映您用于请求预测的数据时发生的。

如需详细了解有关如何进行持续评估评估,请参阅使用 BigQuery ML、存储过程和 Cloud Scheduler 进行连续模型评估

后续步骤