什么叫做即时竞价?

我花点篇幅去解释,但就用设计系统角度去解释RTB存在的意义。Real Time Bidding,中文译为即时竞价。当广告主下广告时,像是使用Google、Facebook等之类的广告平台,都会在设定广告过程中看到「广告出价」,然后系统会在旁边提醒广告主「建议出价」。

我举一个实际例子,或许会比较容易理解。广告主目前有A、B、C三个人。三个人将在以下情境中「竞赛」。谈竞赛前,计算的单位以CPM来算,也就是「每一千次曝光」。

情境1:A预算$10,000元、B预算$10,000元、C预算$10,000元,三人都打算投放2015/01/01的广告,广告走期都是从0点到24点,而当日该媒体可涵盖广告量约为500个CPM,也就是500X1000=500,000。ABC出价都一样,CPM都出$10,因此得出10,000(预算)/10(出价) X1000(播放量)=1,000,000,3个广告主一共是3,000,000次播放。

什么叫做即时竞价?

重点来了,该媒体当日可供给的广告播放量为500,000,而三位广告主各自出价都一样,所以最简单的情境就是ABC去均分50,000的播放量。500,000 / 3 =166,666。每个人都一样,谁也没有少。每个广告主所花费的广告预算为$1,666元,三广告主的剩馀预算为10,000-1,666=8,334,三广告主各自还有$8,334预算没用。

但问题是广告主期待得到广告播放量为1,000,000,现在因为均分的关係只剩下166,666,少掉833,334广告量的部分怎麽办?基本上这就是所谓的「预算出不去,花不掉」的状况。

情境2:承上,A发现他可以获得的广告量太低了,他需要提高广告曝光量。此时,A能採取的措施有两种,一种是「增加广告预算」,第二种是「提高广告出价」。如果选择增加广告预算,A预算20,000元、B预算10,000元、C预算10,000元,A多于B跟C,那这时候如果我是媒体卖广告的厂商,我会卖给A比较多还是BC比较多?当然会A。

可是另外一个问题是,如果我因为A提高了两倍预算,而削减BC的播放量,导致BC无法得到播放量,也许我日后就无法做到BC的生意了。因此,在为了不流失BC的前提之下,依旧得分配适当播放量给BC,维持BC愿意在此平台中投放广告。同时,又不能让A多增加一倍的预算全部吃掉现有的播放量,所以A能得到的播放量得限制在某个比例范围内。(预防机制后面解释)

因此,开始有了权重记分的基础。简单的说,原本预算一样,大家都很公平,每个人都是33%,但现在A预算较多,此时有可能会调整为A 40%、B 30%、C 30%。因此A会得到的播放量变成500,000X40%=200,000。BC则各别为150,000。可是如果採取「提高广告出价」不改变「广告预算」?这答案会跟此题接近。

情境3:承上A发现光是增加预算,实际被消化掉的预算也不够,因为CPM10元,就A增加广告预算后,所额外得到的广告播放量为200,000-166,666=33,334,换成广告预算后,额外增加倍用掉的预算仅有$333元。因此,A广告主不仅提高广告预算,同时也增加广告出价,他将原本CPM $10变成CPM $20。

预算增加连同广告出价也增加,此时计价的基础会从他变动当下做切点,但不要讨论複杂,一样就是算在三个广告主在同一时间点下广告,只是条件变为A预算$20,000出价CPM$20、B预算$10,000出价CPM$10、C预算$10,000出价CPM$10。A在两个条件下都比BC要多出两倍,所以这时候又影响到权重计算基础。

此时,可能会调整的广告量比例为A60%、B20%、C20%,因此得出A此次获得曝光量为500,000X60%=300,000,B与C则各自是100,000。这时候,因为出价基础不同,所以花费就不一样了。A取得广告量增加,但出价也增加,所以实际A此次支付广告费用为$6,000,剩馀$14,000。B跟C依旧还是$1,000。可是从A所支付的广告费用来看,明显的是比BC多上不少,这种比例在广告主收到帐单时可能会气炸,于是我们得针对出价金额先做演算,算出「建议出价」以及「实际扣款出价」等模型。「广告建议出价」后面会提到。

解释一下前面提到的预防机制。照理来说ABC三人不论得到多少广告量,依照他们广告预算,最后得到的结果应该公平才是。但实际上广告主不会这麽想。广告主会期望除了广告「被曝光」之外,还要能够「被点击」,甚至带入「被转换」。因此,基于此限制条件,得针对ABC三人做到「最适化广告排程」。

最适化广告排程,简而言之就是ABC三人,假设曝光量都一样,但三人会因为其广告素材的差异,造成广告点击状况不同,而三个人的广告有几种情况会发生,一种是「单一页面多广告」以及「单一版位多广告」。光是这两种状况,背后要计算的基础也不同。因为这涉及到使用者打开页面时,「看到几个广告板位」以及「看到播送哪一个广告」,到最后「对哪一个广告产生兴趣进而点击」。

为了解决广告被无效播放,所以在每次广告播送的过程中,还得同时去计算广告「被点击状况」。原本只是计算广告播放量时,计算的是广告主预算与出价之间的竞赛,但此时又多加了点击因素进来,计算变得更複杂,这也是为什麽演算法的设计并不容易。

回到ABC上,用比较单一情境来解释。三方广告播放量固定,三方所获得的点击量不一,就先从点击结果来看。还不要涉及时间排序因素近来。此次,A所获得的点击比较高,BC又较低,而这时候系统得去计算A为什麽获得较高的点击,BC为什麽较低,假设是用常态分布的方式去播放广告,有就是每个广告的排序为:

A→B→C→A→B→C→A→B→C→A→B→C→A→B→C→(依此类推)

虽然广告序列「有可能」会是採取以上方式播送,但实际却有可能不是。因为使用者「不一定」会在「同一时间」进入网站。因此,广告计算就得在纳入两个额外条件做日后的「新限制条件」。包含了「IP位址」、「登入帐号」、「Cookie or Section」等。不过在此就不提新的条件,纯粹就广告播送序列跟点击的关係说明。

一般来说,A的广告点击较高,在同样播送量与播放时段比较之后,大部分的人会解释也许是A的「广告素材」表现比较好,BC可能较差。而这时系统会针对B先做调整适化工作,意思是实验组要特别拉出来,这样才知道到底是A好BC不好,还是A碰巧运气好、BC碰巧运气不好。因此,广告的播送的序列有可能变为:

B→B→A→C→B→B→A→C→C→C→A→B→B→A→C(依此类推)

短暂强化B的播放量,看看经过一段时间的演算排序后,检视B的点击量是否有无相对成长,同时,检视A的点击量是否有因此下降,再者C有没有改变。如果,B的点击数量有增加,这时系统会记录下此一排序为「可能有效」的广告递送排序,而A要是下降的话,但下降比例不大,其原先广告播送量比上广告点击数相较于新排序所得之结果,相去不远时,那表示A本身可能素材真的较具有优势,而B得靠较多的播送量才能获得较高点击。

不过这还只是一种假设,另外一种假设则是B点击量没有提高,A变动不大,C变动不大。这时就要去检查同时被降低播放量的C,为什麽能在播放量降低之后,其点击效果却依然维持原本效果。而这又能判断几种可能,包含先前提到的「素材比较好」又或者是「恰巧碰到对的对象」,当然还有「播放的时段刚好正确」。有太多条件涵盖其中,各种条件都会被记录下来,反写回演算机制裡。

简单来说,为了不让ABC三位广告主买到没效的广告,看似三个广告主都获得「平均、等量」的广告播放量,但实际上为了不让广告主觉得只有「被看到」还得要「被点击」,所以演算法会在运作过程中自动产出很多套「参考模型」,每一套参考模型都会基于「广告主的基本资料」与「广告分众设定」而生。

这些限制条件又跟RTB有何关係?关係可大了。因为广告主付出的每一分钱,都要变得有意义时,又不能让广告主觉得「广告出价」只是为了拐他们付出更高的价格,此时,广告怎麽变得有价值就是RTB演算法背后应该要注意的重点。透过将每一次广告播送的结果,经由主观的分析模型,套用到实际运算的结果,解释分解出预估跟实际的差异,再把这差异回写进演算模型裡。

演算模型会随著时间关係,变得越来越複杂,但换句话说应该是要越来越简单,因为资料量会在初期呈现非常快速的成长,但随著模型越来越明确,所需留下来的资料也就不用太多。反倒是怎麽提供广告主「最适当的出价建议」,这又是一套演算模型。毕竟,广告主出价也不可能漫天要价,造成系统不当运算。

不当预算的意思是当ABC三个广告主要竞价,而A出价非常高,假设CPM出了100,但BC一样出10,那我的出价建议不可能将范围设定为「$10~$100」,这麽做反倒会让广告主反感,所以即便A出价100,我们在出价模型裡就得设定其所有广告主的基本平均值,并在设计出该平均值之下该有的最大值及最小值。此时出来的广告出价建议数字可能会是「$10-$20」。A出了CPM $100,最后我还是以$20去扣。

回到演算法在点击常态分布下的情境。重新解释一次,ABC三人递送广告如果都只有一个人看,那情境会是A→B→C轮流播放,但事实上前面也提过广告会有单一页面多广告以及单一版位多广告的情况。每一个版位能获得多少的点击,都会跟「时间」有相对关係。毕竟,使用者每次进到网站时会看到网站的广告不同,随著停留时间也不一样,因此在整个广告播送过程中,还得再纳入计算「时间因素」。

举例来说A在早上九点到十一点时段点击效果好,B则是中午十二点到下午三点广告点击效果好,C则是晚上八点到十二点的点击效果好。三种不同时段,带出三种不同的点击分布。但如果是用常态分布的话,那就会碰上BC在A的时段广告被「无效播送」掉,而A则可能在BC的时段被「无效播送」掉。

为了避免无效的广告播送,我们就得针对广告去做「时段切割」计算的工作。意思就是一天分成12个阶段,每个阶段2小时。2小时内的广告播送与广告点击作为一次计算基础,接著就是每两个小时之间的相互比较。在同样的比较结果下,如果A于前两个小时优于BC,此时,微调A下降播放量到第二个时段,提高BC的播放量。如A被降低但点击量不减,而BC却反而提高,则会提高BC在该时段的播放量。

前一句,「提高BC在该时段的播放量」,其意思就是虽然两个小时比较一次,但实际调整播放量的控制因素是「两小时内的四个节点」。每个节点的区隔是15分钟为一个排序。每15分钟就微调一次播放量,透过每次的微调去找出较适当的广告播送方式,避免「无效播送」的状况发生。

可是问题又出现了,因为广告出价是「即时」,所以广告主有可能「自发性」觉得对他有利的时段是预先设想好的。在纳入出价变数与时间变数,影响广告播送时的结果就会多出更多种可能性。好比A广告主的优势时段是早上九点到十一点,但A却认为自己应该是在晚上七点到十二点,为了不让A的广告在七点与十二点之间被无谓浪费掉,但又不能违背A提高出价的本意,所以前面A的广告播送结果所计算出来的基础很重要。

重要的地方在于A「可能」于晚上时段低于C,但C的预算与出价又较低。可如果此时接受了A的要求,造成A的广告成效不佳,同时又影响了C本身的效果,这可就两方都得罪,两面不讨好。这时候,系统就得做出判断,判断A的出价比例是否在平均值以内,或是远远高于平均值。这是出价意图的判定。假设A的出价远远高于建议出价的数字,有几种可能,分别是「真的很想要强调这时段的广告播送」,另外就是「不小心按错出价金额」。

系统这时候就得拿C去作为评估标准,衡量在这时段的C剩下多少广告预算,他本来预计要被播放掉的广告量还剩多少没有被播放掉,另外就是有没有更动过广告出价。假设C广告预算还剩很多,其广告播放量不如原先一开始所设定的排程,出价也没有变动,贸然变动C就会让C觉得广告预算花不掉,这是个没有用的系统。所以,还是得回头去检查广告点击,假设之前的广告点击状况还不差,比计算过AB的平均值还高一点的话,那就会採取另外的措施。

另外的措施就是「降低出价」。意思就是虽然C出的CPM一样是$10,但不代表我就一定要收到时,我可以收到$7、$8、$9,藉此降低C在预算上的负担,进而延长C加长广告走期的意愿。另外则是迎合A提高出价的需求,让A可以买入他想要的时段。但,即使系统给了A较高的播放量,还是得去计算A在该时段裡的点击状况好或不好,假设不好,则会去「自动平衡」A与C的出价范围。

以上不过是一套RTB演算法裡面最基础、最基本的设计「概念」。裡面还没有包含「受众」、「属性」、「时间」、「地点」、「装置」、「利益」、「转换」、「重点关注」等元素。每加上一种元素进演算基础裡,演算的结果就会变得更複杂,而整个广告播送的排程也就複杂数十倍、数百倍。当然这又没有涵盖「广告主测试素材」的自发性行为。

好一点的广告平台,甚至得做到素材辨识,用系统辨识哪些素材在什麽样的排版、组成、文案、商品、日期与季节等因素影响之下,可以获得最好的广告效果,而广告效果又可以是点击、加入会员、购买、参加活动、安装、看完等,每一种结果的KPI要被反馈回到演算系统裡,也就是个庞大的运算引擎。

要全部解释完,写十万字可能有机会,但这也只是解释广告运算的引擎,后面并不包含使用者行为运算等。

原文出处:http://www.tunan321.com

上一篇:php如何判断是手机访问还是电脑访问


下一篇:PS使用滤镜制作光晕效果