这篇文章是讨论Datacratic所用的统计和经济理论的一些内容。我们开发了real time bidding算法s。为了实现广告主的目标,我们的算法自动地利用其它广告主的次优策略,并再查看广告的底价。我们想让我们的合作伙伴理解我们用的技术,并且认为它是合理的。“相信黑盒子”的价值观在这我们这里不成立的。

First, Tell the Truth

假设现在有一个效果广告的业务,总预算是$100,000,CPC是$1.00。像其它的DSP一样,需要订阅一个每秒几千的竞价请求(即Ad Call),每次请求都代表一次在特定广告位向特定用户展示的机会。你必须在几十毫秒内,对匹配你定向条件的请求进行出价。那么如何决定出价多少钱呢?大多数实时竞价都采用VCG计费或是二阶计费方式。胜出的是出价最高的竞价者,但他只用付出价第二高竞价者的出价。Ad Exchange采用这种计费方式是因为这方式鼓励竞价者“真实地出价(bid truthfully)”。也是就你应该直接出你认为这次展示所值的价值。但这次展示值多少钱呢?首先目标CPC是$1.00,那么一个不错的假设是认为广告主至少认为这次点击值$1.00。我们假设这个推广计划平均点击率是0.05%。那么如果你胜出这次竞价,那么就有0.05%的机会得到价值$1.00的点击,我们将出价和点击率乘起来,我们可以认为胜出的价值是0.05分。如果你是真实出价(按拍卖理论,你应该这样做),你应该出价0.05分。将其概括成一个公式:

bid = value = targetCPC * CTR

这样解释是不是也太简单了点,而且它没有利用到Adx的实时特性。我们是一家预测分析公司,我们有一些炫的模型,它们可以在实时环境下,以一次预测一个请求的方式,预测一个在特定时间在特定广告位一个特定用户点击特定广告的概率。也就是说你不需要在计算出价时统计这个推广计划的历史CTR,我们使用pCTR模型来预测出价:

bid = value = targetCPC * P(click)

上面的推导看起来没问题,但似乎没什么特别的东西。除了pCTR这个超出本文内容的模型,那竞价的秘诀是什么呢?事实上这个公式只会答了如果你决定竞价你的出价应该是多少。但什么时候应该出价,这个公式没能回答。在出价时,事实上你不应该只看出价,而且要看花费。

To Bid or Not To Bid, or: Cost is not Value

我们在Part0中讨论过,如果你对每一次出价都竞价,你会很快消耗完$100,000,而不会坚持到3个月。我们会比Part0更深入思考一个问题:是否我们可以不随机的选择流量进行出价,而是选择一些最好的请求进行竞价?最好的请求并不是指价值最高的请求,价值最高只是决定最好定义的一半。为了解释这个问题,我们举一个例子,一个采购可以买下图A或B商品进行二次销售。商品A二次销售的价值比B低10%,但它的花费只有B的一半。

两个商品有着相似的价值但不同的利润

在这个例子中价值低的A是更好的商品,因为决定商品好坏的不是价值和花费,而是两者之差,我们称之为利润。

surplus = profit = payoff = value - cost

上面的公式在当你胜出时是成立的,但如果没胜出呢?你将没有可能得到一次点击,所以价值为0,但你的花费也是0。所以我们的期望价值是上面的公式乘胜出的概率:

surplus = (value - cost) * P(win)

现在假设除了Datacratic的pCTR模型,我们还有一个竞争价格(出清价格,是指在市场充分竞争下的价格)预测模型来告诉我们胜出每次请求的概率,那么有了它,我们就可以计算利润了。

曲面是出价和价值的函数,对于任何价值,最大的利润都是在出价=价值时

在Part 0中我们介绍了为了得到预算目标,我们可以只对一部分流量进行竞价,我们应该只选择期望利润最高的部分请求。意味着控制出价的变量不再是出价概率,而且一种衡量你多想参与竞价的一个值:这个值越小,你的选择性就越强。你仍然是通过反馈进行调整,但现在你只是针对你认为能获得最多利润的请求竞价,这样你得到一个较低CPC的机会就变大了。

当你采用真实出价并合理地Pace,你的预算会消耗在最好的请求上,原因或是这个用户很可能点击,或是因为当前没多少DSPs出价,或是没有发布者设置底价。

RTB撕开黑盒子 Part 1: Datacratic's RTB Algorithms的更多相关文章

  1. RTB撕开黑盒子 Part 0:Pacing: is everyone doing it wrong?

    曾尝试为我们的RTB客户解决过Pacing问题,Pacing问题要解决的问题是:如果一个客户给你一笔预算,让你去运营一个广告推广计划,在一定的时间内投放广告,将这笔预算在指内的时间内,比较均匀地将预算 ...

  2. RTB撕开黑盒子 Part 2: Algorithm Meets World

    Part 0介绍了RTB的胜出价格会在凌晨陡升.我们还介绍了一个Pace系统,如果这个系统所有的DSPs都用,那陡升的问题就会消失.Part 0中的系统中含有一个隐式的假设:任何两个请求都认为是相同的 ...

  3. RTB撕开黑盒子 Part 3: Beyond Surplus

    在本文中,我将解释如果要对整个推广计划最大化利润,决定是否应该出价的应该是期望回本率(ROI),而不是期望利润,这与我们以前介绍的有所不同.在Datacratic,我们已经在2012年底切到了基于RO ...

  4. RTB撕开黑盒子 Part 4: Shady Bidding

    在这篇文章中,我将告诉你"真实的出价"比你想的微妙,并且你可以使用基于ROI的pacing策略,不需要构建一个期望扣费的模型,你就可以得到完美的期望扣费模型. Same Same ...

  5. 记录Office Add-in开发经验

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com 得益于微软系强大的共通能力和Visual Studio的开发支持,做Office插件不是什么难事.一点经验记录如下 ...

  6. 【项目】搜索广告CTR预估(一)

    本文介绍CTR相关基础知识. 一.广告投放系统 广告系统包含多个子系统.除了上图所示的广告投放系统外,还包含商业系统(广告库的获得),统计系统(点击展示日志的获得)等. 广告投放系统主要是面向用户的, ...

  7. 详解eNSP下的PPP之MP、PAP/CHAP认证实验配置

    一.PPP MP实验(用虚拟模板配置) 1.拓扑图

  8. C#编写记事本(高仿)

    近一周写的关于记事本的代码,高仿记事本.本人C#入门不久,其中存在代码冗余,但懒得修改了. 经测试运行正常. 一.主窗体设计及代码 namespace BestEditor { public part ...

  9. C# 线程更新UI

    最方便的用法: private void ViewMsg(string msg)        { /* control.Invoke(new SetControlTextDelegate((ct,  ...

随机推荐

  1. redis修改的源代码zincrby,hincrby命令

    在项目中大量使用zincrby命令.究其原因是统计一些统计指标的日志值,和需要返回到顺序topn. 通常情况下,.调用一次的指示器zincrby(zincrby default:type 1 type ...

  2. 关于SelectedItems的问题

    在做俄罗斯方块的时候写了以下一段代码: private void listView1_SelectedIndexChanged(object sender, EventArgs e)        { ...

  3. 开源Dubbox

    当当网开源Dubbox https://github.com/dangdangdotcom/dubbox https://github.com/alibaba/dubbo http://www.inf ...

  4. AngularJS + Node.js + MongoDB开发

    AngularJS + Node.js + MongoDB开发的基于位置的通讯录(by vczero) 一.闲扯 有一天班长说了,同学们希望我开发一个可以共享位置的通讯录,于是自己简单设计了下功能.包 ...

  5. angular实例

    angular实例教程(用来熟悉指令和过滤器的编写) angular的插件太少了,  所以很多指令和过滤器都要自己写,  所以对指令传进来的参数, 以及angular编译的流程更加熟悉才行写出好的插件 ...

  6. jQuery数字加减插件

    jQuery数字加减插件 我们在网上购物提交订单时,在网页上一般会有一个选择数量的控件,要求买家选择购买商品的件数,开发者会把该控件做成可以通过点击实现加减等微调操作,当然也可以直接输入数字件数.本文 ...

  7. HTTP2协议之HPACK--之头部压缩规范介绍

    接下来打算把HTTP2协议的头部压缩算法给翻译下,敬请等候. HPACK - Header Compression for HTTP/2 HPACK:HTTP/2头部压缩 概要说明 这个规范定义了HP ...

  8. Unity3D开发必备神器(Visual Studio Tools for Unity)

    Unity3D开发必备神器(Visual Studio Tools for Unity) 开发Unity3D程序你用的什么IDE呢? 1.MonoDevelop 2.VS 可能你的回答是这样的,我用的 ...

  9. 什么是Solr搜索

    什么是Solr搜索 一.Solr综述   什么是Solr搜索 我们经常会用到搜索功能,所以也比较熟悉,这里就简单的介绍一下搜索的原理. 当然只是介绍solr的原理,并不是搜索引擎的原理,那会更复杂. ...

  10. Spring.NET学习

    Spring.NET学习笔记——目录(原)   目录 前言 Spring.NET学习笔记——前言 第一阶段:控制反转与依赖注入IoC&DI Spring.NET学习笔记1——控制反转(基础篇) ...