自从Facebook引入oCPM出价以来,国内的头条广告、微信广点通、百度信息流都陆续推出了自己的oCPX出价,oCPX出价已经成为主流广告投放平台的标配。

简单而言,oCPX是一种出价机制,允许广告主按照转化行为成本出价;假设对于游戏类的广告主,希望优化App的激活,那么广告主在投放系统中设置了激活成本之后,算法就会根据以往转化数据和广告主的出价,自动筛选有价值的人群,针对高激活概率的人提高出价赢得广告曝光,对低激活概率的人群降低出价减少广告曝光以减少广告浪费。

常见的广告出价方式还有CPM、CPC。

  • CPM:Cost Per Mille,每千次曝光成本,即按照曝光次数出价,如微信朋友圈视频形式广告在上海就按照¥180一千次曝光扣费,不管你是否点击了广告。这在短期内显然是最有利于媒体的,因为它不用care本次曝光是否有效;但是为什么说是短期?很简单,广告主又不是傻子,若发现广告后续转化一直很差,势必会减少在该媒体的投放。
  • CPC:Cost Per Click,按照点击出价,如果广告只有曝光没有点击,就不扣费;看似比较公平,但是广告主需要大量的测试,才能找到最优的投放方法,其实还是有一部分点击是浪费的,这对于媒体也是损失。

于是oCPX模式就应运而生,它能帮助广告主优化更深层次的转化行为,同时提升有效点击,提高媒体受益。

这段时间在网上找到一篇淘宝的关于oCPC论文,逻辑很清晰,在这里简单转述一下。

文章细节很多,没兴趣看的同学只要关注以下几点:

  1. 本次预估的点击率*转化率与历史平均的点击率*转化率的比值,决定了系统出价调整的系数;
  2. 淘宝的论文中,广告保证eCPM最大和各方利益总和最大。

先定义:

  1. 出价:广告主原始出价为b0,算法调整后的出价为b1(也就是我们经常说的:“系统会自动调整出价”);
  2. 预估转化价值p=pCTR*pCVR*v;v代表平均每次购买带来的价值,可以假定是常数;pCTR表示预估的广告点击率,pCVR表示预估的转化率(如转化行为可以定义为“购买”);
  3. 历史转化价值h=hCTR*hCVR*v;hCTR代表历史广告点击率,hCVR代表历史点击后转化率;淘宝实践中,hCVR是用过去一段时间的竞品广告数据(估计是解决冷启动的问题,如果账户已经积累了转化数据,肯定会用广告主自己的数据),利用pCVR预估模型进行计算,去掉最高&最低10%取均值得到的。

为了简化说明,做两个假设:

  1. 假设广告主的目标是保证(或者提高)ROI;
  2. 单个点击ROI = (pCTR * pCVR * v)/ b0;b0是该广告出价,比如广告带来的购买GMV除以该广告的投放费用,即得到该广告的ROI(为了简化计算方式,假定广告主出价即等于广告点击费用,即不考虑广义次高价的逻辑,广义次高价GSP机制可以参考此前的的文章)

要维持或者提升ROI,那么只需要保证 b1/b0 ≤ p/h。

b1代表算法优化后的出价;举个例子,假设本次曝光,预计能带来1.5倍的转化价值,那么只要优化后的出价/广告主出价小于等于1.5倍,那么整体的ROI是不会下降的;反之,若预估转化价值低于历史均值,那么降低出价;由于b0、p和h都已知,那么只需计算b1,满足该约束即可。

真实广告投放环境中,为了兼顾品牌安全和账户稳定,将b1/b0的范围控制在[1-α, 1+α]范围之内,淘宝论文中将α值设置为0.4,即广告最高出价不会超过广告主设定的140%,下限也不会低于广告主设定的60%。

  • 若p/h≥1,那么系统优化后出价b1的下限l(b)=b0,出价上限u(b)=b0*min(1+α, p/h))(因为有ROI约束在,不能突破p/h的约束);
  • 若p/h<1,那么系统优化后出价b1的下限是l(b)=b0*(1-α),上限是u(b)=b0。

通过以上约束,也就能实现我们经常说的:对于转化概率高的流量(p/h>1,即本次广告转化率比历史平均转化率要高)提高出价,获得更高展现概率;反之,对于转化概率低的流量(p/h<1)降低出价,减少展现机会。

那么问题来了,若多个广告竞争,到底谁赢得此次出价?

广告排序我们都知道采用了eCPM排序,eCPM=b0*pCTR,eCPM高者赢得广告展现机会。那么在ROI约束下的,eCPM能够取到的最大值即上限u(eCPM)=pCTR*u(b),eCPM能够取到的最小值即下限l(eCPM)=pCTR*l(b);

淘宝给定的排序机制是:按照eCPM排序,同时保证各方利益总和最大。

各方利益总和的计算,淘宝给出了两个公式:

f(1) = pCTR1 * pCVR1*V

f(2) = pCTR2 * pCVR2*V+β*CTR2*b0

f(1)计算的是广告带来的所有GMV;f(2)计算的是广告带来的GMV和平台的广告收益。需要指出的是,f可以扩展,因此可以优化任何目标;这里认为f是单调递增函数,随着系统调整后的出价b1提高,收益也提高。f(1)虽然没有将b1作为参数,但是假设b1的增加,能拿到更好的资源位从而带来更高的CTR、更加优质的流量。

广告排序过程如下(稍微有点繁琐,请记住每个字母代表啥意思):

① 对候选广告池子A中每一个广告计算f(u(eCPM)),按倒序排序;即按照最高出价来计算f,由于假设f是b1的递增函数,那么按照b1的上限值来计算,理论上是能保证f最大,即保证各方收益总和最大;

② 计算所有备选广告中,所有eCPM下限的最大值t=l(eCPM);

③ 按顺序,找到第一个满足u(eCPM)≥t的广告k,k广告赢得此次竞价,并将该广告移出A池子;即,只要某条广告最高出价下的eCPM大于其他广告的最低出价下的eCPM,就能赢得此次广告曝光。这是为了保证媒体收益,如果只按照f排序而不考虑eCPM,那么可能对于媒体而言是一个亏本的买卖;

④ 比较剩下所有广告的最大出价下的eCPM即u(eCPM)与上一个赢得广告k的u(eCPM),取两者当中最小值,这样就能保证已经赢得展现机会的广告k的eCPM,在所有候选广告中是最大的;若广告i的eCPM上限u(eCPM)被调整,也就意味着广告i的eCPM上限u(eCPM)大于广告k的u(eCPM),将其调整为广告k的u(eCPM)。

此时,那么广告i的出价同样需要被调整,看淘宝的代码更直观一点:

  • 第一步:u(i-eCPM)=min(u(i-eCPM),u(k-eCPM));
  • 第二步:u(b)=min(u(b),u(i-eCPM)/pCTR);

第一步首先比较广告i的上限eCPM与已经赢得展现机会的广告K的上限eCPM,取两者 当中最小值,这就能保证已经赢得曝光的广告k的eCPM是最大的。

第二步,更新广告i的出价上限;如果u(i-eCPM)在第一步被更新了,那么广告i的出价 在第二步也会被更新;需要注意的是,由于出价上限改变了,那么广告i的f(u(eCPM)) 同样会被更新(由于f()是一个单调递增函数,f()会减小);

至于这里为什么要调整剩余候选广告上限eCPM,使其不高于胜选广告的上限?我的理解是(不一定准确):首先是兼容eCPM排序机制,也就是保证了媒体收益最大化;其次,兼顾f(u())排序是为了保证平台、广告主和消费者的利益。

重复以上4个步骤,直至广告数量填充满所有广告位,或者所有没有广告赢得该次展现,此时结束循环,并将所有广告出价b1设置为u(eCPM)/pCTR,也就是所有广告按照上限出价。

投放启示:

① 单纯从逻辑上看,真实出价是对广告主最优的策略。若广告主最初出价b0小于其真实成本,那么拿不到预期的流量,这对广告主不利;若最初出价b0高于其真实成本,这对拿量有好处,但是会导致模型会不断往该出价水平去靠近(p(c|u,a)/h(c|u,a)不断趋近于1),后期要控成本时势必需要重新积累数据重新学习;

② 开启oCPC之前,需要稳定的投放。换句话说,用户转化路径是走得通且成本达到预期的。比如目前虽然激活成本达标,但是后续的转化(注册、购买、申请贷款等等)都还不达标,即使开启oCPC去优化激活意义也不大,因为这样带来的激活用户后续转化率也不会存在很大变化。

这是淘宝oCPC的思路细节,我们跳出这些细节,看看一条广告从请求到展现涉及到的全过程:

为了保证不丢失细节,我直接把论文描述贴过来:Front Server接收到页面曝光请求之后,将该用户信息传给Merger Server,Matching Server分析得到该用户的特征(一连串的标签),这些标签被传入Search Node Server检索符合条件的候选广告,此时候选广告数量降低为400条左右。

Real-time Prediction Server预估得出pCTR和pCVR。Stragedy Layer包含oCPC的逻辑和GSP机制。经过该逻辑层,赢得展现的广告被Data Node Server和Smart Creative Service优化,最后Front Server返回广告元素并展现。

淘宝论文直达,点击

广告中oCPX到底是如何进行优化的相关推荐

  1. 广告中oCPX到底是如何进行优化的?

    自从Facebook引入oCPM出价以来,国内的头条广告.微信广点通.百度信息流都陆续推出了自己的oCPX出价,oCPX出价已经成为主流广告投放平台的标配. 简单而言,oCPX是一种出价机制,允许广告 ...

  2. KDD 2021 | Neural Auction: 电商广告中的端到端机制优化方法

    ▐  导读 拍卖机制设计一直是计算广告领域的核心问题,在本文中我们将机器学习和机制设计方法深度融合,提出一种基于深度神经网络建模的电商广告拍卖机制,并在满足 Value 最大化广告主激励兼容的机制解空 ...

  3. 腾讯广告X中科院计算所WWW2021论文:在线广告中的探索与优化

    ​ 01 让人头疼的赌博机 未来的某一天,疫情终于结束了,大家都开开心心地出门旅游.如果你是去澳门和拉斯维加斯的赌场,一定会看到这样的成排的老虎机. 每台老虎机都可以投币,按下按钮或者拉一下拉杆之后屏 ...

  4. 淘宝展示广告中的优化点击成本算法

    Optimized Cost per Click in Taobao Display Advertising Han Zhu, Junqi Jin, Chang Tan, Fei Pan, Yifan ...

  5. 深入互联网广告中的出价模式(中) — 智能出价模式

    (上)篇回顾 在(上)篇中我们探讨了出价模式的"四点三率两控制一加强"分析模型中的"四点三率".其中"四点"即竞价点,计费点,出价点,考核点 ...

  6. 深入互联网广告中的出价模式(上)— 基础出价模式

    一. 导读 互联网广告中的出价模式发展经历了许多变迁.从一开始的CPM,到CPC出价模式,随着Facebook的oCPX (如oCPM/oCPC) 成为了网红,之后的双出价,激活且付费,Faceboo ...

  7. 申探社:深入互联网广告中的出价模式(上)— 基础出价模式

    转载: 一. 导读 互联网广告中的出价模式发展经历了许多变迁.从一开始的CPM,到CPC出价模式,随着Facebook的oCPX (如oCPM/oCPC) 成为了网红,之后的双出价,激活且付费,Fac ...

  8. 深度学习新技术在搜狗搜索广告中的深化应用

    大家好,我是来自搜狗搜索广告应用策略研究组的舒鹏,目前主要负责搜索广告算法研究工作,今天的题目是深度学习新技术在搜狗搜索广告中的深化应用.深度学习技术已经出现很多年,它在各个场景中都有应用,本次演讲的 ...

  9. 阿里妈妈品牌广告中的 NLP 算法实践

    导读:本次分享的主题为阿里妈妈品牌广告中的 NLP 算法实践,主要内容包括: 1. 品牌广告业务模式与技术架构的简要介绍 2. NLP 算法在品牌搜索广告中的实践,以两个具体的算法问题展开:品牌意图识 ...

最新文章

  1. 卷积神经网络CNN---权值共享
  2. 【项目实战】SQL :部门花名册PBI展示
  3. 【MFC】带下拉菜单的工具栏
  4. 手机1像素线粗_关于移动端开发 1px 线的一些理解和解决办法
  5. 用计算机怎么录资料,如何在短时间内快速录入大量数据 -电脑资料
  6. ubuntu好文收集
  7. TripleDES加解密Java、C#、php通用代码
  8. C#静态类,静态构造函数,静态变量
  9. linux下启动管理,rEFInd启动管理器配置文件详解
  10. java下载不了怎么_如何下载和安装Java
  11. Hololens开发学习笔记——海康摄像头直播视频流
  12. $.ajax.submit,jQuery中的AjaxSubmit使用讲解
  13. 关于电子科技大学学生用餐状况的一些调查
  14. 实例学习之仿点点博客
  15. 如何培养孩子一年读100本书
  16. Autodesk AutoCAD 2019.1.2下载和安装 + CAD视频教程一套
  17. 【电脑】你了解电脑吗?
  18. 斯福尼健康采暖,终结健康杀手——雾霾
  19. 学校计算机培训计划怎么写,学校计算机培训计划_共3篇.doc
  20. 软件开发过程与项目管理(1.项目管理概述)

热门文章

  1. android 4.0 电话录音,ANDROID音频系统散记之四:4.0音频系统HAL初探
  2. vba移动文件_Excel VBA之FSO-2.3文件夹的移动
  3. linux耳机检测,Audio Jack 的耳机检测和按键检测
  4. java上传文件至nas_使用JCIFS上传文件至NAS设备(Logon failure: unknown user name or bad password)解决...
  5. 三维空间长度温度数量_风电叶片模具水循环温度控制机及其智能化控制解析
  6. Linux内核判断大小端,linux kernel 如何处理大小端
  7. python集合数据对象_python学习第七天 基础数据类型补充 深浅copy 集合 关键字后面加可迭代对象...
  8. STM32的GPIO为输出模式时获取其输出状态
  9. java 招聘需求_Java人员要具备哪些技能 招聘需求包括什么
  10. python异常处理_Python基础语法案例(Fibonacci):选择结构、循环结构、异常处理结构、代码优化...