广告策略系统设计(文末赠书)

文末有赠书活动
广告系统根据业务过程可以分为广告投放与广告播放。广告投放包括一些对外界面和接口,例如审批、CRM、广告位管理、运营数据分析等系统;广告播放包括广告数据库、广告发布数据流、广告检索、广告粗排、精排等系统,其中粗排与精排属于广告系统策略的重要模块。图7-3广告系统架构图7-3所示为一个广告系统架构,其中AD Mixer是一个在线数据整合模块,它调用检索子系统AD Retrieval获取TopN的广告列表。粗排作为程序插件嵌入到AD Retrieval中,用于广告定向检索之后的打分、排序与筛选,精排作为程序插件嵌入AD Mixer中,AD Mixer调用精排模块对TopN的广告列表进行进一步精排。整个排序过程如图7-4所示。其中粗选模块对检索返回的符号定向条件的广告进行粗略的排序,返回TopN条(如75条)给AD Mixer模块。AD Mixer将两路AD Retrieval返回的初选广告进行归并,调用L3、L4模块进行精选,L3排序主要利用粗排的打分进行归并,L4模块利用广告出价、广告质量分、pCTR、pCVR等因子对广告列表进行重排序。图7-4 精排与粗排过程

1 广告系统粗排设计

广告检索模块在数百万广告中挑选出满足广告定向条件的广告,然后调用广告粗排模块,广告粗排模块作为检索模块的插件接入系统。同时调用检索模块提供的数据访问接口访问广告元数据,生成排序因子进行排序。广告检索与广告粗排的接口关注点包括:

  • 将广告元数据编码为从1开始、顺序递增的本地索引(local index),广告粗排可以O(1)的复杂度访问广告元数据,这对粗排性能非常关键;
  • 提供命中访问接口(HitIterator),广告粗排可以利用检索Token命中的信息;
  • 提供双缓存(double buffer)的增量更新通道,为广告下线等信息推送到检索并供粗排访问提供快速通道。
如图7-5所示,广告粗排用到的数据包括全量广告文件、离线CTR、离线CVR、广告主分级等。图7-5 广告检索与粗排流程
  • 全量广告文件:包括当前时间点所有的广告信息,包括广告素材、广告定向、竞价信息、预算控制策略等等,是所有用于广告服务的信息的超集。
  • 离线CTR:利用广告主和广告的曝光点击数据得到的统计CTR。广告主数据用新广告CTR的平滑预估。如果是新的广告主创建的新广告,由于没有其历史数据,会采用一个默认值作为贝叶斯平滑项,平滑公式为(ad_click + (C – ad_impr) * advertiser_ctr) / C,其中C=10000,ad_click为广告点击数,ad_impr为广告曝光数,advertiser_ctr为广告主点击率。如果ad_impr > C,则直接计算ad_click / ad_impr。曝光点击数据采用指数平滑的形式进行累计。
  • 离线CVR:对转化目标出价的广告,在计算eCPM时需要乘上CVR,这份数据会同时被用于计算离线eCPM和粗排阶段的eCPM。在图7-5中的索引构建阶段,会首先尝试绑定广告的CVR数据,如果没有找到,则尝试绑定广告所属类目的默认CVR,如果类目默认值也没找到,则绑定失败。
  • 广告主分级:根据广告主的历史记录统计广告主分级信息,主要用于计算广告质量分。
在索引构建阶段会利用离线CTR、离线CVR数据来计算广告的离线eCPM分,对于检索返回结果采用离线eCPM分来排序。广告检索集群按照广告编码ID的奇偶分为2路,同时短时间内新增或者修改的广告进入快速广告检索集群。在所有路处理完之后进行多路结果的合并,如果广告检索与快速检索出现相同的广告,则选择广告检索路的结果。图7-6 粗排触发流程
如图7-6所示,处理广告时,首先根据广告定向条件从索引文件中检索出候选的广告列表(按照离线eCPM分排序)。如检索结果过大,可能会需要较长的时间进行粗排,从而导致处理请求超时,这时需要对检索结果进行截断,截断后的广告列表会以本地索引的形式调用粗排插件进行处理。

2 广告预算控制系统

广告预算控制系统按照设定的策略来分配广告主的预算,使预算均匀地消耗与分布于广告的全生命周期,并在这个时间跨度上优化广告主设定的目标,例如以到更低的竞价获得更多的点击等。在Facebook广告系统中,预算控制系统是Pacing,Facebook的广告默认配置了Pacing。下面我们通过一个例子来分析Facebook Pacing的工作过程,这个例子是基于点击目标的,但对曝光、转化、行为等也适用。
  • 假设广告主A希望推广一件体育用品,他配置日限额为100元,竞价方式为CPC,他根据经验评估每个点击的价值为50元。
  • 广告主A在Facbook创建一个广告,优化LINK_CLICKS,根据广告主的真实估值,设定bid_amount为50,billing_event为LINK_CLICKS,定向人群为男性、25~35岁。
  • 广告主的利润为点击产生的价值减去消耗的广告费用。
假设一天中所有目标(点击、展示等)的价格都是已知的,我们可以根据价格来订购点击,简化分析过程。Facebook Pacing是广告系统提供的一个产品,着重于提升广告主竞标空间的最佳利益。按照Facebook的介绍,“当固定一个不变的报价时,开启Pacing功能与不开始Pacing功能或者报价过低或过高相比,广告主能实现更大的价值。” Facebook Pacing通过预测竞争广告商的独立运动来确定对广告报价进行调节的范围。Facebook利用从广告客户历史数据中了解的广告客户出价方式的数据以及与预测广告定向人群相同的广告主的历史数据,来预测调节范围,用公式表示为最终单展示出价=小于最高出价的单展示优化出价✖点击率。公式中CTR是点击率,应用于点击计费,当应用于展示时可以是VTR(view-through-rate)或者CVR(conversion rate)。Pacing 的核心是基于反馈系统,并使用各种因子(如广告类型、定向人群、时间、展示内容等)来预测和调节最优出价。Facebook同时持续不断地校准转化率,使之与广告主真实的转化率契合,不过Facebook强调转化率不属于Pacing的范畴。Facebook的Tracking系统使广告主可以跟踪用户与其广告的互动,Tracking规范可以与不同的竞价方式(如CPC或CPM)配合使用。
  • Tracking配置使广告主可以跟踪用户与广告的互动,Tracking系统仅用于跟踪,不用于优化目标转化,也不用于扣费。
  • Tracking配置可以用于任何竞价类型和任何广告样式,如需指定Tracking配置,可以在广告中设定tracking_specs字段。
  • 广告系统根据竞价目标设定默认的Tracking配置,广告主可以按需跟踪更多的行为。例如一个推广POST的广告默认跟踪POST_ENGATEMENT目标,广告主如果在落地页植入了转化SDK,同时也可以跟踪转化。
Pacing的流程如图7-7所示,广告主指定广告计划以及广告预算、期限和一个或者多个推广目标,这时一个在线系统将预算、期限、目标分割成一系列的区间。例如,如果广告期限是1周,期限区间可能是1天。广告系统保存了广告播放的历史数据,例如广告从开始播放到当前时刻的PV(Page View,广告展示次数)和UV(User View,广告展示到的独立用户数),广告系统利用这些历史数据以及需要达成的PV和UV生成PV区间和UV区间。PV区间决定了在该时间区间广告需要达成多少曝光展示,UV区间决定了在该时间区间广告需要触达多少用户。广告系统根据广告总预算和当前已经消耗的预算生成一个播放控制因子,并使用该播放控制因子来调节广告竞价。同时广告系统利用PV区间、UV区间以及广告竞价的历史数据创建一系列过滤器,这些过滤器用于判定广告计划中的某个广告,是否能进入广告竞价。例如某个过滤器可能决定广告计划中进入广告竞价的广告百分比,某个过滤器可能基于UV区间和已完成的广告竞价历史数据,来将广告展示给从未展示过的用户。某些过滤器可能对广告生成一个随机数,通过该随机数小于过滤器对应的因子,则允许该广告进入竞价。
图7-7 广告预算与消耗控制流程例如,一个广告计划期限为5天,预算为100万元,目标是获得100万PV和4万UV。基于这一个配置,广告系统将100万元预算分配到5天,每天20万元,将100万PV的目标分配到5天,每天20万,将4万UV的目标分配到5天。在第一天结束后,该广告计划消耗了20万元,获得20万PV和3万UV;到第3天结束时,该广告计划消耗了60万元,获得60万PV和9万UV。这里UV没有严格控制,广告系统认为更多的触达用户对广告主是有好处的。

3 广告调价算法

在oCPM等广告竞价方式中,广告主对转化目标出价,根据展示扣费,广告平台同时根据竞争环境自动调节广告主出价。本节介绍一种适用于电商场景的出价调节方法,在保持广告主ROI不变或者提升的前提下,提升GMV指标。首先,广告主单次点击的ROI定义为其中c代表转化,u代表用户,a代表被点击的广告,p(c|u,a)代表用户对被点击的广告的转化率,代表广告a对应的预估客单价(如用户付款金额),此时为单次点击的期望GMV。广告主对于广告a跨多个用户的整体ROI定义为其中为用户u对广告a的点击次数。该定义显示,广告主对广告a整体的ROI受到3个因素影响:
  • 转化率的期望值,该值在单次竞价中是稳定值,在实践中,通常由历史数据中统计得到;
  • 广告对应的预估客单价,该值是固定值;
  • 广告出价,该值是可调节值。
的调节应该保持不变或者提升,按照定义即,因此有时,当前流量匹配度高,应该提升出价以帮助广告主获取流量;时,应该降低出价以帮助广告主控制成本。因此可以设定出价调节的下界和上界,分别为其中为广告出价调节范围阈值,控制广告出价处于区间,在该区间按照对应的规则调节出价,可以让广告主获得更优的流量和更高的ROI。然而出价改变之后,按照eCPM的排序公式,其排序也相应地发生变更,因此要维持优化目标与eCPM排序不变,对应的约束条件如下:其中,n为符合条件的广告数,f(·)为优化的目标函数,应为单调递增函数,例如可能有如下形式:
  • 最大化GMV,;
  • 最大化GMV与广告消耗的组合,,α为权重因子。
该约束条件对应的算法如代码清单7-1所示,其中的上下限分别记为。算法首先按照对广告进行降序排列,此时使用上界是因为f单调递增;然后按照排序后的顺序,查找大于所有剩余广告的的第一个广告;找到目标广告之后,需要对剩余广告进行更新,保证挑选出来的广告eCPM最大,从而在排序中胜出。广告策略是广告系统的核心模块,在工作中需要结合实际数据,有针对性地对广告策略进行持续优化,为广告主带来最大的ROI,从而创建持续健康的广告生态。本文摘编自《互联网广告系统:架构、算法与智能化》,经出版方授权发布。(ISBN:978-7-111-72582-4)
延伸阅读《互联网广告系统:架构、算法与智能化》唐溪柳 著融合作者在Google和腾讯的10余年广告工作经验全面讲解互联网广告系统的架构、技术选型、落地方法论、实施路径和行业案例内容简介:这是一部从工程实践角度讲解互联网广告系统的业务价值、产品形态、架构设计、技术选型、落地方法论、实施路径和行业案例的著作,是作者在谷歌和腾讯从事广告系统架构设计与工程实现的10余年经验总结。本书是作者基于自身丰富的行业知识与实战经验撰写而成的,旨在帮助读者深入了解广告平台的建设和完善,获取实战经验,提高自身技能和竞争力。例如,数据工程是大数据平台的核心,而要充分发挥数据优势,就需要强大的系统能力来支持各种针对商业目标的算法实现。本书第5章完整覆盖了数据架构的要素,更介绍了几类常见广告定向特征处理算法,其中包含许多业界难得一见的实战经验分享。第6章专门阐述了实验系统构建的各种细节。本书是“秘笈”,也是极为详尽的大规模广告平台“线路级设计图”。相信无论是系统工程师、算法研究员、产品经理,还是有志于加入广告行业的人员,都可以通过本书深入了解先进广告系统的架构和应用。🎁DataFun赠书福利

 活动规则介绍 

点赞+在看本文,评论区留言分享你对互联网广告系统的看法和经验。(不低于20字)

点赞量最高的5名小伙伴,每人可获得1本实体书《互联网广告系统:架构、算法与智能化》

 活动截止时间 

点赞统计截止时间:10月30日12:00

 奖励领取方式 

10月30日12:00后,请留意公众号私发的消息

相关推荐

  • 通用数仓模型实践
  • 开源软件有漏洞,作者需要负责吗?是的!
  • 【学术相关】陈怡然力荐《关于我博士毕业的这件小事》,Waymo研究员2年半心路分享火了
  • ​目标检测:如何有效实现YOLOv8
  • 双一流高校女教授和校门口摆摊的丈夫,女教授:他都是为了我
  • 从小白到大白 — 如何开发 VSCode 插件
  • 解决import导入顺序杂乱无章的问题
  • 面向知识图谱构建NER任务的多模型投票器:从数据格式到投票规则实现思路
  • 成功保研复旦大学!
  • 项目实践:从0开始搭建基于知识图谱的问答系统(医疗领域)
  • 人工智能最不卷的岗位:深度学习模型推理加速
  • 一个注解让 Spring Boot 项目接口返回数据脱敏
  • VS Code 官网跳转到反诈提醒页面
  • 代码是上午写的,人是下午被开除的
  • Spring Bean 名称暗藏玄机,这样取名就不会被代理
  • 《图解线性代数》中文版.PDF
  • 裁员 14000 人!
  • Java程序员面试应该准备什么?
  • DDD实战:应对并发挑战,五个技巧让你轻松应对
  • 科大讯飞!起飞了!