更多腾讯海量技术文章,请关注云加社区:https://cloud.tencent.com/developer
作者:陈琼
著名广告大师约翰•沃纳梅克提出:"我知道我的广告费有一半浪费了,但遗憾的是,我不知道是哪一半被浪费了"。相比传统广告,互联网广告最大的优势之一:效果可测量,即用户看广告以及看过广告之后的行为可以被记录下来,如果再按照一定的规则,对这些数据进行归因,这就意味着,广告主在多个渠道推广之后,可以清晰的知道各个渠道的推广效果和获得用户量,也可以根据数据分析各种投放策略带来的效果,从而进一步做到精细化运营。
准确的统计到转化数据,不仅需要数据跟踪技术,而且需要既定的归因规则。
图一 转化漏斗
做好转化数据跟踪和归因,首先需要:
用户标识; 在移动场景下,一般分为两类: 设备标识和用户标识;设备标识,诸如 IMEI 、 AndroidID 、IDFA 等;用户标识,诸如将设备标识,加上一系列的字段(如: ip 地址、设备开机时间等)通过算法组合成一个用户标识。
用户看广告相关的数据;可以理解为线上的数据,包括:看广告、点击广告等相关信息。
用户看过广告之后,实际发生转化的数据;包括线上线下,但都是存在广告主系统里。线上,如:用户在 App 内发生的激活、注册、付费等行为;线下,如:用户是否到店、发生购买、参与某项活动等行为。
转化数据跟踪:
跟踪的目的主要是:通过用户标识,将线上线下的转化数据与广告平台的曝光、点击数据关联起来。对于不同的推广场景,常用的转化数据跟踪方式包括: API 对接和嵌入代码。对于不同的广告标的,代码嵌入又分为 SDK 嵌入、 JS 和像素点的方式。
随着互联网广告市场的发展,转化数据越来越成为广告主与代理商、广告平台等角色之间进行效果评估和核算的主要方式之一;另一方面,广告主完成与广告平台的转化数据对接,需要一定的技术实力。在这些因素促使下,作为裁判方的第三方数据监测平台也如同雨后春笋般加入到这场游戏规则中,来帮助广告主和广告平台完成转化数据的对接。
图二 像素代码跟踪转化数据
图三 API 方式跟踪转化数据(以 H5 广告为例)
转化数据归因:
归因,即找到转化发生的源头。归因的目的:根据既定的归因规则,将转化价值进行分配,是什么原因促使用户发生了特定的转化行为。例如:是用户在某个媒体上看到了某个展示广告,亦或是用户搜索了某一个特定的关键词,亦或是用户在看过某一个渠道的广告之后,又在之后看了其他渠道的某些信息等。
目前常用转化归因方式有:
“最终互动”在最终互动归因模型中,最后一个接触点将获得 100% 的销售功劳;
“首次互动”在首次互动归因模型中,第一个接触点将获得 100% 的销售功劳;
“线性” 在线性归因模型中,转化路径中的每个接触点将平分销售功劳;
“时间衰减”在时间衰减归因模型中,最接近销售或转化时间的接触点将获得最多的功劳。
转化数据既然是广告主衡量效果的重要指标,在某些场景下,又是作为广告费用结算的依据。但是根据上述转化数据跟踪和归因方式,大家可能会想到,在转化数据的跟踪上,广告主一定存在着作弊的动机。没错!对于广告平台来说,就需要设计良好的机制,来规避广告主作弊的动机。
转化预估
转化对广告主这么重要,那么转化预估自然是广告系统中一个不可或缺的环节,但是想做好转化预估并没有那么容易:
1、转化数据的特点是海量且稀疏的,我们每天有百亿单位日志规模, 8 亿的活跃用户,数十万的广告,但是用户×广告正例数不足;
2、转化数据噪音较大,由于转化数据是由广告主上报,系统的不可控因素较多,数据可靠性比较差;
3、转化天然的回流时间较长,移动 APP 激活延迟可达数日,电商下单延迟可达数十日;
4、转化预估要求的精度高,因为转化和广告主息息相关,直接影响到广告的投放效果,所以要求预估的精度比其他产品更高。然而,不同类型的转化天然差异较大,更加增加了精准预估的难度。
针对这些难点,我们有什么武器来征服他们呢?
我们设计和开发了数据驱动的转化率预估系统,其中包含:1. 多数据源、可配置的数据流模块,实现了数据清洗、采样,特征抽取、组合,支持自动化特征选择功能,多人并行优化;2. 基于 Online Learning 的大规模并行训练模块,支持千亿级样本规模的训练数据;3. 多维度、体系化的评估模块,对业界常用的 Bias 、 AUC 等指标算法进行优化,支持广告级转化率准确度评估。
a) 全流程数据驱动的模型训练框架
传统的基于统计的转化率预估,准确度不高,无法差异化的预估每次流量的广告主价值。为解决这个问题,业内一般采用数据驱动方法,基于大量用户历史数据,引入机器学习算法训练模型,并应用线上系统。需要引入曝光、点击、转化、用户画像、广告画像、第三方平台数据等多种数据源,抽取高维度特征,处理大规模数据,处理复杂的逻辑,对效率和实时性也有较高要求。
图四 GoingMerry 系统框架
b) 大规模并行化训练系统
转化预估不论是训练速度, 还是训练方式,都需要一套可扩展的大规模并行训练系统来更好的支持。前文提到我们的系统支持 LR 、 FM 、DNN 等多种训练算法,这里只说下观察到的参赛选手提到最多的 LR 。
逻辑回归应该算是最常用的机器学习算法了,它有理解起来简单,易于并行化,值域区间为 [0,1] 等特点,很适合使用在点击率预估或者转化预估等工作。发展至今,逻辑回归的优化算法也多种多样,例如常用 SGD 、 LBFGS 、 OWLQN 等。目前赛题的数据量较小,使用现有的单机算法应该就能有不错的效果。
业内使用较多是 Google 提出的 FTRL 算法。 FTRL 算法核心是一种 online 的逻辑回归,在原始演算法上加入 L1 , L2 正则化和 adaptive learning 。它能解决传统 SGD 中无法得到稀疏性的问题, 在稀疏性上能够和传统的 OWLQN 达到同样的程度。另外, FTRL 对每一维特征维护一个学习率, 能够得到更佳的模型。
要处理腾讯这种海量数据,算法的并行化必须是标配, FTRL 的并行化可以参考 ParallelSGD 的思路,也可以考虑 Hogwild!的思想;从数据并行,模型并行,或数据+模型并行的角度考虑。总之就是能把大型任务逐步拆解,让机器能够独自完成一部分任务,增强其扩展性。
在我们的系统中,也实验过基于 Hogwild !思想的分布式的无锁 FTRL 算法,并且取得了不错的效果,可以支持亿级特征, TB 级训练数据;使用足够多 parameter server 和 worker 时, 可以支持百亿特征, PB 级训练数据。
c) 多维度、体系化的评估模块
基于以上全流程数据驱动的模型训练框架、大规模并行训练算法,我们可以高效的完成模型训练任务。此时,如何客观、有效的评估模型效果是我们面临的另一个难题。传统的 AUC 算法只是评估所有测试样本之间序的准确性,但是转化产品产品需要精确计算某个广告主每次流量的出价,因此只评估整体测试数据排序准确性不能满足需求。我们在原有算法的基础上进行改进并实现了 WeightedBias 、 MicroAUC 、 EqConvCPA 等多种评估算法,通过传统的 Logloss 和以上算法和可以对模型进行全方位评估。
有了以上各种利器,精准的转化预估,so easy!
领取专属 10元无门槛券
私享最新 技术干货