炼数成金 门户 商业智能 计算广告 查看内容

计算广告小窥(中-2):这孙子怎么什么都知道

2016-4-12 10:46| 发布者: 炼数成金_小数| 查看: 19264| 评论: 0|原作者: 面包包包包包包|来自: 计算广告

摘要: 在上半部分中,我们曾经介绍过程序化交易中的参与者,除了用户外,主要还有代表媒体网站利益的SSP、代表广告主利益的DSP和小三ADX。通俗来讲,SSP是管仓库的,ADX是管传话的,DSP是管花钱的,现在我们要开始聊程序化 ...

算法 模型 机器学习 数学 计算广告

5.3 程序化交易关键技术:出价策略
在上半部分中,我们曾经介绍过程序化交易中的参与者,除了用户外,主要还有代表媒体网站利益的SSP、代表广告主利益的DSP和小三ADX。通俗来讲,SSP是管仓库的,ADX是管传话的,DSP是管花钱的,现在我们要开始聊程序化交易中的关键技术,您觉得我们应该把目光放在谁上面呢?已经讲到现在了,我们要收起情怀,统一思想,当然是要重点关注DSP啦!你可能会想,花钱谁不会啊,这要啥技术?没错,花钱是没什么难的,但对于广告主而言,花钱做广告是一种投资,本质和风投股票文玩楼盘高利贷没什么区别,追求的就是高的投入产出比,真刀真枪的动起钱来,弄不好会走火入魔的。这钱,您还敢花吗?

敢啊!

要是不敢我还怎么写博客嘛,哈哈哈哈哈~~~花钱不要紧,只要能挣就行了呀!那我们就来聊聊如何才能挣的比花的多吧。

5.3.1 出价原则
上面我们提到,广告主花钱做广告实际上是一种投资行为,既然是投资,就要对风险进行评估。具体到DSP来说,“投资”是指广告主投钱给DSP,让其参与实时竞价,期望获得良好的广告效果(点击/购买/注册/下载等);“风险”是指钱花了,但由于效果太差,没见着收益。为了规避风险,获取较高的投入产出比,DSP在出价时需要进行“风险评估”,即预估本次广告展示机会所能带来的收益,以此作为出价的参考。在出价时,要注意以下几点原则,可能并不全面,还请行业内的同学补充。

预算限制:广告主一次就给这么多,超了算你的。
时间限制:到时间花不完就收回去了。
花钱为主:都说了是投资,能花了就别留着。
见好就上:出价与流量品质成正相关。
这些出价原则理解起来没什么难的,但我想要着重说一下第四条见好就上,这才是最关键的部分。如何定义流量品质,又如何出价呢,好戏马上开始。

5.3.2 如何定义流量品质?
所谓流量品质,就是在此时此刻此情此景,用户点击广告能为广告主带来的收益,主要分为两部分:一是点击率,二是点击价值。点击率的预估就不多说了,和媒体网站上点击率预估是类似的,只不过在实时的场景下要求会更高一些。点击价值是什么意思?刘鹏老师在《计算广告》中这样解释道:(有部分修改,括号内容为我的解释)

点击价值可以分解为到达率、转化率和转化单价三个量的乘积。到达率是指实际打开广告次数与点击次数的比例,这与广告主网站的页面你打开延迟关系较大,与媒体的属性、特别是误点情况也有一定关系;转化率指的是到达广告主页以后,有多少比例产生了广告主定义的转化行为(购买/注册/下载等);转化单价是指广告主指定的转化费用(即DSP做一单能挣多少)。

上述三个变量中,到达率和转化单价都是很好统计的,只有转化率的预估是比较困难的。转化率预估的方法可以参照点击率预估,但是由于转化数据要比点击数据少得多,除非是在有充足行业数据支持的情况下,否则用机器学习方法建模有较大困难。实践中比较可行的办法基本上都是简单统计与运营经验相结合来估算转化率。

5.3.3 如何出价?

终于进入到了最核心的出价环节。按照“见好就上”的原则,出价与流量品质成正相关。那到底是采用线性策略好,还是非线性策略好呢?我们来仔细分析一下。

线性出价策略
我们在CTR预估阶段提到过用户注意力,广告位这个物理因素对点击率的影响是十分显著的。我曾看到过一个数字,同样一个广告,把它放在第一位所获得点击率是放在第二位时的两倍。若采用线性出价策略,DSP在出价时就有必要出两倍于第二位的价格去参与竞价。这个思路很好理解,感兴趣的同学可以参照KDD’12的paper《Bid Optimizing and Inventory Scoring in Targeted Online Advertising》。

非线性出价策略
非线性策略是我想说的重点,主要是想借着这个机会介绍一下限制条件下的优化问题以及其解法,这对于我们做科研或者工程项目都是很有帮助的,下面我们通过KDD’14《Optimal Real-Time Bidding for Display Advertising》一文来了解一下非线性出价策略的来龙去脉。以下内容是我对这篇paper的个人理解,可能并不到位,既然写出来就不怕大家笑话啦,有错就改嘛嘿嘿。

<1>. 文章大意
实时竞价的场景中,在预算限制条件下如何设计出价策略是我们关注的焦点。为了实现这一目标,分为三步。第一,将现实问题用数学方法建模为限制条件下的优化问题,并通过拉格朗日乘子法,求得出价策略的数学表达式;第二,利用品友RTB出价算法大赛的数据拟合出价策略中的参数;第三,验证结果,发现了一个有意思的结论:相比少量高品质的展示机会,那些大量低品质的展示机会同样可以具有较好的广告效果,值得出价。这个发现对于那些预算不够,同时又想做广告的小广告主来说,简直就是福音。

<2>. 建立模型
在一切开始之前,让我们先考虑清楚要解决的问题是什么,简单来说就一句话:选择合适的出价策略,在预算的限制下实现广告效果较大化,用数学语言描述就是下面这样:

技术分享
我靠!这一堆是什么玩意儿!你TM在逗我?淡定。。看不懂就对了啊哈哈哈哈!下面我来做一下简化,告诉你这个模型在我眼中长什么样。

这下是不是好多了?反正我第一次看到这个模型就长这样,把积分部分当作一大坨,就很容易看懂了。这个模型一共有两个公式,我们一一来看。

第一个公式是一个等式,等号左边是我们想得到的出价策略函数,等号右边是 跟上一大坨,这里的意思是:当后面一大坨取较大值时,返回在较大值情况下的那个。将等号左右两边连起来,这个等式所表达的意思就是:当后面一大坨取较大值时,返回在较大值情况下的那个作为我们要求的出价策略。这个思路是不是有点眼熟?没错,在前面合约广告关键技术——受众定向中,讲到用户动态特征时我们对泊松分布的处理方式有些类似。综上所述,对于这个等式而言,我们要做的工作就一个:求较大值。

第二个公式是一个不等式,subject to是“受限于”的意思。在这里,又一大坨 !<B想要表达的就是一个限制条件,在等式求较大时插上一脚。还记得我们在高中时学过的线性规划吗,一样的道理。

现在我们的任务已经明确了:在限制条件下求等式较大值。那么这个数学任务和我们的实际问题:选择合适的出价策略,在预算的限制下实现广告效果较大化是怎么匹配上的呢?这就需要去看那两大坨了。那一大坨全都是各种符号,我们看不懂,所以需要一张符号对照表,如下图。为了方便,我再把模型公式再贴一次。
技术分享

有了符号定义和模型,我们开始聊(啃)一聊(啃)这两大坨吧。先看第一坨,我们从右往左看。

dx:x代表一次bid request,是ADX发给DSP的竞价请求“标识XXX,男性,20-25岁,跑鞋爱好者,广告位为首页”,即一次广告展示机会。之所以是dx而不是x,是因为我们关注的是整个广告推广计划中所有的竞价过程,而非某一次竞价。

px(x):广告展示机会的概率密度分布,我的理解是在全网所有的竞价中,满足我DSP要求的、或者是我能收到的bid request所占的比例。因此,px(x)?dx的物理意义是“我能收到的展示机会”。

θ(x):θ是赢得此次竞价所能带来的收益(KPI),本文用CTR来衡量,CTR越高,收益就越高。

b(θ(x),x):对于此次展示机会,在能带来收益为θ(x)的情况下,我所出的价格bid。

ω(b(θ(x),x),x):对于此次展示机会,在能带来收益为θ(x)的情况下,我的出价bid能获胜的概率是多少。因此,ω(b(θ(x),x),x)?px(x)?dx的物理意义是“对于本次我所收到的这个展示机会来说,在该机会能带来收益为θ(x),我出价为bid的情况下,我能打败对手获得此次展示机会的概率”。

θ(x):依然收益。所以θ(x)?ω(b(θ(x),x),x)?px(x)?dx的物理含义是“我出价为bid,赢得这次展示机会后,所能获得的收益”。

NT:一次广告推广活动中所有的bid request。

有了上面的解释,我们可以很容易的得出第一坨的物理意义:对于一次广告推广活动中的所有竞价,我使用b()的出价策略所能获得的收益。和等式连起来,即:对于一次广告推广活动中的所有竞价,我使用b()的出价策略所能获得较大收益时所对应的b(),就是我们想要的出价策略。

有了第一坨的经验,第二坨啃起来就容易多了。前面都不变,只有到最后把θ(x)换成了b(θ(x),x),变为b(θ(x),x)?ω(b(θ(x),x),x)?px(x)?dx,其物理意义为:对于这次广告展示机会,我出价为bid且赢得这次展示机会所花费的预算。所以对于整个广告推广活动而言,所有的出价要小于预算。就这样,我们顺利的将预算限制写进了数学模型里。

好了,分析完两大坨积分的含义之后,我们合起来解释一下该模型(ORTB)所表达的物理意义:在整个广告推广活动中,在出价总和小于预算的限制条件下,当广告收益取得较大值时所对应的那个出价策略,就是我们梦寐以求的出价策略b()ORTB。再来对照一下我们的任务:选择合适的出价策略,在预算的限制下实现广告效果较大化。这下匹配了吧!完美!(图片来自网络)
技术分享

<3>. 模型求解
截止到目前,我们已经得到了模型表达式,由一个等式和一个不等式组成。接下来我们就要开始求解了:求较大值。较大值有什么好求的?让导数等于0之后带入极值点不就完了?你说的对,如果只有一个等式我们是这么求的,但问题是我们现在除了一个等式,还有一个不等式,这种情况下怎么来求较大值呢?用拉格朗日乘子法。

通过拉格朗日乘子法,我们可以将不等式乘一个参数λ后和等式写进一个公式里(化简过程已省略),得到如下结果。

有了这个公式,我们就可以对它进行求导等于0了,可得如下结果:

通过化简,可得出价函数b()与胜率函数w()的关系:

也就是说,我们想要的出价函数b()与胜率函数w()有关,那我们就来看看他们之间到底有什么关系。通过对数据的统计,可以画出出价函数b()与胜率函数w()的关系图像:
技术分享
从图像中我们可以看出,出价函数b()与胜率函数w()的关系是非线性的,并且这个曲线的走势和y=xc+x很像,我们来对比一下,这里c=3。
技术分享
技术分享
没错,的确很像。基于此,为了达到消元的目的,作者做了一个出价函数b()与胜率函数w()之间的假设,仿照着得到下面公式:

将出价函数b()与胜率函数w()的9式关系带入到倒数为0的7式中,化简可得:

就这样,我们得到了我们的出价策略bORTB()的表达式(公式13)。我们来看看这个公式里有什么。这个公式是由θ, c和λ组成的,其中c和λ都是常量,只有θ一个变量。c是出价函数b()与胜率函数w()之间的系数,λ是拉格朗日乘子,而θ是每次广告展示的收益,按CTR高低来评判。我们来验证一下:CTR越高,由该策略算出的出价也就越高,符合我们的预期,大功告成。

我们来梳理一下思路。在建模环节,我们已经得到了我们所需的模型:一个等式+一个不等式。我们的任务是要求等式的较大值,通常方法直接对等式求导等于0即可,由于我们这里是一个限制条件下的优化问题,所以需要用到拉格朗日乘子法,将限制条件写进等式中,构造出一个新的公式(公式6)。对于新的公式,我们就可以用求导等于0了(公式7)。在化简过程中,我们发现了出价函数b()与胜率函数w()存在着数学关系(公式8),为了消元,我们按照实际数据的分布构造出出价函数b()与胜率函数w()的表达式(公式9),将公式9带入公式7,继续化简就得到了我们的出价策略:bORTB(),剩下的工作就是根据数据去拟合λ和c即可,这里就不多说了。这里需要强调的是,这种限制条件下的优化方法在统计与机器学习中是很常见的,例如SVM的推导过程,感兴趣的同学可以试一试,其实并不难。

<4>. 结果分析
既然有了公式,那我们就来看看ORTB的出价有什么特点吧。
技术分享
我们可以很直观的看出,我们所得到的出价策略是一个非线性的。横坐标θ代表了广告展示计划的品质,ORTB会对低价值的展示机会出高价,这样的结果能为我们带来什么,谁会去要那些低价值的展示机会呢?我们来看下面这张图。
技术分享
在此图中,我们盯着一条曲线看,比如蓝色的(1/32)。随着λ增加,收获的点击量是增加的,意味着λ越高,我们的收益越高。对于我们获得的出价策略而言,λ越高,我们的出价是越低的,也就意味着这次展示机会的价值是很低的。这样的结果值得我们深思,我们以为低价值的展示机会是不值钱的,但数据说明,这些看似不值钱的展示所能带来的回报还算不错。特别地,在λ=1e-05时三条曲线的几乎重合,而红色代表有钱的广告主,蓝色代表穷广告主,虽然预算差了16倍,但是获得的收益是相同的,这个结论对于预算有限的小广告主而言,是个天大的好消息:虽然我们钱不多,但只要我们出价合适,依然可以收获很好的广告效果,四两拨千斤,极大的调动了小广告主参加程序化交易的积极性。

我们知道,“二八原则”是客观存在的,在广告主中也不例外,如果能吸引这80%的小广告主参与程序化交易,玩家一多,需求自然更多。为了满足金主的需求,势必会推动相关计算技术的发展,这对于计算广告的未来而言,是一件好事。

讲完了非线性出价策略,程序化交易中的关键技术也接近尾声了。出价策略之所以重要,是因为就是DSP赖以生存的看家本领,没有这些真本事,DSP是走不了多远的。

到此,计算广告关键技术就讲完了,啥也不说了,给自己鼓个掌吧(图片来自网络)。
技术分享
历时大半个月,中间又加上过年,终于把这章给写完了,没想到这一章的内容要比上半部分全文都要多。在本篇《计算广告小窥[中]这孙子怎么什么都知道》中,我们从理论的角度探讨了计算广告各阶段的关键技术:在合约广告中,我们讨论了受众定向技术,从用户、上下文和广告主三个方面简单介绍了打标签的常用思路和方法,为计算广告实现精准营销打下了坚实的基础;在竞价广告中,我们讨论了点击率预估的来龙去脉,感受到了互联网人的智慧,为媒体网站流量变现提供了直接保障;在程序化交易广告中,我们通过学术论文了解了当下学术界领先的DSP出价策略,近距离地感受了一下科研的魅力。

曾有人叹息到“我们这一代最聪明的人竟然都在这里思考着怎样让人们去大量的点击广告,真衰。”我个人不认同这种说法,因为在计算广告这样复杂的场景下,相关技术和解决方案的水准必然是顶尖的,稍加修改即可解决其他场景下的疑难杂症,这恰似军工技术反哺民用,又恰似女生随手甩一个不要了的护肤品给男生,那可都是宝。

受篇幅所限,原定于本篇要完成的第五章和第六章只好放在《计算广告小窥[下]广告系统架构:要啥自行车,这里有宝马。》中来写了。在下篇中,我们将介绍一个通用的广告系统架构,在领略在线和离线过程的同时,还将见到时下工业界最火热的技术,譬如Nginx,Hadoop,Spark等在计算广告领域的位置与应用。

除了广告系统架构,我还将介绍一个我自己搭的最小广告系统mieSys,可以先放出来给大家玩一玩,链接是http://115.159.33.50/。使用方法:用户点击页面中广告,等一段时间后刷新页面,在页脚处会显示用户的兴趣标签和性别,在第一行五个广告位中会展示符合用户口味的广告。需要注意的是,由于目前缺少点击数据,CTR模型并不准,为了保证演示效果,暂时只能用离线代替在线,所以您在点击过后预计要10分钟(用户多的话甚至更长)才能看到页面效果,我后期会进行优化,还望轻拍,效果图如下,第一张为默认页面,第二张为结果页面。
技术分享技术分享
这个系统是我用大概20天的时间搭成的,目前来说基本的功能都有,但还是太简单,并且算法没有优化,我会逐步的往上面添加模块和算法,目前思路已有,就差各位为我提供点击数据了[嘿嘿嘿嘿···]。如果您发现mieSys挂了,不是用户太多就是我在调程序,在系统成熟的时候我会选择开源,愿意与有兴趣的同学多交流。哦对了,至于为什么起名为mieSys,因为我女朋友属咩,呵呵哒~

好了,我们《计算广告小窥[下]》再见!

欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754

鲜花

握手

雷人

路过

鸡蛋

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

热门文章

     

    GMT+8, 2018-12-17 16:46 , Processed in 0.371338 second(s), 23 queries .