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。
原始数据符合如下模板:
其中,每行数据为每一位用户每天的行为参数汇总和状态快照。如若用户当天未登录,则不需记录当天状态或行为。如果用户前 n-1 天未付费,在第 n 天发生付费转化,则该用户有 n 行数据 (假设用户每天登陆)。
-
状态参数 (当天零点快照) 包括但不限于,游戏内人物等级,游戏内金币数量,登陆游戏手机品牌,登陆游戏地点等。
-
行为参数包括但不限于 (推荐四种对预测付费最重要的行为,其他行为越多越好):
-
付费相关类行为:打开付费窗口,点击付费按钮(还未确认付费成功)
-
游戏币购买物品:这里物品可缩小范围到游戏的核心追求品类,如皮肤,武器等
-
社交行为:是否加入公会,在团队发言次数,社交账号分享等
-
打折类行为:打开打折商店等
对原始数据处理后,得到如下数据 (假设模型目标是基于未付费用户下载后 7 天行为预测下载后 28 天内是否会付费):
-
预测目标 Y:如果用户下载游戏后 28 天内发生付费转化,则为 1,否则为 0
-
用户参数 X:假设原始数据中对于用户 i, 有 j 行数据,经过处理后每个用户只有一行数据
-
状态参数 Xs:最后一天的状态快照
-
行为参数 Xb: j 行数据的加和
注 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 的整体参数。具体定义如下:
经过多次调参迭代,模型性能如下所示,
注:蓝色竖虚线与 x 轴的交点是使 f1 达到最高点的预测概率的取值
系统设计
系统基于 Google Cloud Platform,简称 GCP,进行架构。激活了 GCP 中三个组件,BigQuery, Compute Engine 和 Storage。每天,基于游戏内新产生的数据运行“预测模块”,对每个用户加以评估,是否会付费转化。每季度初,基于过去 120 天内注册的用户数据运行“训练模块”,对模型加以更新。这里采用了混合数据集的方法,即90天新数据,30 天老数据,以保证模型和谷歌广告投放平台的合作顺畅。
每季度
每天
预测结果在 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 机器学习和广告投放的效果。
注:用户需要思考是否充值付费的时间越长,潜在付费用户群体越大
结论及未来展望
本文通过对行业背景的分析,提出了策略类手机游戏面临的挑战。并从系统架构的角度,介绍了如何对数据进行清理、特征工程、预测分类器的建模及系统自动化。其中,数据的搜集处理对模型的准确性及应用性有很大影响。文章也给出了四种对预测游戏内付费有重要影响的行为参数,并通过 PCA 主成分分析的特征降维方法,极大提高了模型的性能。另外,通过调节预测转化概率的阈值,可在精度和广度之间作以取舍,使模型的预测结果适用于不同的领域。
目前,此机器学习系统已在行业内上线,每天会分析预测上百万用户,帮助他们优化游戏内及广告体验。预测是为了更好地了解用户,进而更有效率地帮助用户。预测结果可对用户加以分层,可应用于内部运营、市场再营销、新用户获取等领域。在此案例中,通过把机器学习系统与 Google UAC 广告平台的结合,在新用户获取领域极大的提高了用户质量,使付费率提高了 7 倍,投资回报率提高了 2.6 倍。关于具体实施的细节,如感兴趣,请联系您的 Google Awords 账户经理,我们很乐意与您分享相关经验,这里不再赘述。
未来,我们会对用户终身价值 pltv 加以建模研究,期望基于用户的行为及付费数据,预测用户未来在游戏内的活跃时间及终身价值。这样可以帮助我们更细颗粒度地区分用户,构建千人千面的用户体验。
写在最后:欢迎大家点击下方二维码关注我们的公众号,点击干货资源专栏或回复关键字“资源”获取更多资源推荐。关注我们的历史文章,一起畅游在深度学习的世界中。
另外:欢迎大家扫码加入我们的qq群。
点击下方 | 阅读原文 | 了解更多
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2018/05/04/3004cb33b1/