具体实施方式
为使本发明的上述目的、特征和优点更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明:
客户在5.26到6.15(时间维度)确定了一轮前帖片投放(广告形式),投放内容为某某活动,定投4个城市,分别是北京,上海,深圳,天津(地域维度),电视剧频道(频道维度),每天投放量为1000个cpm,,投放周期内每个用户观看此广告不超过2次(频次维度)。比如客户在5月底谈这个合同,想预测此次投放的结果如何,也即预测到达频次表数据。因为频次维度的有无决定了算法稍有不同,所以此处分两类说明。
首先,根据每天记录的用户观看行为日志,选择邻接5.26到6.15之前的日期范围,比如选择5.5到5.25的周期。广告形式为前贴片。(越接近的历史周期效果越好)
不分频次控制时,即如果不控制每个用户观看此广告不超过2次(频次维度),此投放的维度有2个,分别是地域维度和频道维度。
第一步:计算次投放维度每天的容量:
根据5.5到5.25的视频观看日志,从5.5到5.25共21天,对每 天此4个城市电视剧频道的容量进行计算,分别为(下划线分隔)6310124_6668956_5125200_5145431_5150704_5294901_5807339_6721603_7299027_5665583_5493653_5660381_5722277_6192772_7302331_7528980_5844377_5836514_5924083_6125748_6392961
计算方式为:凡是符合此投放维度(即4个城市的电视剧频道,城市根据ip解析),即记为1,不断累加。
第二步:广告维度的筛选
声明一个产生随机数的类,再次读取5.5到5.25的视频观看日志,根据投放维度进行筛选。不符合投放维度的记录排除,找到投放记录的记录时开始判断(或者将第一步符合条件的日志筛选出来后,可以读取这个筛选后的日志,并且读取过程中根据随机数筛选出比例)。在读到5.5的日志的时候,刚才计算出的容量为6310124(记为A),这里的订单需要每天投放1000个cpm(即为1000*1000次广告)(记为B),那么得到概率C=B/A=1000*1000/6310124=0.1585,用随机类生成一个小于1.0的随机数,如果小于概率C,则将此记录保留下来,如果大于此概率,则将此记录排除。通过这样的方式,可以保证每天投放的cpm均稳定在1000左右。
第三步:广告效果的计算
根据第二步保留下来的日志记录,即可看作预测投放出去的基础数据,在此数据的基础上,可以进行广告效果的计算。因为视频的容量在一定的周期内都会保持一个稳定的趋势,所以用此结果即可以知道5.26到6.15的投放结果也大致如此。计算的关键在于容量的计 算和比例的计算。为了得到表中的预测结果数据,将筛选后的日志进行统计。假设,筛选出的日志如下,这里为了简便,省略了其他维度。
这里可以看出:20120505日,cookie_A访问了2次,cookie_B访问了1次,cookie_C访问了1次
假设根据这些日志计算20120505到20120509的投放效果
3.1:统计出每天每个cookie的访问次数,用日期和cookie作为key,统计访问次数,得到结果如下
数据说明举例:20120505日,cookie_A访问了2次,cookie_B访问了1次,cookie_C访问了1次。
3.2:因为广告效果是按照累计天统计(如最上面表格的说明2012.6.10的数据是表示从2012.6.9到2012.6.10这两天的展示次数和不同频次的用户数。)
统计从20120505到20120509累计的访问次数,用日期和cookie作为key,比如cookie_A,为了得到20120505到20120509的访问效果,逻辑如下
针对cookie_A,计算出的效果(累计访问次数)如下
20120505cookie_A 2 (20120505访问了2次)
20120506cookie_A 3 (20120506访问了1次,所以从20120505到20120506共访问了3次)
20120507cookie_A 3 (20120507没有访问,所以从20120505到20120507还是共访问了3次)
20120508cookie_A 4 (20120508访问了1次,所以从20120505到20120508共访问了4次)
20120509cookie_A 4 (20120509没有访问,所以从20120505到20120509还是共访问了4次)。
同样,得到cookie_B的累计访问次数如下:
得到cookie_C的累计访问次数如下:
3.3:统计访问过不同次数的用户有几个,用日期和访问次数作为key
20120505 1 2(20120505访问过1次的有cookie_B和cookie_C,共2人)
20120505 2 1(20120505访问过2次的有cookie_A,共1人)
20120506 1 1(20120505到20120506访问过1次的有cookie_B,共1人)
20120506 2 1(20120505到20120506访问过2次的有cookie_C,共1人)
20120506 3 1(20120505到20120506访问过3次的有cookie_A,共1人)
20120507 2 1(20120505到20120507访问过2次的有cookie_B共1人)
20120507 3 2(20120505到20120507访问过3次的有cookie_A和cookie_C共2人)
20120508 2 1(20120505到20120508访问过2次的有cookie_B共2人)
20120508 3 1(20120505到20120508访问过3次的有cookieC共1人)
20120508 4 1(20120505到20120508访问过4次的有cookie_A共 1人)
20120509 3 2(20120505到20120509访问过3次的有cookie_B和cookie_C共2人)
20120509 4 1(20120505到20120509访问过4次的有cookie_A共1人)
3.4:计算从访问过1次以上到20次以上的人有多少,计算逻辑如下:
int n=访问次数;
n=n>5?5∶n;(该命令表示如果n>5则按照5计算,因为只计算到5+,即最大只统计到访问超过5次以上的用户有多少.最上面的表格是按照统计到20次计算,这里因为数据较少,统计到10次即可)
for(int i=1;i<=n;i++){
key=日期+i;
key的次数+1;
}
20120505 1 3(20120505访问过1次及以上的有3人,包括访问过1次的有2人,访问过2次的有1人)
20120505 2 1(20120505访问过2次及以上的有1人)同样,
20120506 1 3(20120505到20120506访问过1次及以上的有3人)
20120506 2 2(20120505到20120506访问过2次及以上的有2人)
20120506 3 1(20120505到20120506访问过3次及以上的有1人)
20120507 1 3(20120505到20120507访问过1次及以上的有3人)
20120507 2 3(20120505到20120507访问过2次及以上的有3人)
20120507 3 2(20120505到20120507访问过3次及以上的有2人)
20120508 1 3(20120505到20120508访问过1次及以上的有3人)
20120508 2 3(20120505到20120508访问过2次及以上的有3人)
20120508 3 2(20120505到20120508访问过3次及以上的有2人)
20120508 4 1(20120505到20120508访问过4次及以上的有1人)
20120509 1 3(20120505到20120509访问过1次及以上的有3人)
20120509 2 3(20120505到20120509访问过2次及以上的有3人)
20120509 3 3(20120505到20120509访问过3次及以上的有3人)
20120509 4 1(20120505到20120509访问过4次及以上的1人)
最终得到表格如下:
日期 |
展示次数(sum(1+到5+) |
1+ |
2+ |
3+ |
4+ |
5+ |
20120505 |
4 |
3 |
1 |
0 |
0 |
0 |
20120506 |
6 |
3 |
2 |
1 |
0 |
0 |
20120507 |
8 |
3 |
3 |
2 |
0 |
0 |
20120508 |
9 |
3 |
3 |
2 |
1 |
0 |
20120509 |
10 |
3 |
3 |
3 |
1 |
0 |
数据说明:最后一行表示从20120505到20120509这段期间,共展示过广告10次,其中看过1次及以上的有3人,看过2次及以上的有3人,看过3次及以上的有3人,4次及以上的有1人;这样就得到了从20120505到20120509的广告效果预测结果:这里所有的实现算 法均用hadoop集群处理和HDFS分布式存储实现。
如果将频次维度的条件加入,算法如下:
第一步:将符合投放条件的日志记录筛选出来,因为涉及到每个用户观看的频次,所以保留的形式如下:
cookie:观看日期序列(按照从早到晚排序)
比如用户A:20120505,20120505,20120510
表示A用户共看了3次符合投放维度的视频,分别是在20120505日看了2次,20120510看了1次
第二步:
在第一步的基础上进行频次控制。比如用户A看过3次,而客户要求控制在2次。那么还是用生成随机数取概率的方式,计算概率C=2/3=0.667,如果随机数小于此概率,则保留两次观看点。同时记录总保留观看点不超过频次控制次数。通过第二步得到的结果比如为用户A:20120505,20120510。
第三步:
计算容量。在第二步的结果基础上,计算每天的容量。比如用户A为20120505观看一次,20120510观看一次,那么20120505的容量累加1,20120510的容量也累加1.计算出在频次控制下每天的容量大小.比如20120505的容量数据在频次控制下只能达到2310124(记为B)。
第四步:
根据第三步计算出的容量数据,再次读取第二步的结果数据,每 天的投放量1000个cpm(记为A),同样用概率取值,为了均匀得到日志,比较概率的时候均是取随机数。这里频次控制每个日期点都要进行随机数取概率,计算C=A/B=1000*1000/2310124=0.4329,比较随机数概率与C,小于此概率C的话这个观看日期点保留,大于概率C的丢弃。
第五步:
根据第四步计算出的结果,即可计算广告效果。(统计效果的计算方法与上述内容相同)
使用本专利能够根据客户的投放要求,准确量化的预测投放的效果。目前大多数广告预测都是凭借经验,甚至不做预测。而本专利根据历史的真实数据,结合客户的需求,经过设计算法运算,将准确的计算结果数据提供给客户,用以指导未来的投放行为。
如图1所示,根据本发明提供了一种预测网络视频广告的到达频次表数据的装置,其中该装置包括:观看视频日志采集模块,用于记录用户观看视频的状态为一个用户观看视频日志;容量计算模块,选择距离预测日期范围较近的历史日期范围,在不进行频次维度控制时,计算满足投放维度的在历史日期范围内每天的容量,投放维度包括地域维度和频道维度;广告维度筛选模块,根据预期的投放量与计算出的容量计算概率C,用随机类对每天中每个日志产生一个随机数,如果该随机数小于概率C则保留该日志,否则排除;不分频次控制计算模块,根据以上保留的日志数据统计出每天每个cookie的访问次数,用日期和cookie作为key,统计访问次数;用日期和cookie作为 key,统计每天的累积访问次数;用日期和访问次数作为key,统计访问过不同次数的用户数;计算从访问过1次以上到n次以上的用户数。到达频次表数据计算模块,根据上述计算结果统计预测日期内每天的1次以上到N次以上的用户数。
进一步,该装置还包括:分频次控制计算模块,将符合投放维度条件的日志记录筛选出来;计算概率C=频次维度数值/用户实际观看次数,用生成随机数取概率的方式,如果随机数小于此概率C,则保留观看日志,同时记录总保留日志不超过频次控制次数;计算每天的容量;每个日期点都要进行随机数取概率,计算C=预设的每天投放量A/实际的每天容量B,小于此概率C的日期点日志保留,大于概率C的日期点日志丢弃。
本专利可以根据投放维度不断细分,未来如果新增了广告投放形式或者其他广告投放维度,本专利都能根据实际需求做相应变化。
使用本专利实现的广告预测系统,用客户实际投放的结果和预测的结果做对比,误差率平均在5%左右。
以上是对本发明的优选实施例进行的详细描述,但本领域的普通技术人员应该意识到,在本发明的范围内和精神指导下,各种改进、添加和替换都是可能的。这些都在本发明的权利要求所限定的保护范围内。