合约广告的关键特征,是广告投放的价格和量由双方协商约定,合约广告的最初形式是按广告位售卖的CPT广告。
合约广告的重点形式是按指定受众购买的、按CPM计费的展示量合约广告。展示量合约广告的投送系统称为担保式投送系统。它依赖于受众定向、流量预测、点击率预测这三项基本技术,并采用在线分配的方式完成实时决策。
合约广告的担保式投送决策逻辑比较复杂,这里主要从两个方面介绍此问题的一般性思路:
一是在未来流量分布未知的情形下,如何估计在线分配算法的极限性能;
二是在根据历史数据能进行相对合理的浏览预测的情形下,如何利用这些预测搭建一个实用的在线分配系统。
1. 广告排期系统
对于按CPT结算的广告位合约,媒体一般采用广告排期系统来管理和执行。这里需要注意的是,广告排期系统并不是一个个性化系统,也不太需要服务器端的动态决策。
广告排期系统的一般技术方案是将广告素材按照预先确定的排期直接插入媒体页面,并通过内容分发网络(Content Delivery Network,CDN)加速访问。这样可以使得广告投放延迟很小,也没有服务端的压力和开销。
当一些横幅广告位上没有广告位合约,需要用其他服务器动态决策的广告补足时,由于服务器可能出现超时或其他错误导致广告未能返回,那么也需要在页面上展示一个默认广告防止出现广告位的空白,这样的广告称为防天窗广告。防天窗广告由于需要在服务器不工作的情形下补位,因此也应该放在CDN上实现。
1.1 排期与动态广告混合系统
(1)首先,前端的广告位代码从CDN上获取一个默认广告素材以及标示此广告是优先的CPT广告还是防天窗广告的参数。
(2)根据上述参数,如果CDN上获得的是一个CPT广告,那么直接将素材渲染在页面上即可。
(3)如果CDN上获得的是一个防天窗广告,则优先向广告投放机发送请求,如果在指定延迟时间内有广告返回,则将其渲染在页面上。
(4)如果服务器在指定延迟时间内没有广告返回或发生其他错误,则将从CDN里得到的防天窗广告渲染在页面上。
实际的排期和动态广告混合系统,由于有轮播模式的存在和地域定向的需求,会比上述的逻辑更加复杂一些,不过没有原理上的差异。
2. 担保式投送系统
与展示量合约对应的广告系统称为担保式投送(Guaranteed Delivery,GD)系统。在展示量合约这样的交易结构中,只要合约都被满足,系统的收益就是一定的,于是公式2.2中的优化目标变成了常数。
第二章提到的公式2.2
不过,这一系统多了合约带来的一组量的约束条件,因此变成了一个带约束优化问题。关于此问题的具体描述和解法将放在后面的在线分配部分中介绍。有时,展示量合约还会约定投放量未达到时的惩罚。
在此系统中,在线投放引擎接收用户触发的广告请求,根据用户标签和上下文标签找到可以匹配的广告合约,然后由在线分配模块决定本次展示投放哪个广告。完成决策后,将展示和点击日志送入数据高速公路。这些日志一方面进入离线分布式计算平台以后,通过日志的整理,完成合约的计划,即确定在线分配算法的参数,再将分配方案送给线上投放机使用;另一方面,日志也送到流计算平台,在反作弊和计价的基础上,再对索引进行快速调整。可以看出,这一系统的核心技术是在线分配的算法策略与执行过程。
担保式投送需要用到的核心技术,最重要的就是在线分配。除了在线分配以外,担保式投送还有另外两项主要的支持技术:流量预测和频次控制。首先对这两项进行解释。
2.1 流量预测
流量预测的问题可以描述为:给定一组受众标签组合以及一个 eCPM 的阈值,估算在将来某个时间段内符合这些受众标签组合的条件、并且市场价在该 eCPM阈值以下的广告展示量。这里的 eCPM 阈值主要是用于竞价广告系统中,目的是了解在某出价水平下的流量情形。对于展示量合约式广告来说,这个阈值是不需要的,或者为了工程上一致,将该阈值设为一个很大的常数。
流量预测一般的方法其实并不是预测,而是根据历史数据的统计来拟合未来的流量。当然,也可以引入时间序列分析的方法,从流量在时间轴上的规律预测未来某个时间段的流量,这主要适用于需要短时预测的场景,对广告业务来说并不十分必要。
流量预测的一般步骤如下:
(1)准备文档。将历史流量中,(u,c)上的所有标签的展示合并为一个供给节点i,并统计其总流量s(i)以及这部分流量上eCPM的直方图hist(i)。这样的每个供给节点作为流量预测反向索引的一篇文档。
(2)建立索引。对上一步生成的每个供给节点建立倒排索引,文档的terms即为此供给节点(u,c)上的所有标签。同时,在索引的正排表部分记录s(i)和hist(i) 。
(3)查询结果。对一条输入的广告a,将其限定的标签条件作为查询,得到所有符合条件的供给节点的集合。
(4)估算流量。遍历上一步得到的每个供给节点,对于某个供给节点i,首先计算其与该广告 a 的 eCPM 即 r(a,ui,ci)=µ(a,ui,ci)*bid(a) ,然后根据相应的 eCPM 直方图hist(i)计算a能获得的流量。这样,就可以估算出a在出价bid a 情形下近似能获得的流量。
2.2 频次控制
频次,指的是某个用户在一段时间内看到某个或某组广告的曝光次数。
频次控制有客户端和服务器端两种解决方案。客户端的方案就是把某个用户对某个广告创意的频次值记录在浏览器cookie中,投放决策时再把这个值传给服务器来决策创意。这一方案的好处是简单易行,而且服务成本低。缺点是扩展性不好,当同时跟踪多个广告的频次时,cookie可能会变得很重,从而影响广告响应时间。当然,在移动应用广告中利用SDK做前端投放控制的场景,客户端的方案是非常好的选择。服务器端的方案是在后台设置一个专门用于频次记录和更新的缓存,当广告请求到来时,在缓存中查询候选广告的频次,并根据最后实际投放的广告更新频次。
对于频次控制,有两个特点需要注意:
(1)频次存储的规模是有上界的。如果我们在某个时间周期内控制频次,那么上述的频次变量总数一定不会超过这个时间周期内的展示总数,这会远远小于所有可能的(a,u)的组合数量。因此,缓存实际的存储规模没有我们想象的那么大。
(2)当用(a,u)的组合生成缓存中对应的键时,实际上并不需要处理冲突,因为从业务角度来说,对极少比例的冲突组合上的频次控制不准是可以接受的。因此,我们用简单的MD5之类的散列方法生成键就可以,这会比哈希表的方案要简便高效一些。这实际上也反映了广告系统投放过程弱一致的设计原则。
3. 在线分配
在线分配问题指的是在通过对每一次广告展示进行实时在线决策,从而达到在满足某些量的约束的前提下,优化广告产品整体收益的过程。很容易理解,此问题计算上最困难的地方在于“在线”,也就是在信息尚不全面的时候作出决策;而系统上最困难的地方在于分配策略需要是弱状态的,同时各广告投放机之间耦合程度也要尽量低。
在线分配是计算广告中比较关键的算法框架之一,它适用于许多量约束下的效果优化问题,而这实际上是广告业务非常本质的需求。
在线分配问题的重要性已经超越了担保式投送本身。
3.1 在线分配问题
3.1.1 供给与需求二部图
以担保式投送为代表,在线分配问题有两个主要的挑战:一是要在量的约束下优化效果;二是要实时对每一次展示作出决策。直接在这两个要求下优化,会使得求解过程相当困难。因此,在在线分配问题中,一般将此问题简化为一个二部图(bipartite graph)匹配的问题。这里的“二部”指的是代表广告库存的供给节点(集合记为 I,其中某个节点代表的是所有标签都相同的流量库存)和代表广告合约的需求节点(集合记为A)。
在线分配中的二部图匹配问题示意
在这个示例中,左边的6个节点为供给节点,右边的三个节点为需求节点。如果某个供给节点的受众标签能够满足某个需求节点的要求,就在相应的两个节点间建立一条连接边。我们把这个二部图记为G=(I∪A,E),其中 E 为 I 与 A之间边的集合,并用 Γ(a)表示所有与需求节点 a∈A相邻的供给节点的集合,而 Γ(i) 表示所有与供给节点 i∈I 相邻的需求节点的集合。在线分配的任务就是求解由i∈I 到a∈A的分配比例,使得满足供给方和需求方的约束的同时,某个与广告效果相关的目标函数达到最优,下面给出一种形式的最优化目标函数。
目标函数
其中 si 为供给节点 i的总供给量,而 x={x(ia) } |I|×|A| 中的每个元素表示 si 分配给合约a的比例,r(ia)表示有供给节点i和需求节点a综合得到的回报。这就是在线分配问题求解的变量。
3.1.2 需求约束与供给约束
在线分配问题的第一个约束条件是分配给某广告合约 a的收益要至少等于其约定的量da ,这个约束称为需求约束(demand constraint):
需求约束
其中 q(ia) 为将供给节点 i 连接到需求节点 a 的单位流量惩罚,
实际产品中常见的需求约束有两类:一类是预算、服务成本等的上限要求;另一类是合约量的下限要求。在后一种情形下,q(ia)为负数,需求约束实际上描述的是一个收益项的下界。
在线分配问题的另一个约束条件是每个供给节点被分配出去的量不能多于其总流量,这个约束称为供给约束(supply constraint),其意义很容易理解。供给约束可以表示成下面的形式:
供给约束
3.1.3 问题框架
根据上面的讨论,从公式2.2定义的计算广告目标出发,引入供给约束与需求约束,得到下面的在线分配优化问题框架表示:
在线分配优化问题整体框架
除了供给约束和需求约束,上式中还有第三个约束,它用以保证分配变量非负。公式11.4是一个比较一般性的数学表达,不仅仅适用于GD问题,也适用于其他量约束下的在线分配问题。
3.2 在线分配问题举例
3.2.1 GD问题
在线分配的最典型应用就是 GD(担保式投送)问题。在此主要考虑按 CPM结算的市场。在GD合约的情形下,由于按CPM售卖广告在所有合约都满足时,如果不考虑合约a未完成的惩罚,收益是一定的常数。那么GD的优化问题可以写成:
GD优化问题
GD问题的两个约束都非常容易理解:供给约束的含义是每个供给节点分配给所有需求节点的流量比例之和不超过1;需求约束的含义是每个需求节点被分配到的流量总和应该大于等于对应合约的展示量要求。
3.2.2 AdWords问题
AdWords问题,也被称为有预算约束的出价(budgeted bidder)问题,讨论的是在CPC结算的竞价广告环境下,给定各个广告主的预算,整体化市场营收的问题。在这种情形下,问题的目标函数和需求约束都有所变化,其对应的在线分配问题体现为如下的形式:
AdWords优化问题
q(ia)代表的是将关键词i的一次点击分配给广告a的期望收益,即广告a对关键词i的出价,s(i)为关键词 i的总点击量;而 x(ia)为关键词i分配给广告a的流量比例。AdWords问题的优化目标是整个市场的收入最大化;而需求约束的含义是每个广告主的花费应该小于该广告主的预算。
3.4 实用优化算法
假如未来一段时间内需要投放的合约广告是已知的,如果广告流量的分布在各个循环周期内是近似一致的,那么在线分配的问题就可以在流量预测的指导下进行,这是大多数在线分配实用工程方法的基本出发点,下面给出实际工程中的几种方法。
- 直接求解的原始分配方案
- 基于对偶算法的紧凑分配方案
- 综合分配方案SHALE
- 启发式的分配方案HWM
章节相关名词
- ADX 广告交易平台 AD Exchange
- CDN 内容分发网络 Content Delivery Network
- GD 担保式投送 Guaranteed Delivery
网友评论