CPD轮播广告库的简单算法

时间:2021-04-17 00:03:19

在广告的领域中,有一种广告形式,采用的是CPD的售卖模式,为了对流量进行拆分,媒体方会对广告位进行轮播拆分。比如一个广告位,被拆成了10轮播,那么在广告主来预订广告位的时候,这个时候就可以告诉广告主,我这边有10个CPD的轮播可以售卖。然后广告主A买走了其中的一个轮播,接下来另外一个广告主过来,只剩下9个轮播了。

在上面的例子中,一个CPD的广告位被拆分成了10个轮播,那么这个时候广告位的库存数就是10,广告位的CPD库存,就是一个广告位可以售卖的轮播总数。

接下来我们来聊一聊,广告主在预订CPD广告位的时候库存的一种简单算法。

一、不考虑定向的CPD库存算法。

前面的博文中,我有提到广告位的定向的概念,我们在讨论CPD库存算法的时候,先不考虑定向的条件,来看看库存是怎么来计算的。

比如,媒体方,把一个广告位拆成了S轮播。这个时候有个广告主A跑过来说,我需要购买你广告位的一轮播,你这边有多少剩余的库存可以卖给我?然后你一看,没有任何预订,于是你告诉广告主A说,这边可以有S个库存卖给你,于是广告主买走了其中的一轮播。

接下来另外一个广告主B跑过来说,我想要购买这个广告位的一轮播,你这边有多少剩余库存可以卖?于是你一看,之前已经被广告主A买走了一轮播了,所以这个时候剩下了S-1轮播可以卖。

好了通过上面的例子我们可以知道,在不考虑定向的情况下,CPD的库存计算非常简单,即下面的公式

剩余库存 = CPD总轮播数-客户已经预订轮播数(公式1)

二、带有定向的CPD库存算法

接下来我们需要考虑另外一种情况,带有定向的CPD的库存算法。
关于带有定向的CPD的库存计算有很多种方法,在这里,我给大家介绍一种简单的计算方法。

剩余库存 = CPD总轮播数-预订冲突的轮播数(公式2)

什么是冲突的轮播数呢? 就是当前的预订和之前已有的预订有冲突的预订轮播数。

举一个简单的例子:

一个广告位 5月1号  有10轮播,已经有的预订如下:

CPD轮播广告库的简单算法

这个时候有个广告主C过来说,我需要预订5月1号上海地区,问还剩下多少库存?
因为广告主C需要预订的也是上海地区,这和广告主A的预订上海有冲突,但是和广告主B预订北京没有冲突,预订的冲突轮播数为1
所以广告主预订上海地区看到的剩余库存数为9。

所以,有定向的库存计算,最主要的就是要想办法冲突的预定数。

要计算冲突的预定数,主要分为以下两步。
1、过滤掉和当前预定不冲突的预定数
2、每个维度在最细的粒度计算冲突的轮播

再举例说明多维度定向交叉的情况的例子,比如一个广告位支持地区定向和年龄定向。
地区定向的最小粒度为城市级别
年龄定向的最小粒度每20岁作为一个级别,一共包含(0~20,20~40,40~60,60~80)这四个级别

这个广告位一共被拆成了10个轮播,当前已经有的预定如下:

CPD轮播广告库的简单算法

这时候广告主E过来,定向条件是 地区:杭州,年龄:20~60岁,问广告主E看到的剩余库存是多少呢?

下面简单的来分析一下:

广告主A的地区定向条件是上海,与杭州不冲突,所以广告主A的预定和当前广告主不冲突,可以过滤掉。
广告主D的地区定向条件是全国,年龄是所有年龄的人,所以广告主D的预定和当前广告主的预定有冲突,冲突数为1轮播。

我们来重点看一下广告主B、广告主C与当前广告主定向的冲突预定数的计算。

首先我们把B和C的定向条件拆到最细

CPD轮播广告库的简单算法

再把当前客户的定向条件(杭州,20~40岁)拆成最细的粒度

CPD轮播广告库的简单算法

E1 与B 和 C1冲突, 冲突的预定数为 N1 = 3+2=5;
E2 与 C2 冲突,冲突的预定数 N2 = 2

然后,求得当前广告主E的预定与B和C广告主预定的冲突数 = Max(N1,N2) = 5,再加上D的全国通投,总的预定冲突数 = 5 + 1 = 6

最后根据公式2求得  剩余的轮播数 = 10 -6 =4

所以,最终当前广告主E在 杭州,20-60岁这个定向条件下,看到的CPD的广告位库存为4。

以上的过程便完成了CPD轮播广告库存数的计算,当然以上的算法简单粗暴,但是在某些情况下计算出来的,并非最优解,后面有时间我会再给大家讲一种更好的CPD轮播广告库存算法。