Part 0介绍了RTB的胜出价格会在凌晨陡升。我们还介绍了一个Pace系统,如果这个系统所有的DSPs都用,那陡升的问题就会消失。Part 0中的系统中含有一个隐式的假设:任何两个请求都认为是相同的,而忽略其它因素,比如请求时间。在Part 1中介绍的竞争价格会随时间而变化,但这个Part 0中的系统是忽略了这一点的。

一些思维敏捷的读者意识到了这个问题,他们评论到如果知道一些时间的胜出价格很高,那这些时间是不应该去竞价的。

本文中将介绍我们以逐请求的方式计算利润的方法,并会解释一个Pacer同时处理竞争价格和展示质量的变化,并且不需要硬编码什么时间不竞价。而达到上述的目标只需要Pacing系统更新控制变量周期变长很多,比如一天,并且控制变量视为一个“最小可接受期望利润”阈值。下图中是比较平均竞争价格和平均期望利润随时间变化的图,图中收集了多天数据,注意可以看到凌晨价格陡升,利润下降:

一个经过很好调整的,不常变化的Pacing系统最后会在图中显示为一条横向的直线,我们只对期望利润超过阈值的请求竞价。这种做法的核心思想是图中的曲线表示某种分布较宽且偏峰的分布平均值,所以即使平均价格上升并且期望利润下降,也并不意味着没有任何好的请求,它只是意味着好的请求变少了。通过设置一个固定的,不常更新的阈值,我们可以在一天任何时间都竞价,只是可能在凌晨少消耗,而且凌晨前多消耗。

这可以说是利用了其它竞价者的次优行为,因为一些竞价者不理性的在凌晨进入竞价,使得市场价格陡升。

我们的算法是采用刮奶油的方式,只对最好的请求竞价。我们在白天竞价时是有所保留的,当其它竞价者预算消耗完后,请求的需求就下降了,这导致市场价格下降,并同时导致期望利润上升,这时我们会加大竞争量。

Navigating Around Publisher Price Floors

我们已经介绍了我们针对其它竞价者的算法策略,再将介绍关于针对发布者的策略。这个系统如何应对发布者的底价呢?底价是指发布者最低愿出售的价格。其实可以理解为发布者也参与这个广告位的竞价。如果没有竞价者超过这个底价,那么就没有竞价者得到这个曝光机会。如果有多于一个竞价者高于这个底价,那么底价是没有影响的,胜出者仍然是付第二名的出价。如果只有一个出价高于底价,那么发布者会多获得一些利润。

First Price

Second Price

Reserve Price

Clearing Price

5

3

n/a

3

5

3

2

3

5

3

4

4

5

3

6

no transaction

这在微观层面是很合理的,如果我们胜出竞价,我们是很乐意接收扣费更高的扣费的:因为我们的出价是我们认为的价值,我们所付的是第二名的出价,两者之差即是我们的利润。发布者更想让按我们的出价扣费,因为如此,他们是有动机将底线不断向上提,这样他们能得到更多的利润。我们的算法采用了应对竞价者的方法来应对发布者的提升底价。在任一时间,Pacer的控制变量告诉我们最小期望利润的阈值。如果发布者提升了它的底线,它们的展示机会的期望利润会下降。如果它下降到阈值之下,我们就不会再对这次请求竞价,而不会去接受它提高会后底线。这就是我们所指的查看底价。控制变量的设置由预测决定的,并基于整个exchange的利润空间决定的。所以任何提高底价的发布者都可能失去我们的竞价,因为我们可以从其它发布者那取得曝光。底线的设置可能会低于我们的出价,但是可能高于第二名的出价,所以我们就会放弃一部分利润给发布者。这也就是exchange存在的意义:市场机制利用竞争使利润空间变大。

值得注意的是在宏观层面上,发布者不需要把它们的流量全部通过RTB方式售出:他们可以以合约广告的方法以更高的价格售出。用广告术语来讲,合约广告流量是“优质流量”,其它的流量是“剩余流量”。发布者因为有广告主可能通过比如RTB的方式得到价格更低的广告效果,发布者是有动机将底价设置的比较高。广告术语是“交叉渠道冲突”,因为剩余流量可能会伤害优质流量的利益。如果发布者出于这种考虑设置底价,那么它们可能设置的比我们的出价还要高,而不是想榨出第一名和第二名之间的利润。结果就是期望利润是零,作为DSP的我们没有必要去为没有利润的请求去出价。Mike on Ads对这个问题有一篇文章很好的解释了为什么发布者这么做不是个好主意。

RTB撕开黑盒子 Part 2: Algorithm Meets World的更多相关文章

  1. RTB撕开黑盒子 Part 1: Datacratic's RTB Algorithms

    这篇文章是讨论Datacratic所用的统计和经济理论的一些内容.我们开发了real time bidding算法s.为了实现广告主的目标,我们的算法自动地利用其它广告主的次优策略,并再查看广告的底价 ...

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

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

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

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

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

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

  5. 基于消逝时间量的共识机制(POET)

    来自于Intel project:Hyperledger Sawtooth,目前版本 PoET 1.0 PoET 其实是属于Nakamoto consenus的一种,利用“可信执行环境”来提高当前解决 ...

  6. Hyperledger中的共识机制

    Hyperledger Consensus 共识过程 Hyperlydger中建立共识的过程由以下两个独立的过程构成: Ordering of transactions (交易排序) Validati ...

  7. Customizable Route Planning

    w https://www.microsoft.com/en-us/research/wp-content/uploads/2011/05/crp-sea.pdf 1 Introduction The ...

  8. [Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型

    深度学习掀开了机器学习的新篇章,目前深度学习应用于图像和语音已经产生了突破性的研究进展.深度学习一直被人们推崇为一种类似于人脑结构的人工智能算法,那为什么深度学习在语义分析领域仍然没有实质性的进展呢? ...

  9. LEETCODE —— Linked List Cycle [Floyd's cycle-finding algorithm]

    Linked List Cycle Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it ...

随机推荐

  1. 【高德地图API】从零开始学高德JS API(五)路线规划——驾车|公交|步行

    原文:[高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行 先来看两个问题:路线规划与导航有什么区别?步行导航与驾车导航有什么区别? 回答: 1.路线规划,指的是为用户提供3 ...

  2. MongoDB在window下的安装

    1.下载mongodb的windows版本号,有32位和64位版本号,依据系统情况下载,下载地址:http://www.mongodb.org/downloads 2.解压缩至D:/mongodb就可 ...

  3. GitBook配置

    GitBook 是一个通过 Git 和 Markdown 来撰写书籍的工具.生成格式有:JSON.ePub.PDF.Website ! ================================ ...

  4. Lucene.Net简介和分词

    Lucene.net站内搜索—2.Lucene.Net简介和分词 2015-03-24 23:10 by 邹琼俊, 118 阅读, 1 评论, 收藏, 编辑 Lucene.Net简介 Lucene.N ...

  5. 代理模式与Android

    代理模式(Proxy) 一.   什么是代理模式 先来看看官方的说法,代理模式就是为其它对象提供一种代理,以控制对这个对象的訪问. 看来这个官方的说法的确有点官方,看了还是让人感觉不点不知所措,还是不 ...

  6. ASP.NET Web API和ASP.NET Web MVC中使用Ninject

    ASP.NET Web API和ASP.NET Web MVC中使用Ninject 先附上源码下载地址 一.准备工作 1.新建一个名为MvcDemo的空解决方案 2.新建一个名为MvcDemo.Web ...

  7. ios 安装OpenFire

    1.开发xmpp官网下载 2.打开openfire.pkg 3.点击继续 4.成功安装后打开偏好设置 ->双击poenfire->弹出窗体[好] 5.随后会弹出以下这个视图 开启 strr ...

  8. MySQL引擎介绍ISAM,MyISAM,HEAP,InnoDB

    MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL. 在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另外两种类型IN ...

  9. Mvc 下载文件

    你如何将文件传送给用户取决于你最开始如何存储它,如果你将文件存入数据库,你会用流的方式将文件返还给用户,如果你将文件存在硬盘中,你只需要提供一个超链接即可,或者也可以以流的方式.每当你需要以流的方式将 ...

  10. 图文解说PhpStorm 7.0版本支持PHP 5.5

    PhpStorm7.0版本终于在2013年与广大开发者见面了!鉴于PhpStorm 7.0测试版中对PHP语言最新版的支持,JetBrains没让大家失望,PhpStorm 7.0正式版本中,最大的变 ...