RTB撕开黑盒子 Part 2: Algorithm Meets World
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的更多相关文章
- RTB撕开黑盒子 Part 1: Datacratic's RTB Algorithms
这篇文章是讨论Datacratic所用的统计和经济理论的一些内容.我们开发了real time bidding算法s.为了实现广告主的目标,我们的算法自动地利用其它广告主的次优策略,并再查看广告的底价 ...
- RTB撕开黑盒子 Part 0:Pacing: is everyone doing it wrong?
曾尝试为我们的RTB客户解决过Pacing问题,Pacing问题要解决的问题是:如果一个客户给你一笔预算,让你去运营一个广告推广计划,在一定的时间内投放广告,将这笔预算在指内的时间内,比较均匀地将预算 ...
- RTB撕开黑盒子 Part 4: Shady Bidding
在这篇文章中,我将告诉你"真实的出价"比你想的微妙,并且你可以使用基于ROI的pacing策略,不需要构建一个期望扣费的模型,你就可以得到完美的期望扣费模型. Same Same ...
- RTB撕开黑盒子 Part 3: Beyond Surplus
在本文中,我将解释如果要对整个推广计划最大化利润,决定是否应该出价的应该是期望回本率(ROI),而不是期望利润,这与我们以前介绍的有所不同.在Datacratic,我们已经在2012年底切到了基于RO ...
- 基于消逝时间量的共识机制(POET)
来自于Intel project:Hyperledger Sawtooth,目前版本 PoET 1.0 PoET 其实是属于Nakamoto consenus的一种,利用“可信执行环境”来提高当前解决 ...
- Hyperledger中的共识机制
Hyperledger Consensus 共识过程 Hyperlydger中建立共识的过程由以下两个独立的过程构成: Ordering of transactions (交易排序) Validati ...
- Customizable Route Planning
w https://www.microsoft.com/en-us/research/wp-content/uploads/2011/05/crp-sea.pdf 1 Introduction The ...
- [Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型
深度学习掀开了机器学习的新篇章,目前深度学习应用于图像和语音已经产生了突破性的研究进展.深度学习一直被人们推崇为一种类似于人脑结构的人工智能算法,那为什么深度学习在语义分析领域仍然没有实质性的进展呢? ...
- 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 ...
随机推荐
- 【BZOJ3450】【Tyvj1952】Easy 可能DP
联系: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网 ...
- 【Swift】 GET&POST请求 网络缓存的简单处理
GET & POST 的对比 源码:https://github.com/SpongeBob-GitHub/Get-Post.git 1. URL - GET 所有的参数都包含在 URL 中 ...
- SQLServer 使用 @@ERROR
原文:SQLServer 使用 @@ERROR 使用 @@ERROR 如果最后的 Transact-SQL 语句执行成功,则 @@ERROR 系统函数返回 0:如果此语句产生错误,则 @@ERROR ...
- 创建位图画刷(CreatePatternBrush)
3.创建位图画刷(CreatePatternBrush) CBitMap bmp; bmp.LoadBitMap(IDB_MYBITMAP) ; CBrush bs ; bs.CreatePatter ...
- 持续交付工具ThoughtWorks Go部署step by step
持续交付工具ThoughtWorks Go部署step by step http://blogs.360.cn/360cloud/2014/05/13/%E6%8C%81%E7%BB%AD%E4%BA ...
- winform屏幕截图
原文:winform屏幕截图 屏幕截图是一个比较常用的功能,在项目中出现的比例也比较高,至少我做过的每个项目都有屏幕截图这个功能,从全屏截图到区域截图都有出现过.当然区域截图已然包含了全屏截图. 全屏 ...
- 从Access创建Sqlite数据库
首先,我们需要使用SQLite Expert Professional 工具 1.创建一个新的数据库 2.由SQLite Expert创建数据库.然后import --〉Data Transfer W ...
- 深入理解C指针之四:指针和数组
原文:深入理解C指针之四:指针和数组 数组是C内建的基本数据结构,数组表示法和指针表示法紧密关联.一种常见的错误认识是数组和指针完全可以互换,尽管数组名字有时可以当做指针来用,但数组的名字不是指针.数 ...
- Roundabout for jQuery
效果图: Roundabout是一个转换静态HTML元素结构为交互式播放区域的jQuery插件(而且并不仅仅是一个转盘,还有许多的形状) 首先你要下载好Jquery.min.js,和Jquery-Ro ...
- lambda 表达式 自定义查询
遇到 这样的 问题 常用 EF . 实现 like 用 Contains("asd") 搞定 他生成的是 %asd% . 如果 我希望 生成 asd%,怎么搞呢? Start ...