这篇文章是讨论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. 【翻译】C#和.NET核心快速参考

    原文:[翻译]C#和.NET核心快速参考 PS:在网上看到的一篇C#总结,英文的,总结的还可以,都是基础知识,翻译给大家学习.文章结尾有英文原版.发布地址:http://www.cnblogs.com ...

  2. POJ 3233 Matrix Power Series(矩阵高速功率+二分法)

    职务地址:POJ 3233 题目大意:给定矩阵A,求A + A^2 + A^3 + - + A^k的结果(两个矩阵相加就是相应位置分别相加).输出的数据mod m. k<=10^9.     这 ...

  3. Swift中文教程(四)--函数与闭包

    原文:Swift中文教程(四)--函数与闭包 Function 函数 Swift使用func关键字来声明变量,函数通过函数名加小括号内的参数列表来调用.使用->来区分参数名和返回值的类型: fu ...

  4. 位记录——Windows 7已安装Sublime Text 3、cynwin、SublimeClang

    转载请注明出处:http://blog.csdn.net/cywosp/article/details/34429697 1. 到https://www.cygwin.com/下载setup-x86_ ...

  5. 【Python】Python与文本处理langid工具包的文本语言检测和歧视

    1.问题的叙述性说明 使用Python文本处理.文字有时被包括中国.英语.在日本和其他语言文字,进行处理.这个时候就须要判别当前文本是属于哪个语系的. Python中有个langid工具包提供了此功能 ...

  6. BestCoder Round #11 (Div. 2) 题解

    HDOJ5054 Alice and Bob Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  7. 优秀个人免费私有云OwnCloud 8.0终于发布 - 亮眼新功能初探简介

    OwnCloud是一个基于Linux的私有云开源项目,用户可以免费使用它来搭建自己的私有云来进行文件和多媒体等的分享. 本人有幸在大概一年多前因为项目需要而接触和使用到OwnCloud,但不幸的是当时 ...

  8. Installshield在安装结束时刷新系统

    原文:Installshield在安装结束时刷新系统 在OnEnd里添加代码,两种解决方案 群友kevin的解决方案 #include "ifx.h"  //Call to Win ...

  9. UUShutdown关机工具 - 给 Windows8.1Metro 开始屏幕添加 关机重启按钮

    UUShutdown,给开始屏幕(开始菜单)添加重启关机等按钮 如图: 安装完成之后找到开始菜单程序文件夹中的快捷方式,附加到开始屏幕即可. 2.0加入主程序界面,支持换肤和定时: 看见的需要那就拿去 ...

  10. C#中使用消息队列RabbitMQ

    在C#中使用消息队列RabbitMQ 2014-10-27 14:41 by qy1141, 745 阅读, 2 评论, 收藏, 编辑 1.什么是RabbitMQ.详见 http://www.rabb ...