1. 首页
  2. TensorFlowNews

Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的?

Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的?

来源 | Tensorflow

编辑 | 磐石

出品 | 磐创AI技术团队

【磐创AI导读】本文授权转载自Tensorflow。主要介绍了基于TensorFlow深度神经网络的机器学习预测系统及其在Google UAC广告平台的应用。欢迎大家点击上方蓝字关注我们的公众号:磐创AI


近年来,移动端游戏随着智能手机技术的发展,越来越成为人们娱乐休闲的新模式。据 NewZoo 数据调查研究发现,全球手机端游戏已达到 21 亿玩家规模,呈 14% 同比年增长趋势,其中大部分玩家有在游戏中付费的经历。


对于 SLG 策略类型手机游戏,由于前期用户需要时间了解及熟练游戏操作,即使有付费倾向,一般也会比较滞后。这种滞后为游戏的内部运营,市场投放效果的衡量及优化带来了很大挑战。本文基于一款日活 600 万的明星 SLG 游戏,根据游戏内用户的 500+ 个特征行为,对未付费用户在下载安装后 28 天内是否会转化为付费用户加以预测。


文章尽量避免涉及过多的技术细节,主要从系统架构的角度加以阐述,如何自动化一套机器学习预测系统并与 Google UAC (通用应用广告平台) 相结合,最终提高 7 倍转化率,2.6 倍投资回报率,降低 63% 付费用户获取成本。



数据准备

数据包括两部分, 预测目标 Y 及用户参数 X,其中用户参数 X 又分为状态参数 Xs 和行为参数 Xb。


原始数据符合如下模板:

Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的?


其中,每行数据为每一位用户每天的行为参数汇总和状态快照。如若用户当天未登录,则不需记录当天状态或行为。如果用户前 n-1 天未付费,在第 n 天发生付费转化,则该用户有 n 行数据 (假设用户每天登陆)。

  • 状态参数 (当天零点快照) 包括但不限于,游戏内人物等级,游戏内金币数量,登陆游戏手机品牌,登陆游戏地点等。

  • 行为参数包括但不限于 (推荐四种对预测付费最重要的行为,其他行为越多越好):

  1. 付费相关类行为:打开付费窗口,点击付费按钮(还未确认付费成功)

  2. 游戏币购买物品:这里物品可缩小范围到游戏的核心追求品类,如皮肤,武器等

  3. 社交行为:是否加入公会,在团队发言次数,社交账号分享等

  4. 打折类行为:打开打折商店等


对原始数据处理后,得到如下数据 (假设模型目标是基于未付费用户下载后 7 天行为预测下载后 28 天内是否会付费):

  • 预测目标 Y:如果用户下载游戏后 28 天内发生付费转化,则为 1,否则为 0

  • 用户参数 X:假设原始数据中对于用户 i, 有 j 行数据,经过处理后每个用户只有一行数据

  1. 状态参数 Xs:最后一天的状态快照 Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的?

  2. 行为参数 Xb:  j 行数据的加和 Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的?


注 1:推荐取 7 天以内行为作预测基础,这样可以在用户下载安装 APP 后七天内产生预测,进而及时把预测信号发送给 Google UAC 广告投放平台,便于 UAC 平台内的机器学习。


注 2:推荐取 28 天内的付费作预测目标,这样便于在一个月内完成预测效果及 Google UAC 广告平台投放效果的衡量。



数据清洗与特征工程

对数据进行清洗

  • 用 0 填充所有缺失值

  • 以列为单位,标准化变形。sklearn.preprocessing.StandardScaler

  • 主成分分析 PCA:降维到原纬度数量的一半。


经过数据清洗和特征工程处理后,得到如下数据(假设模型目标是基于未付费用户下载后7天行为预测下载后 28 天内会不会付费):

  • 将处理后的数据按 1:1 分成两部分,train 和 test

  • 预测目标没有变化,即 Y_noTransform_train, Y_noTransform_test:如果用户下载游戏后 28 天内付过费,则为 1,否则为 0;

  • 相对应的用户参数经过变形,即 X_transformed_train, X_transformed_test;每个用户一行数据,但经过 PCA 降维之后,很难理解X中每一列代表什么行为。



基于TensorFlow深度神经网络分类器建模

创建分类器

设计系统时,选择调用 tensorflow Python API,直接建立 DNNClassifier 对象,省去了大量从底层开始架构模型的时间。对解决简单分类问题很有效,推荐给大家。

classifier = tf.estimator.DNNClassifier()


训练分类器

调用 DNNClassifier 对象的 fit 函数,建立训练模块。


classifier.fit(X_transformed_train, Y_noTransform_train, steps=2000, batch_size=5000)


分类器预测

调用 DNNClassifier 对象的 predict 函数,建立预测模块。输出为 0 或 1,0 代表分类器认为转化概率低于 50%,即不会付费转化,1 代表分类器认为转化概率大于等于 50%,即大概率付费转化。50% 为 predict 函数默认的缺省阈值,如需改变此阈值,则要调用 predict_proba 函数,输出为转化概率,而不再是 0 或 1。


Y_predict = classifier.predict(X_transformed_test)


分类器验证

Y_predict 和 Y_noTransform_test 都是真对同一批测试者,前者为预测值,后者为实际值。通过比较得出 Precision 和 Recall,以此衡量预测模型的准确度。如果用于 Google 广告平台的投放,则 Recall 比 Precision 重要,应尽量提高 Recall。如果用户内部运营,则 Precision 比 Recall 重要,应尽量提高 Precision。


其中 precision 代表精度,recall 代表广度。f1 是综合考虑 precision,recall 的整体参数。具体定义如下:

Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的?


经过多次调参迭代,模型性能如下所示,

Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的?


注:蓝色竖虚线与 x 轴的交点是使 f1 达到最高点的预测概率的取值



系统设计

系统基于 Google Cloud Platform,简称 GCP,进行架构。激活了 GCP 中三个组件,BigQuery, Compute Engine 和 Storage。每天,基于游戏内新产生的数据运行“预测模块”,对每个用户加以评估,是否会付费转化。每季度初,基于过去 120 天内注册的用户数据运行“训练模块”,对模型加以更新。这里采用了混合数据集的方法,即90天新数据,30 天老数据,以保证模型和谷歌广告投放平台的合作顺畅。


每季度

Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的?

每天

Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的?



预测结果在 Google UAC 广告平台的应用

Univeral App Campaign 即通用应用广告系列(以下简称 UAC),是 Google 开发的基于大数据和机器学习的移动端应用广告投放平台。旨在帮助用户简化广告投放流程,更轻松地在 Google 用户量最多的各款产品和服务(包括 Google 搜索、Google Play、YouTube 和 Google 展示广告网络)中宣传自己的应用 APP。用户只需添加几行文字、设置出价、提供一些素材资料,系统会自动优化其余部分(包括具体广告的设计、广告投放的目标定位和出价等),从而帮助用户推广应用 APP。


目前有三个版本,根据推广目标不同,分别为以提升 APP 下载安装量为目标、提升 APP 内事件触发频次为目标和提升 APP 内用户价值为目标。本文主要应用在 UAC 的第二个版本,以提升 APP 内事件触发频次为目标。


APP 内的事件多种多样,游戏内充值付费(以下简称 IAP,In-App-Purchase)应属最简单明了也最便于尝试的事件之一。大多数用户都有测试,但效果有好有坏,究竟是什么因素导致了效果的不同?有没有一种方法可以提升 UAC 广告投放效果?本文希望通过对大量投放经验的总结,提出一种基于预测付费用户的新的 UAC 广告投放方式,用于高质量的新用户获取。


如之前章节所述,最后得出的预测结果应为两列数据,DeviceID 及预测标签 (0 或1)。取决于预测概率阈值的不同,被标记为 1 (有付费倾向) 的用户数量及准确度也会不同。阈值越高,被标记为 1 的要求越苛刻,既被认为有付费倾向的用户数量越少,准确度越高,如图二所示。当阈值达到最高 100%,则预测事件等同于实际付费事件;当阈值达到最低 0%,则预测事件等同于 APP 安装事件。“预测事件”本质上是我们通过机器学习预测系统,创造出来的一个“假想”事件,并根据预测阈值的不同,可以在APP下载安装及最终付费之间做优化调节。


经大量实验研究发现,如果考虑把预测结果应用在 UAC 上,应尽量调节阈值,牺牲一些 precision,使 recall 尽可能高。


如下图所示,阐述了基于 TensorFlow 的机器学习预测系统与 Google UAC 广告投放平台结合的工作原理。左边蓝色的部分为本文搭建的预测系统,右侧绿色的部分为 UAC 系统。通过分析预测,找出潜在付费用户,扩大了发送给 UAC 的种子人群数量,缩短了从 APP 安装到有效转化发生的效果回馈时间,进而提升了 UAC 机器学习和广告投放的效果。


Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的?


注:用户需要思考是否充值付费的时间越长,潜在付费用户群体越大



结论及未来展望

本文通过对行业背景的分析,提出了策略类手机游戏面临的挑战。并从系统架构的角度,介绍了如何对数据进行清理、特征工程、预测分类器的建模及系统自动化。其中,数据的搜集处理对模型的准确性及应用性有很大影响。文章也给出了四种对预测游戏内付费有重要影响的行为参数,并通过 PCA 主成分分析的特征降维方法,极大提高了模型的性能。另外,通过调节预测转化概率的阈值,可在精度和广度之间作以取舍,使模型的预测结果适用于不同的领域。


目前,此机器学习系统已在行业内上线,每天会分析预测上百万用户,帮助他们优化游戏内及广告体验。预测是为了更好地了解用户,进而更有效率地帮助用户。预测结果可对用户加以分层,可应用于内部运营、市场再营销、新用户获取等领域。在此案例中,通过把机器学习系统与 Google UAC 广告平台的结合,在新用户获取领域极大的提高了用户质量,使付费率提高了 7 倍,投资回报率提高了 2.6 倍。关于具体实施的细节,如感兴趣,请联系您的 Google Awords 账户经理,我们很乐意与您分享相关经验,这里不再赘述。


未来,我们会对用户终身价值 pltv 加以建模研究,期望基于用户的行为及付费数据,预测用户未来在游戏内的活跃时间及终身价值。这样可以帮助我们更细颗粒度地区分用户,构建千人千面的用户体验。


写在最后:欢迎大家点击下方二维码关注我们的公众号,点击干货资源专栏回复关键字“资源”获取更多资源推荐。关注我们的历史文章,一起畅游在深度学习的世界中。

另外:欢迎大家扫码加入我们的qq群。

Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的?


Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的?


Google内部案例分享 | 我们是如何构建定制化TensorFlow预测系统的? 点击下方 |  | 了解更多

磐创AI:http://www.panchuangai.com/ 智能客服:http://www.panchuangai.com/ TensorFlow:http://panchuang.net 推荐关注公众号:磐创AI

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2018/05/04/3004cb33b1/

发表评论

电子邮件地址不会被公开。

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息