Chunyang Wei | Software Development Lead at Hulu
乍一看标题,好像一篇枯燥论文的题目,不不不,这绝对不是笔者期望文章的样子,本篇文章想以轻松的方式,闲聊一下数据与算法如何帮助Hulu广告系统更高效的运作。
(坚持看到最后会有彩蛋噢 :P)
大数据几乎是所有互联网人都会挂在嘴边的一个话题,如果公司没有数据与算法驱动的应用,都不好意思称自己为一个互联网公司。数据与算法驱动当真不仅仅是一个概念,它在Hulu的广告系统中发挥着重要的作用。
先简单介绍一下Hulu的广告生态系统。Hulu作为一个拥有大量高质量内容的视频网站,大部分的广告自然是嵌入在播放器视频流中的视频广告,并且基本都是品牌广告,以CPM方式计费,担保式投递的合约订单。
简单解释一下:
品牌广告,与效果广告相对应,不要求有直接来自用户的点击,更希望有更多的曝光率
CPM:Cost per millinor, 按照每千次展示的方式来收费
担保式投递:保量
所以基本的售卖方式是,在给定的时间、给定的定向规则上,广告商购买给定的量,按照协商好的千次展示收费。
那么下面我们从广告的整个生命周期来谈一谈,数据与算法都能在哪些方面帮助Hulu广告系统更好的运转呢。
广告在Hulu平台上投放之前,最关键的就是我们的sale大哥去和广告商或者广告代理接洽,把我们的广告库存销售出去。在这里我们可以从哪几个方面帮助我们sales大哥更好的售卖hulu的广告位呢?
前面提到了,作为担保式投递,最核心的一个问题就是保量。也就是说对于广告商,我们答应会在明年1月份在纽约地区的男性用户身上帮他们投递10M的广告,那么我们一定要保证能够完成10M的量。 (也许有聪明的小朋友会有疑问,怎么保证纽约地区、男性等属性呢,这属于measurement问题,这里我们着重讨论保量的问题)。
好啦,现在就是需要我们发挥算法魅力的时候了,我们需要对明年1月份在纽约地区的男性所能带来的流量进行流量的预估,告诉sales我们是否有足够的流量可以售卖。
我们采用时间序列等模型,对每部电视剧上的流量进行预估,之后再把流量使用算法分配在各种定向条件规则的组合上。
注意,这里其实除了算法问题外,还是一个很有挑战性的大数据问题。在Hulu,有上百个定向规则属性,每个属性的取值从2个到数十个,那么定向规则的组合是指数级爆炸组合的。我们需要对这种爆炸组合进行存储,并且需要高效的查询。(总不能广告商来买广告位了,我们的sales大哥说,咱们先去喝杯茶吧,一边喝一边等待我们的系统返回到底有没有足够的流量可以卖给你们)。在Hulu我们使用了Druid进行存储与查询,他是一个开源的、分布式的、列式存储的、利用索引可以高效存储与执行OLAP分析的引擎。嗯,有空可以再开一讲给大伙讲讲Druid。
这其实跟上面的流量预估息息相关。当我们预估完流量的总量后,还要考虑系统中已经存在的订单,需要从总流量中扣除已经预定的订单流量,剩下的流量才是我们可以继续去售卖的流量。
那么,如何把流量分配给预定的订单,使得我们余下的流量价值最大化,以在之后买给CPM更高的订单呢。
这里,首先我们利用历史数据,根据每一个广告位的属性以及它可以匹配的订单对广告位进行价值评估。
之后把问题转换成一个二部图匹配的问题。
二部图中有两组节点,一组是供给节点,每个节点代表了一个订单,另一组节点是需求节点,每个节点代表了一个或一组广告展示。图中的边表示对应的广告展示可以匹配对应的订单。
问题就变成了如何选择一些匹配的边,使得我们的目标最优化--我们的目标是没有蛀牙!哦不,我们的目标是使得剩余的流量价值最大化,等价于使得使用的流量价值最小化。
我们根据这个二部图,可以构造出一个优化问题,转化为求解最优解问题:
简单的说就是,最小化使用的流量的价值,同时满足两方面的约束。一方面是需求约束,也就是分配给某个广告订单的量一定要足够,一方面是攻击约束,也就是说我们也就这么多流量了,不能用超了。
什么叫好的销售,除了卖的多以外,还有一点就是要卖个好价钱~ 但是这个定价不是简单的靠忽悠的技能就能搞定的,需要眼观四路耳听八方,了解行情。这里最公众客观的,就是数据!
对给定的定向条件,命中的广告库存的价值是多少?最低可以卖到多少钱?在这些广告库存上的历史订单的CPM分布如何?根据供需关系比,价格应该定在多少合适?
这些,都是数据可以告诉sales大哥们的答案~
这一部分聊一聊数据与算法在hulu开始投放的阶段可以发挥什么样的作用呢。
在品牌类广告担保式投放问题中,最核心的一个问题就是受众定向。这个也是在线广告业务相对于传统广告最有优势的地方,可以更加精准的进行定位,更加有效的在正确的地点将正确的广告投递给正确的人。
在Hulu,受众定向大致分为以下几种:
(1)地域定向
(2)上下文定向
(3)平台定向
(4)人口属性定向
(5)行为定向
(6)兴趣定向
(7)Retargeting
除了用户在Hulu上填写的属性、他们在Hulu上留下的历史行为、从第三方数据平台引入的数据,我们还使用了一些机器学习的方法构建了一些用户的画像,比如用户的兴趣爱好,比如对用户在Hulu上填写的年龄性别进行校正。
这里我们主要采用的是线性的模型,好处多多:
(1)快:无论是线下scoring,还是线上的预测,都需要快。尤其是线上的预测,10ms左右返回
(2)可以增量式的更新
(3)可以很容易的将线下scoring结果与线上contextual feature计算出的结果结合起来
(4)不惧怕大数据集,训练样本多,样本feature多
(5)不容易过拟合
在广告的投放当中,每个订单的campaign manager会时时刻刻关心着订单的投放情况,作为担保式合约广告,一定要给广告主保证投递的量的嘛~ 除此之外,还需要关心这个订单是不是投放的平稳呀(广告商当然不希望订单第一天就把所有流量都放完),需要关心这个订单给用户投放的频率如何,能够reach到多少用户,需要关心这个订单投放的分布是不是符合自然分布等等。如果某个订单投放状况不好,比如投放过慢了,那么campaign manager需要分析具体原因是什么,需要分析出和这些订单竞争最大的那些订单。
好啦,我们大数据工程师就要出马啦,高效的去整合这些数据,为campaign managers们提供更加便捷的分析与操作。
在这里,主要的挑战有,如何降低数据延迟,尽快的反应订单的投放情况;如何高效的存储以及查询和展示。
在前面inventory reservation的过程中我们提到了线下的分配问题。
在投递过程中有着更加具有挑战的在线分配问题。
在线分配问题的模型与线下分配类似,也是构建一个二部图,根据二部图我们可以列出一个优化问题,优化问题的约束和上述一样,只是这里的优化目标变为了使得订单的underdelivery最低。 除此之外,还要保证投放pacing、投放分布的稳定性。
同时,这里最优挑战的问题在于,在线分配是一个动态的过程,我们需要对每一次广告展示进行实时的在线决策。另外,求解离线分配方案时使用的时预估的流量,与真实流量之间会存在一定的差距。我们需要对线上的投递情况进行快速的响应。
另外还要考虑的是离线分配方案求解出来的原问题的方案非常庞大,因此我们对原问题通过拉格朗日变换得到对偶问题,通过求对偶问题得到一组紧凑的解。
大致流程如下:
感兴趣的童鞋可以参考以下几篇论文:
Ad Serving Using a Compact Allocation Plan
SHALE: An Efficient Algorithm for Allocation of Guaranteed Display Advertising
Real-Time Bidding Algorithms for Performance-Based Display Ad Allocation
在投递广告的过程中,除了最优化广告商的利益,同时也要考虑到用户的利益,要优化用户的体验。
好多人会说了,对用户最好的体验当然就是没有广告啦!
Totally agree! 但是我们这里要讨论的是如何在有广告的情况下保持用户的体验。
我们通过机器学习模型根据用户的历史行为去分析什么样的广告这个用户会感兴趣,同时分析什么样的用户对广告更敏感。另外,我们还会分析广告频率、同样的广告投放次数对用户体验、用户退订的影响。
广告投放完成后,就进入到了reporting和measurement阶段。
这里不想谈太多如何做第三方的measurement,如何结算,如何跟广告主算钱,更多的想聊一聊Hulu内部的报表。
当订单投放完毕后,Business的大哥们会生成一些报表出来看看各个订单的完成情况如何,除此之外他们也会在数据上做更多的多维分析,更多的可交互式的分析。
除了订单级别的分析,我们也会关心整个Hulu全站级别的一些指标。比如Hulu广告位在各个维度上的利用率是如何的?Hulu广告的重复率情况是如何的?
我们需要解决的问题是如何采集这些数据,如何对数据进行清洗抽取,如何构建我们的数据仓库,之后在其上进行报表的生成,进行多维分析。
Planning阶段需要做的事情呢,就是由business people根据报表、Hulu上的广告库存总量、广告库存分布、历史订单的情况等等来制定未来的计划,包括应该应该以何种方式售卖,应该对不同的定向规则采用什么样的定价策略等等。
我们对未来广告库存的预估帮助他们对未来一年的广告库存有更加清晰的了解,我们的BI系统帮助他们生成报表了解历史订单情况,我们对历史价格的分析、不同维度供需情况的分析帮助他们进行未来的定价策略。这些技术前面都有所提及,在这里就不在赘述了。
这里提及的仅仅是一部分的核心技术,算法和大数据还在从方方面面影响着Hulu广告系统。
写到这里,发现写的又像是一篇论文了。 笔者文笔有限,希望大家能够喜欢。
-------------------------------
好啦,彩蛋来啦!
是不是这些数据与算法问题都很有趣呢。
如果你觉得有趣,如果你擅长大数据处理或是机器学习,如果你对计算广告领域有着浓厚的兴趣,不用犹豫,我们还有职位空缺,你懂的~
关注公众号,或访问hulu官方招聘网站 https://www.hulu.com/jobs
广告相关领域的朋友可直接发送简历至 [email protected]
如果你也热爱技术
请拥抱我
长按二维码关注