mirror of
https://github.com/cheetahlou/CategoryResourceRepost.git
synced 2025-10-20 17:03:47 +08:00
mod
This commit is contained in:
59
极客时间专栏/AI技术内参/广告系统核心技术/079 | 广告系统概述.md
Normal file
59
极客时间专栏/AI技术内参/广告系统核心技术/079 | 广告系统概述.md
Normal file
@@ -0,0 +1,59 @@
|
||||
<audio id="audio" title="079 | 广告系统概述" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/cb/c9/cbe017c26182dca91bc8ccf0a49fcec9.mp3"></audio>
|
||||
|
||||
在之前的分享里,我们已经介绍了搜索、推荐系统以及文本分析这三个重要的机器学习、人工智能领域。从基本的思想、算法以及架构说起,我们针对这几个领域要解决的问题和在解决这些问题的过程中出现的经典思路都做了比较详细的讲解。
|
||||
|
||||
可以说,搜索是最早利用机器学习以及人工智能思想和技术的应用领域。不管是从最初的图书馆信息检索系统还是到最近二十年年兴起的大规模现代搜索引擎,围绕搜索系统所产生的诸多方法论、算法和模型都影响着很多相关领域。**特别是基于排序学习(Learning To Rank)的搜索排序算法的提出和成熟,让机器学习的一大批技术和搜索的现实问题得以结合,成为了机器学习和某个应用领域相互发展的一大典范**。类似的,对于推荐系统来说,也在过去十几年间,通过机器学习技术和推荐问题的结合,迸发出了一系列经典方法,这些方法也影响了其他应用领域的发展。
|
||||
|
||||
从今天起,我们就来看另一个重要的应用领域:**计算广告**。计算广告这个领域深受搜索系统和推荐系统的影响,可以说有很多技术都是从这两个领域直接借鉴过来的。然而,因为其应用对象的不同和场景的不同,计算广告又有很多自己独特的问题,以及解决这些问题需要注意的限制条件。因此,在过去十多年间,计算广告慢慢发展出了一条独特的道路。
|
||||
|
||||
那么,我们首先来聊一聊广告系统的概述,看一下这个领域要解决的主要问题以及发展的简要历史。
|
||||
|
||||
## 计算广告的主要场景
|
||||
|
||||
为了给你建立一个感性的认识,我们先来讲一下计算广告的主要场景,了解这个领域需要解决什么样的问题。我们还会在后面的讲解中逐一展开这些场景下的问题设置,因此,这里主要是从大方向上来对这些场景进行一个把握。
|
||||
|
||||
互联网的应用和内容服务商慢慢意识到,提供广告可以作为一种重要的盈利手段,这以后,一个新兴的行业就此诞生了。
|
||||
|
||||
从最简单的场景来说,一个互联网内容服务商,例如一个新闻网站或者一个社交媒体网站,希望在自己的服务里插入广告,这基本上就是一个内容的匹配问题。我们把**在自己的服务里提供广告的内容服务商叫作“发布商”**(Publisher)。
|
||||
|
||||
发布商的目的是匹配广告和目标人群,有时候又叫“受众”(Audience),使得目标人群能够对广告产生兴趣并且点击,然后最终产生行动。这里的行动,可以是购买了广告里的商品,订阅了广告里的服务,也可以是非常广义下的行动,比如对某个品牌有了更加深刻的好印象等。
|
||||
|
||||
在这个最简单的场景里,有两种最基本的广告模式,一种叫作“**搜索广告**”,一种叫作“**展示广告**”。搜索广告是说发布商提供某种形式的搜索服务,然后将广告显示在搜索结果页面上。在这样的情况下,广告需要和查询关键词的语义有关系。从本质上说,这种情况下的广告是搜索结果的自然延伸。而对于展示广告来说,往往就是显示在发布商的普通页面上,一般并不直接和任何查询关键词相关。这又和经典的推荐系统的场景非常类似,也可以看做是推荐的一个自然延伸。
|
||||
|
||||
如果仅从这样的角度来看广告系统,那么我们基本上可以认定,广告就是特殊的搜索或者特殊的推荐。但其实广告系统还有另外一个和搜索以及推荐非常不一样的方面,最终决定了广告系统的特殊性,那就是“**广告商**”(Advertiser)。
|
||||
|
||||
**广告商是那些愿意把自己的广告放到发布商上来显示给受众观看的服务提供商**。广告商对于自己的目标往往有明确的定位,比如希望能够通过广告来增加销售,提高服务订阅数量,提高自己的品牌效应等等。因此,广告商自然希望能够在以下这一系列的决策上有更多的发言权,比如发布商究竟如何显示广告,在什么情况下显示广告,针对什么人群显示广告等,从而能够让自己的利益最大化。
|
||||
|
||||
也正是因为这个原因,为了满足广告商的需求,从而能够吸引更多的广告商来自己的服务打广告,发布商往往提供各种工具,帮助广告商了解自己的用户群体以及广告的效果,使得广告商认为这个发布商是一个可以值得依赖的合作伙伴。
|
||||
|
||||
然而,即便如此,发布商和广告商的利益往往是不完全一致的。发布商,作为一个内容的提供平台或是一个社交媒体平台,需要照顾自己用户群的感受。例如,一个医院希望在一个新闻网站上投放自己的广告,即便可以为新闻网站带来丰厚的广告收益,新闻网站也需要考虑,从长远来看,这些广告内容和自己的新闻内容是否和谐,是否慢慢地会让用户产生厌烦情绪等。从这个角度来看,发布商不仅仅是简单地进行广告和受众的匹配,还有一个最重要的工作,是从宏观上平衡广告投放效果和内容服务效果,从而达到自己价值的最大化。
|
||||
|
||||
随着发布商和广告商数目的增多,众多的发布商发现,如果都需要依靠自己的力量来构建大型广告管理系统,那无疑是非常耗时也是很多中小发布商所不具备的能力。同样,对于广告商来说,如果希望自己的广告能够投放到众多发布商中,逐一研究发布商的工具以及各个发布商用户的区别,就会为广告投放增加不小的难度。因此,针对发布商以及针对广告商的中间平台很快就应运而生。
|
||||
|
||||
对于发布商的中间平台而言,整合众多发布机会,从而能够让发布商接触到更多的机会,成为了“**供应侧平台**”(Supply Side Platform)。而对于广告商的中间平台而言,整合众多广告商机会,从而能够让广告商接触更广的发布机会,成为了“**需求侧平台**”(Demand-side Platform)。而连接这两大平台的则是“**广告交换平台**”(Ads Exchange Platform)。关于这些平台的具体功效,我们后面会慢慢接触到。
|
||||
|
||||
总之,现在你可以了解到,**广告系统的重要场景是涉及广告商、发布商以及受众“三种角色”的复杂系统之间的平衡以及利益的最大化**。
|
||||
|
||||
## 计算广告的简要历史
|
||||
|
||||
当我们熟悉了广告系统的一些经典场景之后,我们现在来回顾一下计算广告系统的一个发展简史。
|
||||
|
||||
最早的互联网广告出现在1994年11月27日。AT & T这个电信运营商在当时展现了一个叫HotWired的广告商的广告。那个时候,整个互联网只有三千多万用户。
|
||||
|
||||
1998年的时候,Goto.com的比尔⋅格罗斯(Bill Gross)发明了“搜索广告”(Sponsored Search),或者有些搜索引擎也把它叫作“竞价排名”。Goto.com后来在2001年成为了Overtune,并最终在2003年被雅虎公司收购。
|
||||
|
||||
2002年,谷歌也开始了自己的搜索广告产品AdWords并且很快引入了Generalized Second-Price-Auction,或者简称**GSP**的机制来对广告进行投标竞价。2007年,雅虎也跟进了这种方式来管理所有的广告投标。值得一提的是,当时的谷歌还针对一个广告专利技术纠纷,支付了240万股股票给雅虎。
|
||||
|
||||
另一方面,1998年已经有公司开始尝试利用自己的内容页面展示广告。2003年,谷歌收购了一家叫Oingo的公司并且将其业务更名为AdSense,从而开始了其展示广告服务。其后,雅虎和微软等服务商也相继效仿,扩展了自己的广告业务线。
|
||||
|
||||
早在2005年前后,各种广告交换平台也纷纷出现。这些交换平台的出现为“**实时竞价**”(Real-Time-Bidding),或叫**RTB**提供了可能性。今天,绝大多数广告平台都支持RTB来为广告商以及内容发布商提供服务。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你简单介绍了广告系统的概况。一起来回顾下要点:第一,我们讲了广告系统的基本应用场景以及其中的重要角色;第二,我们回顾了计算广告在过去发展的一个简单历史。
|
||||
|
||||
最后,给你留一个思考题,除了我们所说的搜索广告和展示广告,你还见过什么其他类型的互联网广告呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
|
74
极客时间专栏/AI技术内参/广告系统核心技术/080 | 广告系统架构.md
Normal file
74
极客时间专栏/AI技术内参/广告系统核心技术/080 | 广告系统架构.md
Normal file
@@ -0,0 +1,74 @@
|
||||
<audio id="audio" title="080 | 广告系统架构" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/61/86/61ab8f6f5f86c3c12b2a3a40fee9ae86.mp3"></audio>
|
||||
|
||||
从本周开始,我们就进入了计算广告这个重要的应用领域。周一我们首先介绍了广告系统的概述,了解了这个领域要解决的主要问题以及发展的简要历史。我们知道了广告系统中有发布商、广告商、受众群这些实体,还有应运而生的各类中间平台。
|
||||
|
||||
今天,我们就更加细致地来看一下**广告系统的架构**,熟悉各个组件都是怎么运作的。
|
||||
|
||||
## 实时广告竞标的重要生态圈
|
||||
|
||||
在前一篇分享里,我们提到了“**实时竞标**”广告系统(简称为**RTB**)这个概念。现在,我们首先来回顾一下这个系统的重要生态圈。
|
||||
|
||||
实时竞标系统的生态圈里有四个重要的“角色”:广告商、发布商、广告交换商和用户。在此基础上,这个生态圈产生了一些重要的新的中间平台。
|
||||
|
||||
<li>
|
||||
**供应侧平台**,简称SSP,负责管理众多发布商的展示机会,接受来自需求侧平台的竞价(简称Bid),同时自动地展示广告。
|
||||
</li>
|
||||
<li>
|
||||
**广告交易平台**,简称ADX,是负责多个SSP和需求侧平台进行匹配的中间平台。
|
||||
</li>
|
||||
<li>
|
||||
**需求侧平台**,简称DSP,是负责管理众多广告商诸多广告的平台。
|
||||
</li>
|
||||
<li>
|
||||
**数据处理平台**,简称DMP,是为SSP、ADX、DSP提供数据服务的中间商。
|
||||
</li>
|
||||
|
||||
值得注意的是,以上的这种区别仅仅是一种概念上的区分,目的是为了让从业人员能够更加清晰地理解各个系统的目标和作用。在实际的运作中,不少平台都充当了多个角色,甚至有比较大的互联网广告平台在这几个子系统中都有所涉及。
|
||||
|
||||
## 用户行为定向
|
||||
|
||||
了解了实时竞价系统的生态环境之后,我们来看在一次广告显示的流程中,这些生态伙伴都参与了什么样的动作。
|
||||
|
||||
第一步,用户来到某个网站,网站产生了一个对实时竞价系统广告网络的请求。
|
||||
|
||||
第二步,实时竞价系统广告网络向某个DSP发送请求,这个请求里包含了用户是谁,当前页面是什么,以及一些上下文的数据。
|
||||
|
||||
第三步,DSP收到请求以后,就向DMP发送一个数据请求,用于收集用户更多的信息,包括用户的年龄、性别以及喜好。
|
||||
|
||||
第四步,DSP收到DMP的信息以后,会向实时竞价系统发出一个自己认为合适的广告以及竞价的价格。
|
||||
|
||||
第五步,实时竞价系统广告网络收集到所有的广告竞价以后,会举行一个拍卖(Auction)。每个实时竞价系统的拍卖规则可以不同。
|
||||
|
||||
第六步,实时竞价系统会向赢得广告位的DSP发送最后的收款价格,这个价格是根据某种拍卖规则决定的。
|
||||
|
||||
第七步,广告显示给了用户。
|
||||
|
||||
第八步,用户对广告的反馈,例如是否点击,是否购买广告相应的产品,是否订阅广告对应的服务等,这些信息会返回给DSP。
|
||||
|
||||
注意,这里提到的实时竞价系统广告网络既可以是一个SSP,也可以是一个ADX。
|
||||
|
||||
我们通过这个流程可以看出,在广告生态系统中,几乎所有的角色,都要在每一个广告请求中参与其中。每一个流程的不精确都有可能让最后现实的广告不符合用户的喜好。
|
||||
|
||||
## 用户追踪
|
||||
|
||||
从上面这个广告请求的流程中,我们可以看到,在整个广告生态系统中,**对用户的追踪是一种非常重要的能力**。如果广告平台的任何一个部件无法对用户信息进行有效的管理,那么,我们就无法显示相关的广告。
|
||||
|
||||
广告生态群对用户信息的追踪有一个基本的技术,那就是**存储用户的Cookie**。实际上,在广告生态圈里,就是用Cookie来对用户的身份进行识别的。当用户第一次访问一个网站的时候,一段Cookie就会被建立并且存储在用户的浏览器里。当用户下一次再访问的时候,这段Cookie就会被重新访问并且可能被更改。
|
||||
|
||||
需要注意的是,Cookie是和某一个域名(Domain)相关联的。比如,在通常情况下,你访问了A网站,B网站就无法访问你在A网站的Cookie。这样做的初衷是在互联网上可以做到保护用户的隐私以及有限制的信息共享。但作为广告平台来说,这样做当然是无助于平台对于用户信息的访问。
|
||||
|
||||
那么,一种方法就是B网站直接得到A网站的允许,到A网址植入脚本从而来收取用户的Cookie信息。例如,在某个时期内,纽约时报的网站就有多达17个合作方在对用户的数据进行收集。然而,即便是这样,每个单独的数据收集方都只能对用户在互联网上的行为进行局部的数据采集。也就是说,这些收集方很难对用户在互联网上的全部行为进行建模。很明显,这是不利于展示最有价值的广告信息的。
|
||||
|
||||
在这样的情况下,也就慢慢催生了一个新的技术——**Cookie的整合**。简单说来,Cookie整合要做的事情就是把多个由不同的数据收集方收集的Cookie进行匹配,从而能够在逻辑上把这些Cookie都当做同一个人处理。据统计,一个用户在30次点击内,就有99%的概率会被互联网上前10大“数据追踪机构”所追踪,而至少有40%的Cookie可以得到有效的整合。
|
||||
|
||||
当然,用Cookie来追踪用户并不是万能的。用户可以删除Cookie信息甚至在浏览器的层面禁止Cookie信息。这就给广告平台提出了不小的挑战。最近几年,基于其他存储技术的用户追踪手段,例如Canvas API或者Flash Cookie等也慢慢流行起来。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了广告系统的基本架构。一起来回顾下要点:第一,我们分享了广告系统中各个系统的角色;第二,我们聊了各个子系统在一个广告显示请求中都干了什么事情,从感性上为你建立一个整体的观念;第三,我们简单提及了用户追踪的概念以及现在最常见的用户追踪技术的一些基本思路。
|
||||
|
||||
最后,给你留一个思考题,对于一个电子商务网站来说,卖家希望通过在站内显示的广告来扩大收益,这种情况下,谁是DSP、SSP和ADX呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
|
61
极客时间专栏/AI技术内参/广告系统核心技术/081 | 广告回馈预估综述.md
Normal file
61
极客时间专栏/AI技术内参/广告系统核心技术/081 | 广告回馈预估综述.md
Normal file
@@ -0,0 +1,61 @@
|
||||
<audio id="audio" title="081 | 广告回馈预估综述" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/bf/9a/bf7b32f9b64f28c02552fb3601db119a.mp3"></audio>
|
||||
|
||||
在上一篇的分享里,我们详细地讨论了广告系统的架构,熟悉了各个组件都是怎么运作的,特别是我们重点剖析了对于每一个广告请求,供应侧平台(SSP)、广告交易平台(ADX)、需求侧平台(DSP)以及数据处理平台(DMP)都扮演了什么样的角色。同时,我们介绍了对于用户信息的追踪和整合,业界的基本技术就是存储用户的Cookie,以及慢慢催生的Cookie的整合技术。
|
||||
|
||||
今天,我们就来看一看整个计算广告领域最核心的一个问题:**广告回馈预估**。
|
||||
|
||||
## 什么是广告回馈预估
|
||||
|
||||
什么是广告回馈预估?广告回馈预估要解决什么问题?我们先来弄明白这个问题。
|
||||
|
||||
我们说过计算广告有两大应用领域:搜索广告和展示广告,以及围绕这些广告的生态系统。这些系统或者领域都希望达到一个最终的目的,那就是用户和广告进行**交互**,并且能够对广告所代表的服务或者产品产生印象,从而达成某种程度的**交易**。
|
||||
|
||||
这里的“交互”包括对传统广告的点击,也包括对视频广告的观看。而在和广告交互之后,用户对于广告所代表的服务或商品达成的“交易”,包括购买、订阅甚至是改变印象等等。那么,这一切和广告本身的交互以及和广告所代表的服务或者商品达成的交易,我们都通通称为“**回馈**”(Feedback)。
|
||||
|
||||
而我们所说的“**回馈预估**”,**就是要预测用户这种行为的可能性,或者说是概率**。也就是说,我们希望了解用户是不是有可能点击这个广告;有多大概率观看完这段视频广告;有多大可能去购买这个广告所代表的商品。
|
||||
|
||||
**对广告的回馈概率进行有效估计是很多广告生态系统组件的一个核心需求**。对于发布商来说,显示广告,不管是通过搜索结果还是通常的页面,都希望能够有用户交互从而带来收入。很多广告系统的收入模式就是依靠用户的点击从而让广告商为此支付一定费用给发布商。
|
||||
|
||||
因此,对于发布商来说,越是能准确估计这部分的点击率,就越能保证自己的收入。相应地,对于广告商来说,很有必要知道某一种类型的广告在哪个发布商能够带来更多的点击,从而能够有针对性地对于某个发布商进行投放。由此看来,广告回馈预估是一个非常重要的有待解决的技术问题。
|
||||
|
||||
## 广告回馈预估的普遍挑战和技术难点
|
||||
|
||||
既然广告回馈预估很重要,我们是不是可以直接用现成的机器学习工具就可以解决这个问题呢?这个问题有什么自身的特点,又有哪些挑战和技术难点呢?
|
||||
|
||||
在比较简单的设定下,广告回馈预估可以看做是某种**监督学习的任务**。在这类监督学习任务里,标签是用户的动作,例如点击或者观看,或者购买等。我们需要建立的是一个用户在某种上下文中对广告标签的一个模型。这里的上下文包括查询关键词、用户信息、广告信息以及一切其他有用的信息。
|
||||
|
||||
那么,在这样的设定下,广告回馈预估的核心挑战是什么呢?
|
||||
|
||||
**核心挑战其实来自于稀疏的数据**。
|
||||
|
||||
不管是在搜索广告中也好,还是在展示广告中也好,从平均的角度来说,相比于用户和正常的搜索结果或者展示结果(比如新闻内容等)的互动,用户与广告的互动要成倍地减少。有一项研究表明,在同样一个位置,广告的点击率可以是正常内容的十分之一、百分之一甚至是千分之一。也就是说,从概率的角度来看,用户普遍是不点击广告的。这个观察基本上是符合我们对用户的普遍理解的。但是,较少的点击数据造成的结果就是,从监督学习的角度来说,大量的数据点都是未交互的数据,只能当做**负例**来处理。
|
||||
|
||||
实际上,**在广告点击率预估的问题中,正例的数目常常是负例的百分之一或者千分之一**。这样造成的就是非常“**不均衡**”的数据集。而要想在不均衡的数据里中进行概率估计,往往都是一件困难的事情。
|
||||
|
||||
而购买事件相对于广告点击来说就更加稀少,这一点其实也很正常。在点击了广告之后,又有多少人真正会去购买这些产品呢?因此,提高广告的转化率,也就是交易发生的概率,往往就是更富有挑战的任务。
|
||||
|
||||
值得一提的是,在监督学习的框架中,除了数据问题以外,广告回馈预估还有**目标函数的挑战**。具体是什么情况呢?
|
||||
|
||||
在真实的系统中,我们需要在很多候选可能的广告中,选出最优的一个或者几个显示在页面上。从某种程度上来说,这更像是一个**排序问题**。同时,对于不少DSP(需求侧平台)来说,广告排序的最终目的是进行“竞拍”(Auction)。因此,最后估算广告的点击率以后,还需要看广告的竞价,由此来对广告是否会赢得竞拍从而被显示在页面上进行一个更加全面的估计。很显然,和传统的推荐或者搜索比较,这些问题都要复杂许多。
|
||||
|
||||
## 广告回馈预估的算法和模型
|
||||
|
||||
广告回馈预估的难点和挑战来自两方面,一方面是稀疏的数据,会造成不均衡的数据集;一方面是目标函数的挑战。那么,广告回馈预估有哪些比较常见的算法或者模型呢?
|
||||
|
||||
我们接下来会对这一系列有关的算法和模型进行详细讨论。今天,我会带你从宏观上进行一下总结。
|
||||
|
||||
从最直接的监督学习的角度来看,广告回馈预估的一个常见算法就是把这个问题当做**二元分类问题**,并且直接利用“**对数几率回归**”(Logistic Regression)来对这个问题建模。实际上,直到今天,对数几率回归依然是广告回馈预估领域的重要方法。
|
||||
|
||||
第二类经常使用的就是**树模型**,特别是 **GBDT** 这个通常在搜索中使用的模型。我们前面已经提到了这类模型对于排序学习的作用。
|
||||
|
||||
第三类目前比较火热的领域就是**如何利用深度学习来对回馈预估进行建模**。这一类模型在最近几年有了比较大的进展。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了广告系统中最核心的一个问题:广告回馈预估。一起来回顾下要点:第一,广告回馈预估就是预测“用户与广告的交互以及达成交易这种行为”的概率;第二,广告回馈预估有两方面的难点和挑战,分别来自数据和目标函数;第三,在这个领域有一些流行的模型,比如对数几率回归和数模型等。
|
||||
|
||||
最后,给你留一个思考题,当我们有不均衡数据集的时候,我们一般都有哪些解决方案?针对广告预估,是否需要对这些方案进行额外的处理呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
|
69
极客时间专栏/AI技术内参/广告系统核心技术/082 | Google的点击率系统模型.md
Normal file
69
极客时间专栏/AI技术内参/广告系统核心技术/082 | Google的点击率系统模型.md
Normal file
@@ -0,0 +1,69 @@
|
||||
<audio id="audio" title="082 | Google的点击率系统模型" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/0f/c6/0f878e871430c4e54a67c0a896f96dc6.mp3"></audio>
|
||||
|
||||
广告是很多互联网公司的重要收入来源,比如Google、Facebook、微软、阿里巴巴、百度、腾讯等。以Facebook为例,它的2017年第一季度财报显示,公司总营收为78.4亿美元,这其中98%的收入来自广告。同样,在这些公司内部,都有着完善的广告系统来支撑其广告业务。
|
||||
|
||||
当然,大型广告系统的成功需要依靠很多相互协调的子系统和组件。今天我要和你聊的是广告系统里最基础的一个子系统,也是整个广告系统的核心功能之一——**点击率预估系统**。点击率预估,顾名思义就是根据环境和广告的类型,来估计用户有多大的可能性点击当前的广告。这个预估值会用于广告系统的其他组件,比如对广告主(投放广告的客户)的计费模块。因此,点击率预估的准确性和实时性就变得十分重要。
|
||||
|
||||
今天和你分享一篇广告点击率预估文献史上非常重要的论文,它来自Google广告团队,标题是《工程实践视角下的广告点击率预估》(“Ad Click Prediction: a View from the Trenches”)。
|
||||
|
||||
## 论文背景
|
||||
|
||||
这篇论文发表于KDD 2013年的工业论文组,在短短几年时间里就获得了近200次的文章引用数,不少公司争相研究其中的内容,希望能够复制类似的算法和技术。
|
||||
|
||||
这篇文章的作者群多达16人,他们都是来自Google西雅图、匹兹堡、硅谷以及剑桥等地办公室的研究人员和工程师,文章的致谢部分也有9人。可见整个论文以及里面的技术的确是团队协作的结果。
|
||||
|
||||
这里面有两位作者值得介绍一下。第一位是论文的第一作者布兰登(H. Brendan McMahan)。布兰登早年在卡内基梅隆大学计算机系获得博士学位。他的博士生导师是戈登(Geoff Gordon)以及布卢姆(Avrim Blum),这两位都是卡内基梅隆大学机器学习界的权威教授。布兰登本人长期对优化算法有深入的研究,这篇论文的重要核心算法就来自于他的研究成果。
|
||||
|
||||
文章的另外一位作者斯卡利(D. Sculley)从塔夫茨大学(Tufts University)博士毕业之后,一直在Google的匹兹堡分部工作,并着手研究大规模机器学习系统,其中重要的代表性研究成果是如何把回归问题和排序问题结合起来(发表于KDD 2010年)。斯卡利曾经是一个著名的开源大规模机器学习软件包sofia-ml的作者,里面实现了一个大规模版本的RankSVM,一度受到关注。
|
||||
|
||||
## 在线逻辑回归(Logistic Regression)
|
||||
|
||||
文章首先讲解的是点击率预估的核心算法。因为Google要处理的数据集非常庞大,不管是样本数量还是样本的特征数都是百亿级别的,所以选用什么样的算法至关重要。2013年,也就是这篇论文发表的时候,当时大规模深度学习的环境还没有完全成熟起来,Google的科学家和工程师选择了**逻辑回归**,这是一个非常传统但也非常强大的线性分类工具。
|
||||
|
||||
我们这里简单回顾一下逻辑回归模型。
|
||||
|
||||
逻辑回归是要对二元分类问题进行建模,模型的核心是通过一组(有可能是非常巨大规模的)特征以及所对应的参数来对目标的标签进行拟合。这个拟合的过程是通过一个叫逻辑转换或函数来完成的,使得线性的特征以及参数的拟合能够非线性转换为二元标签。
|
||||
|
||||
普通的逻辑回归并不适应大规模的广告点击率预估。有两个原因,第一,数据量太大。传统的逻辑回归参数训练过程都依靠牛顿法(Newton’s Method)或者L-BFGS等算法。这些算法并不太容易在大规模数据上得以处理。第二,不太容易得到比较稀疏(Sparse)的答案(Solution)。也就是说,虽然数据中特征的总数很多,但是对于单个数据点来说,有效特征是有限而且稀疏的。
|
||||
|
||||
我们希望最终学习到的模型也是稀疏的,也就是对于单个数据点来说,仅有少量特征是被激活的。传统的解法,甚至包括一些传统的在线逻辑回归,都不能很好地解决答案的稀疏性问题。
|
||||
|
||||
这篇文章提出了用一种叫**FTRL**(Follow The Regularized Leader)的在线逻辑回归算法来解决上述问题。FTRL是一种在线算法,因此算法的核心就是模型的参数会在每一个数据点进行更新。FTRL把传统的逻辑回归的目标函数进行了改写。
|
||||
|
||||
新的目标函数分为三个部分:第一部分是一个用过去所有的梯度值(Gradients)来重权(Re-Weight)所有的参数值;第二部分是当前最新的参数值尽可能不偏差之前所有的参数值;第三个部分则是希望当前的参数值能够有稀疏的解(通过L1来直接约束)。从这三个部分的目标函数来看,这个算法既能让参数的变化符合数据规律(从梯度来控制),也能让参数不至于偏离过去已有的数值,从而整个参数不会随着一些异常的数据点而发生剧烈变化。
|
||||
|
||||
在算法上另外一个比较新颖的地方,就是对每一个特征维度的学习速率都有一个动态的自动调整。传统的随机梯度下降(Stochastic Gradient Descent)算法或是简单的在线逻辑回归都没有这样的能力,造成了传统的算法需要花很长时间来手工调学习速率等参数。
|
||||
|
||||
同时,因为每一个特征维度上特征数值的差异,造成了没法对所有特征选取统一的学习速率。而FTRL带来的则是对每一个维度特征的动态学习速率,一举解决了手动调整学习算法的学习速率问题。简单说来,学习速率就是根据每一个维度目前所有梯度的平方和的倒数进行调整,这个平方和越大,则学习速率越慢。
|
||||
|
||||
## 系统调优工程
|
||||
|
||||
很明显,光有一个比较优化的在线逻辑回归算法,依然很难得到最好的效果,还会有很多细小的系统调优过程。
|
||||
|
||||
比如文章介绍了利用**布隆过滤器**(Bloom Filter)的方法,来动态决定某一个特征是否需要加入到模型中。虽然这样的方法是概率性的,意思是说,某一个特征即便可能小于某一个值,也有可能被错误加入,但是发生这样事件的概率是比较小的。通过布隆过滤器调优之后,模型的AUC仅仅降低了0.008%,但是内存的消耗却减少了60%之多,可见很多特征仅仅存在于少量的数据中。
|
||||
|
||||
文章还介绍了一系列的方法来减少内存的消耗。比如利用更加紧凑的存储格式,而不是简单的32位或者64位的浮点数存储。作者们利用了一种叫q2.13的格式,更加紧凑地存储节省了另外75%的内存空间。
|
||||
|
||||
此外,前面我们提到的计算每一步FTRL更新的时候,原则上都需要存储过去所有的梯度信息以及梯度的平方和的信息。文章介绍了一种非常粗略的估计形式,使得这些信息可以不必完全存储,让内存的消耗进一步降低。这部分内容可能并非对所有读者都有益处,然而我们可以看到的是,Google的工程师为了把一种算法应用到实际中做出了非常多的努力。
|
||||
|
||||
另外,文章也特别提出,虽然大家都知道在点击率预估这样非常不对称的问题上(也就是正例会远远少于负例)需要对负样本进行采样,但是这里面需要注意的是直接采样会对参数的估计带来偏差。同时文章也提出了需要对模型的最后预测进行调整(Calibration),使得模型的输出可以和历史的真实点击率分布相近。这一点对于利用点击率来进行计费显得尤为重要,因为有可能因为系统性的偏差,预测的数值整体高出或者整体低于历史观测值,从而对广告主过多计费或者过少计费。
|
||||
|
||||
## 失败的实验
|
||||
|
||||
这篇文章难能宝贵之处是不仅介绍了成功的经验,还介绍了一些失败的或者是不怎么成功的实验结果,让后来的学者和工程师能够少走弯路。
|
||||
|
||||
比如著名的**Hashing Trick**,在这篇文章里,Google的工程师们经过实验发现,特征经过哈希之后并没有显著降低内存而且模型的精准度有所下降,同时哈希也让模型变得不可解释,于是Google的工程师觉得没有必要对特征进行哈希。
|
||||
|
||||
另外一个热门的技术**Dropout**也被作者们尝试了,在Google的实验数据上并没有显著的效果。还有一个经常见到的技术,那就是对学到的参数进行归一化(Normalization),这是让参数能够在一定的范围内不随便波动。遗憾的是,Google的作者们也发现这个技术没有太大作用,模型的效果经常还会降低。
|
||||
|
||||
## 小结
|
||||
|
||||
今天我为你分享了这篇关于广告点击率预估的重要论文,你需要理解的核心要点有几个,一是FTRL模型的创新;二是这个模型如何应用到工业界的环境中特别是如何对内存的消耗进行调优;三是Google一系列失败尝试的总结。
|
||||
|
||||
总之,这篇论文是难得一见的工业界级别的科技论文分享。从KDD工业组的角度来说,很有借鉴意义;从业界贡献来说,除了广告之外,FTRL也被广泛应用到推荐系统等领域。
|
||||
|
||||
最后,我们再来探讨个问题。假设你在负责公司的广告系统,那你应该如何判断自己的场景是不是应该使用FTRL呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
|
53
极客时间专栏/AI技术内参/广告系统核心技术/083 | Facebook的广告点击率预估模型.md
Normal file
53
极客时间专栏/AI技术内参/广告系统核心技术/083 | Facebook的广告点击率预估模型.md
Normal file
@@ -0,0 +1,53 @@
|
||||
<audio id="audio" title="083 | Facebook的广告点击率预估模型" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/fe/b1/fef1a31dc0a23e7d320e63fc815530b1.mp3"></audio>
|
||||
|
||||
上一篇文章我们讲了整个计算广告领域最核心的一个问题:广告回馈预估。广告回馈预估,就是预测“用户与广告的交互以及达成交易这种行为”的概率,也就是点击率预估和转化率预估。广告回馈预估存在着数据稀疏等难点和挑战,目前在这个领域比较流行的模型有对数几率回归和数模型等。
|
||||
|
||||
今天,我们就来看一个广告回馈预估的实例:**Facebook的广告点击率预估**。我们会结合2014年发表的一篇论文《Facebook的广告点击率预估实践经验》(Practical Lessons from Predicting Clicks on Ads at Facebook)来进行分析[1]。
|
||||
|
||||
## Facebook广告预估
|
||||
|
||||
Facebook的广告不是我们之前介绍过的搜索广告或者展示广告的简单应用,而是**社交广告**。可以说,社交广告是最近10年慢慢崛起的一种新的广告类型。在论文发表的时候,也就是2014年,Facebook有7.5亿“日活跃用户”(Daily Active Users)和超过1百万的广告商,这个数字在当时是相当惊人的。而今天,在Facebook上活跃的大约有14.5亿用户和5百万广告商。因此,广告系统所需要应对的规模是成倍增加的。
|
||||
|
||||
我们说Facebook的广告是社交广告,也就是说,这些广告不依赖于用户输入的搜索关键词。从Facebook的角度来说,广告商在其平台上投放广告的巨大优势,在于能够精准地根据用户的地理位置、年龄、性别等重要信息进行有针对性的投放,因此这些信息能够帮助平台选择什么样的广告适合什么样的人群。那这里的难点就是,对于某一个人群来说,可能符合的广告数量是巨大的,这对广告的回馈预估以及整个系统都是一个不小的挑战。
|
||||
|
||||
## 广告点击率的评估
|
||||
|
||||
在我们详细解释Facebook点击率系统的一些核心组件之前,我们首先来看一看Facebook的研究人员是怎么评测他们的系统的。
|
||||
|
||||
我们之前提到过,广告系统中的一个巨大挑战就是数据的不均衡。负例,也就是用户没有点击过的广告非常多;而正例,也就是点击过的广告相对比较少。这个比例,根据不同的广告系统会不太一样,但是大体说来,负例与正例的比大概是10:1、100:1甚至1000:1。
|
||||
|
||||
在这样的情况下,如果把点击率预估当做是一个分类问题,按照一般分类问题的评价标准,例如准确率,我们只要预测绝大多数,甚至是全部的实例为负例,那么就可以取得很高的准确率。因此,单独看准确率并不是一个很好的评测标准。
|
||||
|
||||
这个时候,一个比较通行的评测不均衡数据分类问题的指标是“**曲线下面积**”,或者简称为 **AUC**,这个评测办法可以算是一种替代方法。简单来说,AUC就是看我们是不是能够把正例给排序到负例上面。也就是说,如果每一个正例和负例都有一个预测数值,那么我们按照这个数值排序,去数每一个正例下面有多少负例,然后对所有正例所对应的数取平均。**AUC的数值高,则代表我们可以把绝大多数正例排序到负例前面**。
|
||||
|
||||
当然,AUC也不是万能的。AUC的一个最大问题就是它并不在乎所有实例的绝对预测数值,而只在乎它们的相对位置。这在广告系统中可以说是一个非常大的缺陷。我们之前也提过,有很多广告系统组件依赖于对于广告点击率的精确预估,比如收费系统,流量预测等。因此,仅有一个相对位置的正确是不够的。
|
||||
|
||||
在这篇论文中,Facebook团队提到了一个概念叫“**归一化的交叉熵**”,简称 **NE**,用于衡量广告系统的好坏。NE实际上是一个比值,比值的分母是数据中观测到的实际的点击率的数值,也可以叫作数据的“背景估计”(Background Estimation);而分子是某一个模型对点击率的估计。这样做的归一化,目的就是来看,在去除了背景估计的情况下,对点击率的估计是否依然好或者坏。
|
||||
|
||||
## 层次化的点击率预估模型
|
||||
|
||||
Facebook的研究人员在这篇论文中提出的点击率预估模型分为两个层次。也就是说,从最初的模型特性输入,需要经过两个不同的模型才对点击率做出最终的预测。这个两层架构对后来的很多点击率预估模型有巨大的影响。
|
||||
|
||||
我们首先来看第一层模型,这里的输入是最初的特性,其中连续数值的特性已经被转换成了**离散的数值**。然后,这些离散的数值经过了一个**GBDT树**来进行特性转换。这里为什么会用GBDT呢?主要有两层意义。
|
||||
|
||||
第一,GBDT可以对特性进行非线性组合。也就是说,GBDT的输出一定是之前特性的非线性的转换,这是由树模型原本的性质所带来的,这个性质对于线性模型来说会有巨大的优势。
|
||||
|
||||
第二,经过GBDT转换之后,树模型其实选择出了对目标有用的特性,因此这里还起到一个“特性筛选”(Feature Selection)的作用。也就是说,经过GBDT的模型,最后剩下的特性肯定是要远小于最初的输入特性的,毕竟有作用的特性是少数的。
|
||||
|
||||
在经过了GBDT之后,Facebook的研究者用树模型最后的叶节点当做新的特性,然后再学习了一个**线性的分类模型**。这里的思想其实和后来流行的深度学习的想法很类似,也就是先对输入特性进行非线性转换,然后再经过一个线性分类器来进行最后的预测。这个第二层的线性分类器可以用类似SGD的方法进行“在线学习”(Online Learning)。因此,学习到这样一个模型就相对比较容易。
|
||||
|
||||
在论文的实验中,作者们不仅展示了两层模型的优势,并且还讨论了很多选取特性方面的经验以及训练模型的经验,比如广告过去的历史信息非常重要,而绝大多数重要的特性都和历史信息有关。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了Facebook的广告点击率预估的核心算法。一起来回顾下要点:第一,Facebook的广告是社交广告,有其自身的特点和难点;第二,Facebook对广告进行评测的指标主要有AUC和NE;第三,Facebook提出了两层模型的架构,其主要思想是先经过GBDT来进行特性转化,再经过一个线性分类器进行最后的预测。
|
||||
|
||||
最后,给你留一个思考题,对于两层架构来说,除了模型性能上的优势以外,在训练的方便程度上,这样的架构还没有什么优势或者劣势呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
1. Xinran He, Junfeng Pan, Ou Jin, Tianbing Xu, Bo Liu, Tao Xu, Yanxin Shi, Antoine Atallah, Ralf Herbrich, Stuart Bowers, and Joaquin Quiñonero Candela. Practical Lessons from Predicting Clicks on Ads at Facebook. Proceedings of the Eighth International Workshop on Data Mining for Online Advertising (ADKDD’14). ACM, New York, NY, USA, , Article 5 , 9 pages, 2014.
|
||||
|
||||
|
59
极客时间专栏/AI技术内参/广告系统核心技术/084 | 雅虎的广告点击率预估模型.md
Normal file
59
极客时间专栏/AI技术内参/广告系统核心技术/084 | 雅虎的广告点击率预估模型.md
Normal file
@@ -0,0 +1,59 @@
|
||||
<audio id="audio" title="084 | 雅虎的广告点击率预估模型" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/78/a9/78450cebccacf76f8b0ae03726be21a9.mp3"></audio>
|
||||
|
||||
在上一篇文章中,我和你分享了广告回馈预估的一个实例:Facebook的广告点击率预估。我们重点讲了Facebook利用“归一化的交叉熵”这个概念,来衡量广告模型的精准度。另外,我们还分享了Facebook提出的两层模型架构,也就是一开始先利用树模型GBDT来对特性进行非线性转换和选择,然后再利用一个在线学习的线性模型进行最后的预测,这个架构后来得到了很多研究者和实践者的追随。
|
||||
|
||||
今天,我们来分析另外一个经典的公司实例:**雅虎的广告点击率预估模型**。
|
||||
|
||||
## 雅虎早期的广告预估模型
|
||||
|
||||
对于曾经的互联网巨头雅虎来说,广告系统很早就成为其重要的经济支柱。早在2007年甚至更早的时候,雅虎的工程师和研究人员就投入到了对广告点击率预估的研究中。这方面的几个代表作我列在了文末的参考文献([1]、[2]和[3])里,如感兴趣,你可以进一步学习。
|
||||
|
||||
我们在这里集中讲讲这些工作的核心思路。
|
||||
|
||||
首先,雅虎的研发人员很早就注意到了广告预估模型的一个难点,那就是**数据的稀疏性**。这些具有稀疏性的数据带来了一个后果,那就是**模型对很多“罕见事件”(Rare Events)的估计会出现很大的不稳定性**。
|
||||
|
||||
我们来举个例子,如果广告1在纽约地区展示了1万次,点击200次,点击率是0.02;而广告2在旧金山地区展示了1百次,点击3次,点击率是0.03,在这样的情况下,我们能判断广告2就一定比广告1有更高的点击率吗?这里面至少有两个因素需要考虑。
|
||||
|
||||
第一,**上下文的特性信息非常重要**。这两个广告可能是类型不同,可能展示的地区不同,因此并不能完全直接来对这两个广告进行比较。第二,广告2在旧金山地区的展示次数还比较少,因此0.03这个**预估值**可能是非常不准确的,或者说至少是**不稳定的**,它的误差要大于第一个广告。
|
||||
|
||||
这个时候,研发人员就会思考,如何对这些广告的预估进行更加精确的处理呢?
|
||||
|
||||
在这样的背景下,雅虎的研发人员提出了一个点击率估计方法,其实也是一种**两层模型**。第一层模型就是最原始的对点击率的估计,也就是类似我们上面所说的直接按照数据进行估计。当然,这里的问题我们刚才也已经提到了,就是估计的不稳定性。第二层模型是对第一层模型的修正。所谓修正,就是**利用层次化信息来对原始的估计值进行“平滑”**(Smoothing)。
|
||||
|
||||
什么是层次化信息呢?我们举例来说明。比如,两个广告来自于同一个广告商,因此它们应该有一定的类似的点击率;两个广告被展示到同一个地区,它们也应该有一定的类似的点击率。这些层次信息给了我们一些启示,来对原始估计值进行修正。当然,根据我们这两个例子你就可以看出,一个广告可以受到多个层次信息的影响,比如广告商的层次信息,地理位置的层次信息,以及类别的层次信息等。所以,要想设计一套完善的基于层次信息的平滑方案也并非易事。
|
||||
|
||||
这个时期,雅虎在这方面的工作都围绕着一个主题,那就是**如何对平滑方案进行创新**。一种方法是利用“产生式模型”(Generative Model)的概念,把层次信息的叶子节点的数据产生过程,定义为基于其父节点数据的一个概率分布产生过程,从而把整个平滑方案的问题转换成为了一个有向无环图上的每个节点的后验概率参数的估计问题(参考文献[1]和[2])。另外一种方法则采取了一个不太一样的思路,那就是在做平滑的时候,在这种产生式建模之后,还追加了一个过程,利用树模型来对平滑的结果进行再次修正,使得最后的结果能够达到更高的精度(参考文献[3])。
|
||||
|
||||
这一系列工作虽然在概念上有很高的学术和实践价值,特别是如何利用层次性信息来对预测进行平滑这个方面,但是从整体来说,预估方案变得非常复杂而且环节太多。
|
||||
|
||||
## 雅虎后期的广告预估模型
|
||||
|
||||
雅虎后期的广告预估模型又从比较复杂的两层模式转换为了**一层模式**。这个转换主要是考虑到了整个流水线(Pipeline)的复杂度以及需要处理的数据规模逐渐变大,那么利用更加稳定和简单的方法就势在必行了。
|
||||
|
||||
对于雅虎后期的广告预估模型,我参考论文《简单和可扩展的展示广告响应预测》(Simple and Scalable Response Prediction for Display Advertising)[4],在这里为你简单做一个总结。
|
||||
|
||||
总体来说,整个模型回到了相对简单的“**对数几率回归**”(Logistic Regression),并且直接对所有的特性(Feature)进行建模。这里面唯一可能和之前的很多工作不太一样的地方,是大量使用了“**特性哈希**”(Feature Hashing)的方法。简单来说,特性哈希就是把原来大规模的有可能是极其稀疏的特性给压缩到了一个固定维度的特性空间里。当然,这肯定会对精度等性能有一定影响,因此这是一个需要有一定取舍的决策。
|
||||
|
||||
在这篇论文中,作者们还介绍了如何对大量的数据进行采样,以及如何利用配对的特性(也就是把两种不同的特性,比如广告商和地理位置进行配对)来自动产生更多的非线性因素的方法。
|
||||
|
||||
那么这个一层模式的方法所达到的效果怎样呢?论文中论述,相比于之前的两层结构,这个方法所达到的效果有很大程度的提升。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了雅虎的广告点击率预估模型。一起来回顾下要点:第一,雅虎早期的广告预估算法,其重点放在了一种两层模型架构上;第二,雅虎广告预估后期的一些思路,重点则放在了回归到一种更加简单的架构上。
|
||||
|
||||
最后,给你留一个思考题,如何在对数几率回归这样的线性模型中引入层次化的平滑思路呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
1. Deepak Agarwal, Andrei Zary Broder, Deepayan Chakrabarti, Dejan Diklic, Vanja Josifovski, and Mayssam Sayyadian. Estimating rates of rare events at multiple resolutions. Proceedings of the 13th ACM SIGKDD international conference on Knowledge discovery and data mining (KDD '07). ACM, New York, NY, USA, 16-25, 2007.
|
||||
|
||||
2. Deepak Agarwal, Rahul Agrawal, Rajiv Khanna, and Nagaraj Kota. Estimating rates of rare events with multiple hierarchies through scalable log-linear models. Proceedings of the 16th ACM SIGKDD international conference on Knowledge discovery and data mining (KDD '10). ACM, New York, NY, USA, 213-222, 2010.
|
||||
|
||||
3. Nagaraj Kota and Deepak Agarwal.Temporal multi-hierarchy smoothing for estimating rates of rare events. Proceedings of the 17th ACM SIGKDD international conference on Knowledge discovery and data mining (KDD '11). ACM, New York, NY, USA, 1361-1369, 2011.
|
||||
|
||||
4. Olivier Chapelle, Eren Manavoglu, and Romer Rosales. Simple and Scalable Response Prediction for Display Advertising. ACM Trans. Intell. Syst. Technol. 5, 4, Article 61 (December 2014), 34 pages, 2014.
|
||||
|
||||
|
51
极客时间专栏/AI技术内参/广告系统核心技术/085 | LinkedIn的广告点击率预估模型.md
Normal file
51
极客时间专栏/AI技术内参/广告系统核心技术/085 | LinkedIn的广告点击率预估模型.md
Normal file
@@ -0,0 +1,51 @@
|
||||
<audio id="audio" title="085 | LinkedIn的广告点击率预估模型" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/b6/e7/b665f3ea503a107f705ec1bb30b7d6e7.mp3"></audio>
|
||||
|
||||
上一篇文章我们讲了雅虎的广告预估模型。雅虎早期的模型主要集中在如何利用两轮架构来对点击率进行精确建模,后期的模型回归到了比较传统的利用线性模型外加特性哈希来进行大规模点击率预估的模式。
|
||||
|
||||
今天,我们继续来做公司的案例分析,结合论文《LASER:在线广告的可扩展响应预测平台》(LASER: a scalable response prediction platform for online advertising)[1],来了解LinkedIn这家公司是怎么来做最基本的广告预估的。
|
||||
|
||||
## LinkedIn广告预估模型
|
||||
|
||||
我们首先来看一看LinkedIn的广告预估模型。这个模型的一大“卖点”就是直接充分考虑了“冷启动”和“热启动”两种模式。
|
||||
|
||||
那么,什么是“冷启动”,什么又是“热启动”呢?
|
||||
|
||||
从我们之前的分享中可以看出,很多点击率预估的模型,都强烈依赖于对用户过去信息以及对广告过去表现的建模。比如刚刚讲过的雅虎预估模型,在它早期的模式中就已经见到了这种信息的作用。
|
||||
|
||||
然而,当我们出现新用户或者新广告时,就会有“冷启动”的问题。也就是说,“冷启动”主要是针对新用户或者新广告而言的。这时候基于历史信息的特性都无法起作用了,一般来说需要有专门的处理。
|
||||
|
||||
相对于“冷启动”,“热启动”指的是我们已经掌握了用户或者广告的一定信息,然后利用这些历史信息来对点击率进行预测。
|
||||
|
||||
这么说来,我们一般需要有两套对策,一套针对“冷启动”,一套针对“热启动”。LinkedIn的方法就是**希望通过一个模型来同时解决这两个问题**。
|
||||
|
||||
具体来说,LinkedIn把对点击率的预估拆成了三个部分。
|
||||
|
||||
**第一部分,是利用用户、广告和上下文所建立的全局性预测**。什么意思呢?就是我们利用用户特性、广告特性以及上下文特性来对点击率进行预测。这部分的核心思路就是**这些特性所对应的系数是全局性的**。也就是说,对于不同的用户、不同的广告以及不同的上下文所对应的系数是相同的。因为是全局性的系数,因此这部分其实提供了一种“冷启动”的需求,也就是不管是任何新的用户或是广告,只要有一定的特性,我们总能通过这部分得到一种粗略的估计。
|
||||
|
||||
**第二部分,是利用第一部分的用户、广告和上下文信息组成交叉特性,从而学习这些特性之间的关系**。如果说第一部分直接就是线性的预测,那么第二部分其实就是“交叉项”形成的非线性的部分。我们之前在讲推荐系统的时候提到过“分解机”(Factorization Machines)这个模型,讲到过这种“交叉项”所带来的非线性预测的好处。虽然这里和分解机的构成不完全一样,但是整体上表达了相似的意思。
|
||||
|
||||
**第三部分,是LinkedIn模型提出来的独特之处(和其他公司模型不太一样的地方)**。那就是同样是利用用户、广告和上下文特性,但是LinkedIn所提模型的系数则是每个用户、广告和上下文都不同。作者们认为这可以实现“热启动”效果。也就是说,当某个用户、某个广告或者某个上下文已经有比较多的数据以后,就可以依靠这些用户、广告或者上下文自己的系数了,而不仅仅依靠第一部分的全局系数。这个第三部分只有当数据比较多的时候才能够起作用。
|
||||
|
||||
## 模型的其他特性
|
||||
|
||||
这个模型在增加了这些系数的先验概率信息之后变得相对比较复杂。这篇论文介绍了一系列的模型训练思路,都是不错的可以借鉴的工业界经验。
|
||||
|
||||
首先,作者们认为,刚才模型中所说的**三个部分所需要的模型更新频率是不一样的**。比如第一部分和第二部分都可以认为是全局模型,也就是说系数是全局性的。因此这些模型的变化会比较慢,作者们建议一个星期对模型进行一次更新。而第三部分则是在已经积累了历史信息后慢慢呈现出的效果,因此对于数据会非常敏感,而且每个用户和每个广告都是不同的系数,因此需要在短时间内,比如半个小时甚至几分钟内,就重新训练模型,以达到个性化的目的。
|
||||
|
||||
其次,作者们还把**提出的模型和EE(Exploit & Explore)策略结合了起来**。我们在讲推荐系统时介绍过EE的思路,简单回顾一下EE的目的,主要就是探索那些并没有太多机会被展示的物品,在这里也就是广告。我们刚才说了,所有的系数都加上了先验概率,因此其实可以很容易结合数据计算**后验概率分布**。有了后验概率分布,作者们提出了**以汤普森采样为主的EE模式**。这也可以算是论文提出模型的一大亮点。
|
||||
|
||||
最后我们提一下这个模型的训练算法。因为要在大规模的数据上对模型进行训练,这篇文章采用了一种**ADMM算法**。在文章提出来的时候,作者们还是希望能够利用单个服务器对所有的模型参数进行训练。和其他的算法相比,一般认为ADMM这种算法的收敛速度更快,但是,利用这种算法的其他公司并不太多。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了LinkedIn广告点击率预估的核心算法。一起来回顾下要点:第一,我们讲了LinkedIn把点击率预估分为三个部分,从而分别解决“冷启动”和“热启动”的思路;第二,我们聊了如何更加有效地对这个提出的模型进行训练学习。
|
||||
|
||||
最后,给你留一个思考题,回顾我们讲过的推荐系统模块,我们还介绍过什么方法可以结合“冷启动”和“热启动”呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
1. Deepak Agarwal, Bo Long, Jonathan Traupman, Doris Xin, and Liang Zhang. LASER: a scalable response prediction platform for online advertising. Proceedings of the 7th ACM international conference on Web search and data mining (WSDM '14). ACM, New York, NY, USA, 173-182, 2014.
|
||||
|
||||
|
55
极客时间专栏/AI技术内参/广告系统核心技术/086 | Twitter的广告点击率预估模型.md
Normal file
55
极客时间专栏/AI技术内参/广告系统核心技术/086 | Twitter的广告点击率预估模型.md
Normal file
@@ -0,0 +1,55 @@
|
||||
<audio id="audio" title="086 | Twitter的广告点击率预估模型" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/37/5a/3754416daa48e31a146625e0aef1765a.mp3"></audio>
|
||||
|
||||
在上一篇文章的分享里,我们了解了LinkedIn这家公司是怎么来做最基本的广告预估的。LinkedIn的广告预估模型分为三部分,这里面的核心思想是直接对“冷启动”和“热启动”进行建模,外加和EE策略(Exploit & Explore)结合在一起,从而提升了效果。
|
||||
|
||||
今天,我们就结合论文《Twitter时间轴上的广告点击率预估》(Click-through Prediction for Advertising in Twitter Timeline)[1],来看看Twitter的广告预估到底是怎么做的。
|
||||
|
||||
## Twitter的广告预估
|
||||
|
||||
我们前面提到过最基本的广告形态分类,可以分为“搜索广告”和“展示广告”。当计算广告在互联网上出现以后,这两种广告形态就迅速被很多网站和服务商所采纳。
|
||||
|
||||
在最近的10年里,随着社交媒体的发展,希望在社交媒体的**用户信息流**里投放广告的需求逐渐增强。我们之前谈到的Facebook的案例,其实也是往用户的信息流中插入广告。很多类似的社交媒体都争先恐后地开始进行相似的项目,这一类广告经常被称为**社交广告**。
|
||||
|
||||
社交广告的特点是,需要根据用户的社交圈子以及这些社交圈所产生的内容,而动态产生广告的内容。广告商和社交媒体平台都相信,不管是在投放的精准度上,还是在相关性上,社交广告都有极大的可能要强过搜索广告和展示广告。毕竟,在社交媒体上,用户有相当多的信息,例如年龄、性别,甚至在哪里工作、在哪里上学等,这些信息都有助于广告商的精准投放。而用户自己在社交媒体上追踪的各种信息,又可以让广告商清晰地知道用户的喜好。
|
||||
|
||||
Twitter的工程师们在这篇论文里介绍的也是在信息流里投放的社交广告。只不过,Twitter的工程师们认为,我们之前分享的Facebook的解决方案,并没有真正考虑往信息流里插入广告的难点,也就是**广告的排序**,依然把广告的排序问题当做分类问题,也就是用对数几率回归(Logistic Regression)来解决。
|
||||
|
||||
另外,Twitter的工程师们认为,**社交广告比类似Google的搜索广告更具挑战性**。因为在社交信息流里,用户所看到的信息都是随时变化的,比如用户在Twitter中,可能随时有新的信息进入到信息流中,因此信息流的上下文会随时发生变化。那么,如果要投放和上下文相关的广告,这种变化无疑会带来前所未有的挑战。
|
||||
|
||||
## 利用排序学习来对广告排序
|
||||
|
||||
既然Twitter的工程师们认为,信息流广告的建模最重要的就是借鉴排序学习的办法。那么,我们就来看一看他们是怎么利用排序学习来为信息流社交广告建模的。
|
||||
|
||||
首先,排序学习中最基本的就是“**单点法**”(Pointwise)排序学习。回顾一下,单点法其实就是把排序学习的任务转化为分类问题。其实典型的就是直接利用“支持向量机”(SVM)或者对数几率回归模型。
|
||||
|
||||
第二种比较常用的排序学习的方法就是“**配对法**”(Pairwise)排序学习。通俗地讲,配对法排序学习的核心就是学习哪些广告需要排到哪些广告之前。这种二元关系是根据一组一组的配对来体现的。学习的算法,主要是看能否正确学习这些配对的关系,从而实现整个排序正确的目的。对于配对法排序,我们依然可以使用对数几率回归。只是这个时候,我们针对的正负示例变成了某个广告比某个广告排名靠前,或者靠后。
|
||||
|
||||
值得一提的是,通过配对法学习排序学习,对于一般的搜索结果来说,得到最后的排序结果以后就可以了。而对于广告来说,我们还需要**对点击率进行准确的预测**。这个我们之前提到过。于是在这篇文章中专门提到了如何从配对结果到点击率的预测。
|
||||
|
||||
具体来说,原理其实很简单,根据配对法学习排序完成以后的广告之间顺序是绝对的,但是绝对的数值可能是不太精确的。这里进行校准的目的是根据配对法产生的预测值,再去尽可能准确地转换为实际的点击率的数值。一般来说,这里就可以再使用一次对数几率回归。也就是说,这个模型的唯一特性就是配对法产生的预测数值,然后模型的目的是去估计或者说是预测最后的实际数值。**这种使用一个回归模型来进行校准的方法,也用在比如要将支持向量机的结果转换成概率结果这一应用上**。
|
||||
|
||||
虽然从原理上讲,先有一个配对模型进行排序,然后再有一个校准模型对模型的绝对估计值进行重新校正,这是很自然的。但是在实际的工业级应用中,这意味着需要训练两个模型,那无疑就变成了比较繁复的步骤。
|
||||
|
||||
所以,在这篇文章里,作者们想到了一种结合的办法,那就是**结合单点法和配对法**。具体来说,就是直接把两者的目标函数串联在一起。这样做的好处是,可以直接用现在已经有的训练方法,而且同时解决了排序和更加准确预测点击率的问题。我们回顾一下,单点法的特性是尽可能准确地预测每一个广告的点击率,也就是刚才提到的校准的这一个步骤所需要干的事情。这种直接串联的好处是,只需要学习一个模型就可以做到既考虑了排序,又考虑了预测的绝对精准度的问题。
|
||||
|
||||
**在机器学习应用中,串联多个目标函数是经常使用的一种技术**。其目的和作用也就和这个串联的想法一样,就是希望针对多个不同的目标进行优化。一般来说,这里面的核心是,多个串联的目标函数需要**共享模型参数**才能形成有关联的总的大的目标函数;如果没有共享参数,那就仅仅是一种形式上的串联。
|
||||
|
||||
## 模型的实验
|
||||
|
||||
在这篇文章里,作者们也是用了Facebook提出的“归一化的交叉熵”,简称NE的概念以及业界比较常用的AUC来针对模型进行线下评价。
|
||||
|
||||
在线下实验中,配对法以及单点法和配对法结合的混合方法都在AUC上要超过单点法本身。这非常容易理解。只是配对法针对单点法在NE上的表现要差很多。这和我们刚才所说的没有对点击率进行估计有很大关系。这一点也在实验中得到了证实。
|
||||
|
||||
在在线实验中,单点法相对于以前的自然排序,点击率好了将近14%,而混合法则好了26%左右。可以说效果非常明显。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了Twitter广告点击率预估的核心算法。一起来回顾下要点:第一,我们讲了Twitter认为社交广告的难点是要解决广告的排序问题;第二,我们聊了如何利用排序学习来为点击率预估进行效果提升。
|
||||
|
||||
最后,给你留一个思考题,为什么Twitter不尝试使用树模型来对点击率进行提升呢?
|
||||
|
||||
**参考文献**
|
||||
|
||||
1. Cheng Li, Yue Lu, Qiaozhu Mei, Dong Wang, and Sandeep Pandey. Click-through Prediction for Advertising in Twitter Timeline. Proceedings of the 21th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD '15). ACM, New York, NY, USA, 1959-1968, 2015.
|
||||
|
||||
|
63
极客时间专栏/AI技术内参/广告系统核心技术/087 | 阿里巴巴的广告点击率预估模型.md
Normal file
63
极客时间专栏/AI技术内参/广告系统核心技术/087 | 阿里巴巴的广告点击率预估模型.md
Normal file
@@ -0,0 +1,63 @@
|
||||
<audio id="audio" title="087 | 阿里巴巴的广告点击率预估模型" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/b4/bc/b48105f514be70cd25704fe2a500bebc.mp3"></audio>
|
||||
|
||||
今天,我们继续来进行点击率预估的案例分析,结合三篇核心论文,来看一看阿里巴巴的广告预估又有哪些值得我们学习的地方。
|
||||
|
||||
## 多段线性模型
|
||||
|
||||
我们之前介绍了多个公司关于点击率或者转化率预估的案例。从这些案例中,你可能已经发现有两个非常重要的特征需要机器学习模型来处理。
|
||||
|
||||
第一,就是**数据中呈现的非线性化的关系**。也就是说,我们的模型必须在某一个地方考虑到特性之间的非线性表征,以及对于目标标签的非线性关系。
|
||||
|
||||
第二,就是**数据的不均衡以及数据的稀疏性**。有很多广告商是新广告商,很多广告是新广告。在这样的情况下,我们就必须要处理“冷启动”和“热启动”这两种局面。
|
||||
|
||||
在《从广告点击率预估的大规模数据中学习多段线性模型》(Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction)[1]这篇文章中,作者们提出了一种**多段线性模型**来解决我们刚刚说的这两个问题,这个模型简称为**LS-PLM**( Large Scale Piecewise Linear Model )。
|
||||
|
||||
LS-PLM的核心思路其实非常直观。既然数据在整个空间里可能呈现非线性的关系,那么我们是否能够**把整个空间分割成较小的区域**,使得每个区域内依然可以使用**线性模型**来逼近这个区域内的数据点呢?其实在统计学习中,这种模型常常被叫作“**混合模型**”。在很多机器学习教科书中都会讲授的一种混合模型是“**高斯混合模型**”(Gaussian Mixture Model)。
|
||||
|
||||
LS-PLM在这篇论文的实际应用中,基本上可以被理解成为一种**混合线性模型**。这个模型的一个子模型叫作“**分割函数**”,也就是模型需要学习每一个数据点到底是依赖于哪一个线性模型来进行预测的。当然,这个分割是一种概率的分割。实际上,每一个数据点都依赖所有的线性模型来进行预测,只不过对每个模型的依赖程度不一样。对于每一个不同的线性模型来说,最大的不同就是每一个模型有自己的系数。也就是说,之前只有一个全局模型并且只有一组系数,相比之下,这里有多组系数来决定模型的预测效果。很明显,**对于LS-PLM来说,每一个局部都是线性的,但是在整体上依然是一个非线性的模型**。
|
||||
|
||||
LS-PLM还借助了**两种正则化机制**。一种叫作**L1正则**,这种正则化主要是希望模型保留尽可能少的特性,从而达到对于模型特性的选择。另外,模型还采用了一种**L2,1正则**的方法,这种方法的目的也是特性选择,但是希望能够把一组特性全部选择或者全部置零。
|
||||
|
||||
在实际的实验中,作者们尝试了不同数目的数据分割,从2个到36个不等。最终,他们发现当数据分割为12个的时候,模型的效果达到最优,而之后,模型效果并没有明显提升。最终推出模型的AUC比直接使用一个对数概率回归的全局模型,效果要好1.4%。
|
||||
|
||||
## 广告点击率预估和图像处理的结合
|
||||
|
||||
我们在电商上购物,对于商品的图像会不会影响我们的点击或者购买,应该有一个直观的感受。那么在广告的点击率预估上,商品的图像特征对于模型性能上的提高到底有没有帮助呢?我们再来看一篇论文[2],在这篇文章中,阿里巴巴的工程师就尝试对这个问题进行回答。
|
||||
|
||||
这篇文章结合了近期好几个利用深度学习来进行图像处理和广告点击率预估的工作。首先,就是所有的特性都利用一个“嵌入层”(Embedding Layer)**把原始的特性转换成为数值特性**。这种思路我们在之前介绍文本处理,特别是Word2Vec的时候曾经进行了详细的讲解。而在这里,不管是文本信息还是图像信息,都根据自己的特点转换成为了数值特性。
|
||||
|
||||
这里我们要解决的一个核心问题,就是用户和广告之间的匹配问题,这篇论文的模型是这么处理的。首先,对所有广告的ID及其图像进行单独的嵌入。然后对用户过去的喜好,特别是对图像的喜好进行了另外的嵌入,然后这些嵌入向量形成用户的某种“画像”。用户的画像和广告信息的嵌入被直接串联起来,形成最终的特征向量。在此之上,利用一个多层的神经网络来学习最后的点击率的可能性。
|
||||
|
||||
在深度学习建模中,这种把多种来源不同的信息通过简单的拼接,然后利用多层神经网络来进行学习的方法非常普遍和实用。
|
||||
|
||||
在这篇论文的介绍中,除了在模型上对图像进行处理以外,还有一个创新,就是提出了一个叫“**高级模型服务器**”(Advanced Model Server),简称**AMS**的架构理念。AMS是针对深度学习模型的大计算量而专门打造的计算体系。总体来说,**AMS的目的是把深度学习模型中的很多基础步骤进行拆分,然后把这些步骤部署到不同的服务器上,从而能够把复杂的模型拆分成细小的可以互相交流的步骤**。
|
||||
|
||||
从最终的实验结果上来看,基于深度学习的模型要比对数几率回归的模型好2~3%。整体上来看,利用了图像的模型要比没有利用图像的模型都要好,哪怕是线性模型也是一样的效果。但是,这个好的程度非常之小,基本上可以忽略不计。看来如何好好利用图像的信息,依然是一个比较大的挑战。
|
||||
|
||||
## 深度兴趣网络
|
||||
|
||||
我们刚才介绍的这种把其他信息和图像信息进行结合的方法,最近在一篇文章[3]中有一个总结。在这篇论文中,作者们提出了一种叫“**深度兴趣网络**”,或者简称**DIN**的架构。
|
||||
|
||||
DIN依靠一种基本的模型架构,那就是先把所有的特性变换成嵌入向量,然后针对不同的特性进行划组,一些特性得以直接进入下一轮,另一些特性经过类似图像中的池化(Pooling)操作抽取到更加高级的特性。之后,所有的特性都被简单串联起来,然后再经过多层的深度神经网络的操作。
|
||||
|
||||
DIN在这个架构的基础上,提出了一种新的“**激活函数**”(Activation Function),叫**DICE**,目的是可以在不同的用户数据中灵活选择究竟更依赖于哪一部分数据。可以说,在某种意义上,这个架构非常类似深度学习中比较火热的**Attention架构**,其目的也是要看究竟那部分数据对于最终的预测更有效果。
|
||||
|
||||
从最后的实验中看,不管是在内部数据还是外部公开的例如MovieLens或者Amazon的数据上,基于DIN的模型都比线性模型和其他的深度学习模型有显著的提高。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了阿里巴巴广告点击率预估的核心算法。一起来回顾下要点:第一,我们讲了如何利用混合线性模型来引入非线性的因素从而提高预测效果。第二,我们聊了如何利用深度学习模型来对数据进行建模,谈到了图像在这里面起到的作用。
|
||||
|
||||
最后,给你留一个思考题,深度学习模型在点击率预估方面的最大优势是什么?又有什么劣势呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
1. Kun Gai, Xiaoqiang Zhu, Han Li, Kai Liu, Zhe Wang. Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction. CoRR abs/1704.05194 , 2017.
|
||||
|
||||
2. Tiezheng Ge, Liqin Zhao, Guorui Zhou, Keyu Chen, Shuying Liu, Huiming Yi, Zelin Hu, Bochao Liu, Peng Sun, Haoyu Liu, Pengtao Yi, Sui Huang, Zhiqiang Zhang, Xiaoqiang Zhu, Yu Zhang, Kun Gai. Image Matters: Jointly Train Advertising CTR Model with Image Representation of Ad and User Behavior. CoRR abs/1711.06505 , 2017.
|
||||
|
||||
3. Guorui Zhou, Chengru Song, Xiaoqiang Zhu, Xiao Ma, Yanghui Yan, Xingya Dai, Han Zhu, Junqi Jin, Han Li, Kun Gai. Deep Interest Network for Click-Through Rate Prediction. CoRR abs/1706.06978 , 2017.
|
||||
|
||||
|
70
极客时间专栏/AI技术内参/广告系统核心技术/088 | 什么是“基于第二价位的广告竞拍”?.md
Normal file
70
极客时间专栏/AI技术内参/广告系统核心技术/088 | 什么是“基于第二价位的广告竞拍”?.md
Normal file
@@ -0,0 +1,70 @@
|
||||
<audio id="audio" title="088 | 什么是“基于第二价位的广告竞拍”?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/18/6d/18576c7e23872bc549e4c291959c6e6d.mp3"></audio>
|
||||
|
||||
在之前一段时间的分享里,我们重点讲解了广告系统中的回馈预测,也就是我们常说的点击率预测或是转化率预测的问题,和你一起分享了一些有代表性的公司对于点击率预测的技术方案。
|
||||
|
||||
在最早介绍计算广告系统的时候,我们介绍了DSP,也就是需求侧平台的基本功能。这个平台的一个很重要的作用就是决定到底投放哪个广告。我们介绍过的点击率预测可以提供对广告优劣的一种预测,除此之外,我们还需要一种机制,来决定如何从众多的广告中进行选取,这就是**广告的竞价排名**。
|
||||
|
||||
广告位竞价排名的出现有两个原因。第一,发布商的广告位是有限的。不管是搜索广告还是展示广告,绝大多数的发布商都以一定的比例在原生的内容,例如新闻、社交媒体内容里插入一些广告位。但是这些广告位的数目是有限的,特别是在优质的发布商资源里,就会出现一些广告位有着很大的竞争。第二,既然有竞争,那么如果引入一种竞价机制的话,势必有可能抬高广告的单价,从而让广告中间平台例如DSP,或者是发布商从中获取更高的价值。
|
||||
|
||||
今天,我们就来讲一讲广告位竞价的一个基本原理,特别是目前广泛使用的**基于第二价位的广告竞拍**。
|
||||
|
||||
## 基于第一价位的竞拍
|
||||
|
||||
在我们开始讨论基于第二价位的广告竞拍之前,我们首先来看一个更加自然的竞拍手段,**基于第一价位的竞拍**。其实,在现实生活中,基于第一价位的竞拍会显得更加普遍。
|
||||
|
||||
所谓基于第一价位的竞拍,指的是所有的投标方都定好自己的出价,然后一次性统一出价。在出价的过程中,所有的投标方都是看不见竞争对手的出价的,这保证了出价的诚实性。
|
||||
|
||||
当竞拍平台接到所有投标方的出价以后,按照出价由高到低排序,出价最高的投标方获得投标的胜利。
|
||||
|
||||
在广告系统中,如果要采用这样的形式,那么,决定最后投标顺序的不再是单纯的价格,而往往是一个投标价格和点击率的函数,最简单的函数就是**点击率乘以投标价格**。这其实也可以被认为是一种“**期望收入**”。也就是说,如果发布商或者DSP是按照广告的每一次点击来收取费用的话,那么,点击率乘以投标价格就是这种收入的一个数学期望值。
|
||||
|
||||
所以,基于第一价位竞价的广告系统,**按照广告收入的期望值**进行竞价排名。排名第一的广告被选为显示的广告。
|
||||
|
||||
这种机制在早期的互联网广告平台中曾被大量使用。但是一段时间以后,大家发现,基于第一价位竞价的竞价结果往往是“虚高”的。
|
||||
|
||||
这也很容易形象地解释,在大家都不知道对方出价的情况下,如果希望自己能在竞拍中胜出,势必就可能报出比较高的价格。另外一个方面,投标方并不清楚这个广告位的真实价值,大家只能在条件允许的情况下,尽量抬高价格来获取这个机会。
|
||||
|
||||
从某种意义上来说,这样的竞价并不利于广告商的长远发展,也打击了广告商的积极性。
|
||||
|
||||
## 基于第二价位的竞拍
|
||||
|
||||
就是在基于第一价位竞价的基础上,互联网广告界逐渐衍生出了一种新的竞拍方法——基于第二价位的竞拍。
|
||||
|
||||
当我们已经熟悉了基于第一价位的竞拍模式以后,理解基于第二价位的竞拍就比较容易了。
|
||||
|
||||
首先,和基于第一价位的竞拍模式一样,基于第二价位的模式也是**按照广告的期望收入**,也就是根据点击率和出价的乘积来进行排序。但和基于第一价位模式不一样的是,中间商或者发布商并不按照第一位的价格来收取费用,而是按照竞价排位第二位的广告商的出价来收取费用。也就是说,**虽然第一名利用自己的出价赢得了排名,但是只需要付第二名所出的价格**。
|
||||
|
||||
很多互联网广告平台采用了基于第二价位的竞拍之后,发现广告商的竞价表现整体上要比基于第一价位的时候要好。**时至今日,基于第二价位的竞拍方式已经成为了互联网广告的主流竞拍模式**。
|
||||
|
||||
那么,基于第二价位的竞拍方式究竟有什么好处呢?文末推荐一个参考文献[1],有比较详细的描述。简单来说,研究人员发现,在基于第二价位竞拍的形式下,广告商按照自己对于广告位价值的理解来竞拍是相对较优的策略。
|
||||
|
||||
在基于第二价位的竞拍方式的环境中,又有什么值得注意的技术难点呢?
|
||||
|
||||
对于广告商来说,主要是希望知道在当前出价的情况下,究竟有多大的概率赢得当前的竞拍。这也就是所谓的“**赢的概率**”,这对于广告商调整自己的出价有非常重要的指导意义。对于整个出价的概率分布的一个估计,有时候又叫作“**竞价全景观**”(Bid Landscape)预测。这是一个非常形象的说法,因为广告商希望知道整个赢的概率随着出价变化的整个分布,从而调整自己的安排。
|
||||
|
||||
这样的预测工作会用到一些简单的模型。比如,有学者认为,赢的价格服从一个“**对数正态分布**”(Log-normal)。也就是说,广告商出的价格并且最终赢得竞拍的这些价格,在取了对数的情况下,服从一个正态分布。当然,这是一个假设。但是有了这么一个假设以后,我们就可以从数据中估计这个对数正态分布的参数,从而能够对整个“竞价全景观”进行估计。
|
||||
|
||||
对于“竞价全景观”或者是赢的价格分布的估计有一个比较困难的地方,那就是,作为广告商来说,往往并不知道所有其他竞争对手的出价,以及在没有赢得竞拍的情况下,那些赢得竞拍的出价是多少。简而言之,也就是我们**只观测到了一部分数据**,那就是我们赢得这些广告位的出价。在这种只有一部分信息的情况下,所做的估计就会不准确。
|
||||
|
||||
已经有一些研究工作关注这样情况的预测。比如,论文《用截尾数据预测实时招标中的赢价》(Predicting winning price in real time bidding with censored data)[2]就利用了一种**对数几率回归**来估计那些没有赢得竞拍情况下的赢的价格,然后和已知的赢的价格一起对整个“竞价全景观”进行估计,这也算是目前的一项前沿研究。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了广告竞价系统中的基于第二价位的广告竞拍。
|
||||
|
||||
一起来回顾下要点:第一,我们讲了基于第一价位的竞价原理,就是按照广告收入的期望值进行竞价排名,排名第一的广告竞拍成功;第二,我们聊了基于第二价位的竞价原理和一些技术难点,主要是如何对整个“竞价全景观”进行估计。
|
||||
|
||||
最后,给你留一个思考题,既然竞价排名是按照点击率乘以价格,那如何避免下面这样一种情况呢?就是一些点击率比较低的广告商利用很高的价格占据广告位,从而让用户看到很多不相关的广告?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
<li>
|
||||
Jun Wang, Weinan Zhang and Shuai Yuan. Display Advertising with Real-Time Bidding (RTB) and Behavioural Targeting. Foundations and Trends® in Information Retrieval: Vol. 11: No. 4-5, pp 297-435, 2017.
|
||||
</li>
|
||||
<li>
|
||||
Wu, W. C.-H., Yeh, M.-Y., and Chen, M.-S. Predicting winning price in real time bidding with censored data. Proceedings of the 21st ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pages 1305–1314. ACM, 2015.
|
||||
</li>
|
||||
|
||||
|
71
极客时间专栏/AI技术内参/广告系统核心技术/089 | 广告的竞价策略是怎样的?.md
Normal file
71
极客时间专栏/AI技术内参/广告系统核心技术/089 | 广告的竞价策略是怎样的?.md
Normal file
@@ -0,0 +1,71 @@
|
||||
<audio id="audio" title="089 | 广告的竞价策略是怎样的?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/b9/c3/b999602efac9034ff0d75fe7b5d466c3.mp3"></audio>
|
||||
|
||||
在上一次的分享里,我们讲了广告位竞价的一个基本原理,那就是目前广泛使用的基于第二价位的广告竞拍。简单来说,基于第二价位的广告竞拍需要利用广告点击率的估计值和竞拍的价格,把所有的竞拍广告进行排序,排名第一的广告赢得竞拍。和基于第一价位的广告竞拍不一样的是,基于第二价位的广告竞拍并不直接利用排名第一的广告的出价来对其进行收费,而是利用排名第二的价位进行收费。在这样的情况下,有理论工作和实际的数据表明,基于第二价位的广告竞拍更加符合广告商对于广告位本身真实价值的判断。
|
||||
|
||||
今天我们来看在基于第二价位的广告竞拍的基础上,DSP或者广告商究竟该**如何形成自己的竞价策略**(Bidding Strategy)。
|
||||
|
||||
## 竞价策略
|
||||
|
||||
为什么需要竞价策略?其实这个问题主要是在“**实时竞价**”,或简称**RTB**的背景下来探讨的。
|
||||
|
||||
我们之前提到过,RTB是DSP目前流行的竞价模式,也就是广告商等利用计算机程序来自动对广告竞拍进行出价。从实际的运作中来看,这样的自动竞价模式要比人工竞价更加方便快捷,也更加高效。然而,在自动竞价的模式下,我们势必需要一种指导思想,来让我们的计算机程序能够随着形式的变化来进行出价。
|
||||
|
||||
那么在RTB中,竞价策略的环境究竟是怎样的呢?
|
||||
|
||||
首先,竞价的一个重要特征,就是作为一个竞标方,我们并不知道其他竞标方的点击率和出价。因此,我们**处在一个信息不完整的竞价环境中**。在这样的环境中,我们只能根据自己的点击率估计和自己的出价,以及过去出价的成功与否来对整个市场的形势进行判断。这就是在RTB中竞价策略的一大挑战和难点。
|
||||
|
||||
在这样的背景下,RTB竞价策略的研究和开发集中在以下两种思路上。
|
||||
|
||||
一种思路是**把整个竞价策略当做一种“博弈”**(Game),从而根据博弈论中的方法来对竞价环境中各个竞标方的行为和收益进行研究(比较经典的论文例如参考文献[1])。用博弈论的方法来对竞价进行研究有一个最大的特点,那就是博弈论主要是对各个竞标方行为之间的**关联性**进行建模,这种关联性包括他们之间的**收益**和他们的**动机**。
|
||||
|
||||
另外一种思路是**把整个竞价策略当做是纯粹的统计决策**,也就是直接对广告商的行为进行建模,而把整个竞价环境中的种种联系都当做是当前决策下的不确定因素(这种思路比较有代表性的论文是参考文献[2])。在这样的思路下,各个竞标方之间的行为关联变得不那么重要,而对于整个不确定性的建模则变得至关重要。
|
||||
|
||||
第一种思路,也就是利用博弈论的方法来对竞价策略进行研究主要存在于学术界。虽然从理论上来说,博弈论可能提供一种比较有说服力的解释,但是这种思路需要对整个竞价环境有非常多的假设(例如竞标方是不是理性,市场是不是充分竞争等等)。而第二种思路,仅仅需要从广告商自身的角度出发,因此在现实中,这种思路的操作性更强,从而受到工业界的青睐。
|
||||
|
||||
总的来说,第二种思路其实就是根据当前的输入信息,例如页面信息、广告信息、用户信息以及上下文信息等,学到一个**输出价格的函数**,也就是说,这个函数的输出就是在现在情况下当前广告的出价。当然,这个函数势必需要考虑各种不确定的因素。
|
||||
|
||||
## 搜索广告和展示广告的竞标
|
||||
|
||||
搜索广告和展示广告的竞标存在着不小的区别,因此,从技术上来讲,就发展出了一系列不同的方法。
|
||||
|
||||
**对于搜索广告来讲,在大多数情况下,每一个出价都是针对某一个搜索关键词的**。例如,一个汽车广告商可能会在一个搜索引擎里竞标针对自己车的品牌,如“大众汽车”、“奥迪汽车”相关的关键词,还可能竞标更加宽泛的关键词,如“买车”、“汽车”等。同时,这里的出价也往往是事先设置好的。
|
||||
|
||||
参考文献[3]是第一个利用机器学习方法对搜索广告的出价进行建模的工作。在这个工作里,每一个关键词的出价来自于一个线性函数的输出,而这个线性函数是把用户信息、关键词以及其他的页面信息当做特性,学习了一个**从特性到出价的线性关系**。这可以算是最早的利用线性函数来进行出价的例子了。
|
||||
|
||||
展示广告的竞价则面临着不同的挑战。首先,在展示广告中,场景中并不存在搜索关键词这种概念。因此,很多广告商无法针对场景事先产生出价。这也就要求RTB的提供商要能够在不同的场景中帮助广告商进行出价。
|
||||
|
||||
同时,相比于搜索广告针对**每一个关键词**的出价方式来说,针对**每一个页面显示机会**出价的挑战则更大。理论上讲,每一个页面显示机会的价格都可能有很大的不同。很多RTB都利用一种叫作**CPM的收费模式**,也就是说,一旦某一个广告位被赢得之后,对于广告商来说,这往往就意味着需要被收取费用。所以,在展示广告的情况下,如何针对当前的页面显示机会以及目前的预算剩余等等因素进行统一建模,就成为一个必不可少的步骤。
|
||||
|
||||
## 竞价策略的其他问题
|
||||
|
||||
除了我们谈论到的基本的竞价策略以外,竞价系统还有一些其他问题需要考虑。
|
||||
|
||||
比如,一个广告商现在有1千元的预算参与到RTB竞价中。从广告商的角度来说,通常希望这1千元能够比较均匀地使用到整个广告竞价中。或者说,即便不是完全均匀使用,至少也不希望这笔预算被很快用完。这里面的一个原因是,在每天的各个时段,广告的表现情况,也就是说转化率或点击率是不一样的,广告商通常希望自己的广告能够在比较好的时段进行展示。而如果广告在比较好的时段还没有来临之前就已经将预算消耗殆尽,那就会让广告商觉得整个流程不是很友好。
|
||||
|
||||
因此,在广告竞价策略中,还存在着一个叫“**预算步调**”(Budget Pacing)的技术,也就是希望能够让广告的展示相对平缓而不至于在短时间内使用完全部的预算。这势必对于广告如何出价有着直接的影响。
|
||||
|
||||
另外,对于平台而言,虽然竞价保证了一定的竞争,但是也并不是所有的展示机会都有非常充分的竞争。因此,从平台的角度来说,如何能够保证一定的收益就变得十分重要。在这样的情况下,有的平台有一种叫作“**保留价格**”(Reserved Price)的做法,用来设置一个最低的竞价价格。保留价格虽然能够来保证收益,但是也可能会让广告商觉得不划算,因此如何来设置这个保留价格,也就成为了出价策略中的一个重要组成部分。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了广告竞价的基础知识,也就是如何形成竞价策略。
|
||||
|
||||
一起来回顾下要点:第一,我们讲了RTB背景下竞价策略的两种思路;第二,我们介绍了搜索广告和展示广告竞价策略的不同之处;第三,我们简单聊了广告竞价策略的一些其他相关问题。
|
||||
|
||||
最后,给你留一个思考题,你觉得如何评价一个广告竞价策略的好坏呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
<li>
|
||||
Ramakrishna Gummadi, Peter Key and Alexandre Proutiere. **Repeated auctions under budget constraints: Optimal bidding strategies and equilibria**. In Eighth Workshop on Ad Auctions, 2012.
|
||||
</li>
|
||||
<li>
|
||||
Yuan, S., Wang, J., and Zhao, X. **Real-time bidding for online advertising: measurement and analysis**. Proceedings of the Seventh International Workshop on Data Mining for Online Advertising, page 3. ACM, 2013.
|
||||
</li>
|
||||
<li>
|
||||
Andrei Broder, Evgeniy Gabrilovich, Vanja Josifovski, George Mavromatis, and Alex Smola. **Bid generation for advanced match in sponsored search**. Proceedings of the fourth ACM international conference on Web search and data mining (WSDM '11). ACM, New York, NY, USA, 515-524, 2011.
|
||||
</li>
|
||||
|
||||
|
67
极客时间专栏/AI技术内参/广告系统核心技术/090 | 如何优化广告的竞价策略?.md
Normal file
67
极客时间专栏/AI技术内参/广告系统核心技术/090 | 如何优化广告的竞价策略?.md
Normal file
@@ -0,0 +1,67 @@
|
||||
<audio id="audio" title="090 | 如何优化广告的竞价策略?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/17/33/1701c8b27fe780652f75fa199df9a133.mp3"></audio>
|
||||
|
||||
广告的竞价排名是计算广告系统中非常重要的一个话题,我们介绍了目前广泛使用的基于第二价位的广告竞拍,以及在此基础上,DSP或者广告商究竟该如何形成自己的竞价策略(Bidding Strategy)。
|
||||
|
||||
今天,我们就来看一些**具体的广告竞价策略方法**。
|
||||
|
||||
## 单个广告推广计划优化
|
||||
|
||||
我们首先来看单个广告“推广计划”(Campaign)的竞价策略的优化。
|
||||
|
||||
在上一次的分享里我们介绍了,利用统计决策的一个重要假设就是最终的出价是一个各种输入(例如环境、用户、页面等)的函数输出。这里我们采用一个简化的假设,认为一个推广计划的出价是点击率的一个函数。在这样的情况下,我们先来理清一些概念。
|
||||
|
||||
第一个概念是“**赢的概率**”(Winning Probability)。这里面,如果我们知道现在市场的一个价格分布以及我们的出价。那么,赢的概率就是一个已知概率密度函数求概率的计算,也就是通常情况下的一个积分计算。
|
||||
|
||||
第二个概念就是“**效用**”(Utility)。这是一个广告商关注的指标,通常情况下是点击率的某种函数,比如利润,那就是每一次点击后的价值减去成本。
|
||||
|
||||
在这种情况下的成本其实主要就是**出价后产生的交易价格**。如果是基于第一价位的竞价,那么这个成本就是出价;如果是基于第二价位的竞价,这个成本就是超过第二价位多少还能赢得竞价的价格。
|
||||
|
||||
最后还有一点需要说明,那就是所有的广告推广计划都必须要在预算内,这是一个很明显的限制条件。
|
||||
|
||||
理清了这些基本的概念和限制条件以后,我们来看一看最一般的竞价策略。为了方便讨论,我们先假设不需要考虑预算,同时也假设,我们竞价的核心是所谓的“**按照价值**”的竞价。那么,在这种情况下,**最优的策略其实就是按照点击率乘以点击后产生的价值来进行出价**。可以说,这种策略其实是业界接纳程度最好、也是最直观的一种竞价策略。
|
||||
|
||||
然而,在有了预算和当前的交易流量信息的情况下,这种竞价策略就并不是最优的策略了。为什么呢?因为在有了这些限制条件的情况下,我们是否还会按照自己客观认为的广告价值来竞标就成了一个疑问。
|
||||
|
||||
那么,如何来应对预算和交易流量的限制呢?有没有什么优化方法? 我就结合几篇论文来跟你聊聊这个问题。
|
||||
|
||||
有一篇文章题目是《目标在线广告中的出价优化和库存评分》(Bid Optimizing And Inventory Scoring in Targeted Online Advertising)[1],这篇文章提供了一种简单的思路来应对预算和交易流量的限制优化问题。
|
||||
|
||||
具体来说,与其完全按照广告的价值来进行出价,不如采用这个价值乘以某个系数,而利用这个系数来动态调整目前的出价。由于是在一个已知的可能出价前面乘以一个系数,所以整个出价策略其实是一种线性变换,因此也被叫作是**线性出价策略**。
|
||||
|
||||
线性出价策略在实际操作中比较方便灵活,在这篇论文中,这种算法也取得了比较好的效果。不过遗憾的是,这种做法并没有太多的理论支持。
|
||||
|
||||
相比之下,另外的两个研究工作([2]和[3])则提供了一种比较通用的理论框架,可以用于不同的效用函数和损失函数。在这里,我们不展开讲这个通用框架的细节,重点介绍它的核心思路。
|
||||
|
||||
这个框架的整体思路是把寻找最优出价,或者说是竞价函数的过程表达成为一个“**有限制的最优化问题**”(Constrained Optimization)。最优化的优化目标,自然就是当前竞价流量下的收益。而最优化的限制条件,就是竞价流量下的成本要等于预算。也就是说,在我们期望达到预算的情况下,我们需要尽可能地扩大收益,这就是最优化目标的最大化这个意思。而限制条件决定了这个最大化问题的解的空间,因此,那些不符合条件的解就可以不考虑了。
|
||||
|
||||
一旦我们的问题可以用有限制的最优化问题来表达以后,整个问题的求解就变得相对比较规范化了。对于这类问题有一个标准的求解过程,就是利用“拉格朗日乘数法”,把“有限制的优化问题”转换成为“无限制的优化问题”,然后针对最后的目标函数,求导并置零从而推导出最优解的结果。这一部分的步骤是标准的高等数学微积分的内容。
|
||||
|
||||
这个框架最后推导出了基于第一价位和基于第二价位的最优的出价函数形式。在两种情况下,最优的出价函数都是一个基于点击率、当前竞价流量和预算的非线性函数。那么,从这个框架来看,刚才我们提到的线性竞价策略就并不是最优的。
|
||||
|
||||
## 多个广告推广计划优化
|
||||
|
||||
了解了单个广告推广计划的优化后,很自然地,多个广告推广计划的优化也是一个很重要的话题。在这方面比较经典的论文,推荐你读一读《展示广告的统计套利挖掘》(Statistical Arbitrage Mining for Display Advertising)[4]。
|
||||
|
||||
从基本的思路上来讲,我们需要做的是把刚才的**基于单个广告推广计划的有限制优化问题给扩展到多个广告推广计划上去**。除了满足各种限制条件以外(比如需要满足总的预算要求),论文也提出了一种基于风险控制的思路,来计算每一个广告推广计划的均值和方差,从而限制方差的大小来降低风险。比较遗憾的是,论文提出的优化是一个基于EM算法的过程,也就是说相对于单个广告推广计划来说,多个广告推广计划找到的解可能并不是全局的最优解。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了广告竞价的一些具体的竞价策略。
|
||||
|
||||
一起来回顾下要点:第一,广告竞价会有预算和交易流量的限制问题,我们介绍了单个广告推广计划的两种思路,分别是“线性出价策略”和转化为“有限制的最优化问题”;第二,我们简单聊了多个广告推广计划的思路,简单介绍了论文提出的一种基于风险控制的思路。
|
||||
|
||||
最后,给你留一个思考题,在广告竞价策略的诸多框架中,都基本假定我们知道了广告的点击率,这样的假设有没有问题呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
1. Perlich, C., Dalessandro, B., Hook, R., Stitelman, O., Raeder, T., and Provost, F. **Bid Optimizing And Inventory Scoring in Targeted Online Advertising**. Proceedings of the 18th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pages 804–812. ACM, 2012.
|
||||
|
||||
2. Zhang, W., Yuan, S., and Wang, J. **Optimal Real-Time Bidding for Display Advertising**. Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining, pages 1077–1086. ACM, 2014.
|
||||
|
||||
3. Zhang, W., Ren, K., and Wang, J. **Optimal Real-time Bidding Frameworks Discussion**. arXiv preprint arXiv:1602.01007, 2016.
|
||||
|
||||
4. Zhang, W. and Wang, J. **Statistical Arbitrage Mining for Display Advertising**. Proceedings of the 21th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pages 1465–1474. ACM, 2015.
|
||||
|
||||
|
53
极客时间专栏/AI技术内参/广告系统核心技术/091 | 如何控制广告预算?.md
Normal file
53
极客时间专栏/AI技术内参/广告系统核心技术/091 | 如何控制广告预算?.md
Normal file
@@ -0,0 +1,53 @@
|
||||
<audio id="audio" title="091 | 如何控制广告预算?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/3a/95/3a07cb71839e7722cecfcf19b1cbd495.mp3"></audio>
|
||||
|
||||
我们在前面的一系列分享里讲了广告位竞价的基本原理,那就是目前广泛使用的基于第二价位的广告竞拍。也分享了广告的竞价策略,以及具体的竞价策略优化方法,比如单个广告推广计划的优化等。
|
||||
|
||||
今天,我们来看在广告竞价策略中一个比较重要的问题,这个问题我们在前一篇的分享里也提到过,那就是如何能够比较流畅地利用广告商的预算,而不是把广告商的钱一下子都花完。
|
||||
|
||||
## 预算步调优化
|
||||
|
||||
控制广告预算的第一种方法是**预算步调优化**(Budget Pacing),这个方法的目的就是在某一个时间段里均匀地分配广告商的预算。同时,在每一个时段,发布商所面临的受众都有可能不太一样,所以,对于广告商而言,比较理想的状态是一个广告可以在一天的不同时段被不同的受众所看到,从而达到扩大受众面的目的。
|
||||
|
||||
预算步调优化有两种比较常见的思路,一种叫“**节流**”(Throttling),一种叫“**修改出价**”。
|
||||
|
||||
节流这种方法主要是把单位时间的支出或者是成本给控制在某一个速率内,使得预算能够被均匀地使用。这种方法往往是在我们已经介绍过的竞价模型之外运行。修改出价这个思路很直观,也就是直接修改我们的竞价,从而带来预算均匀化的结果。
|
||||
|
||||
关于节流思路,有一种做法[1]是把如何节流当做一种**“线性优化”问题**,并且是**有限制的最大化问题**。具体来说,对于每一个出价的请求,我们都可以做一个二元的决定,决定我们是否接受这个出价请求。当然,对于每一个出价请求,这里都有一个价值和一个成本。根据对不同出价请求的设置,我们来做优化,从而能够最大化总价值。但同时,我们需要遵守一个限制,总的成本不能超过预算。这其实就是在两种目标之间实现一个均衡,简言之,我们需要在不超过总预算的情况下达到总价值的最大化。
|
||||
|
||||
虽然这种算法本身能够通过我们之前介绍过的“拉格朗日乘数法”来求解,但是还存在一个根本的问题,那就是这种算法并不能**实时地**对整个竞价的安排进行计算和更新。因为,这种线性优化方法一般都是在线下计算好了以后再到线上运行。很明显,这种方法并不适合快速变化的竞价环境。因此,也就有一些工作[2]和[3],尝试通过节流,或者更确切地说,通过**在线优化**来控制预算的使用情况。
|
||||
|
||||
对竞价直接进行修改的相关工作也很多[4]和[5],这个思路是把**控制理论**中的一些思想借鉴到了对竞价的直接优化上,目标是让广告商的预算能够平滑使用。这里面的控制是指什么呢?主要是指我们引入一个新的模块在DSP中,从而能够**实时监测各种指标**,例如竞价赢的比率、点击率等,然后利用这些数据作为一个参考点,从而能够形成一种**回馈信息**以供控制系统来对出价进行实时的调整。
|
||||
|
||||
和节流的思想相对比,利用控制理论对出价进行直接优化这种思路明显要更加灵活。然而在实际的工作中,更加灵活的框架依赖于对点击率以及竞价全景观的准确预测,这其实是很困难的。在真实的情况下,利用节流的思想,也就是不去修改出价,只是在其基础上直接进行操作,则往往来得简单有效。
|
||||
|
||||
## 频率上限
|
||||
|
||||
在工业界,还有一种经常会使用的控制预算的方法叫“**频率上限**”(Frequency Cap)。简单来说,这种策略就是**限制某一个或者某一种广告在某一种媒介上一段时间内出现的次数**。比如,是否限制一个肯德基的广告在半天之内让同一个用户看见的次数?5次、10次还是20次?
|
||||
|
||||
为什么要限制频率呢?一个因素当然是我们希望广告的预算不要在短时间内消耗完。另外,短时间内反复观看某一个广告,很可能会让用户对某一个广告或者广告商产生厌烦情绪,那么广告的有效度就会降低。这对于一些广告商来说,其实是消耗了一些资源。因此,限制广告的投放是一种策略选择,从而让广告的投放花钱少、效率高。
|
||||
|
||||
这种频率上限的做法在工业界非常普遍,不过比较遗憾的是,关于这样做究竟是不是有很大的效果,用户多次看到广告是否会真正产生非常大的厌烦情绪从而使得广告效果降低,有没有理论支持等问题,目前还没有比较好的研究来解决。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了广告竞价中的预算步调优化和频率上限两个思路。
|
||||
|
||||
一起来回顾下要点:第一,预算步调优化有两种常见思路,分别是“节流”和“修改出价”;第二,频率上限是一种工业界常用的方法,但是目前这方面缺乏理论依据。
|
||||
|
||||
最后,给你留一个思考题:今天我们介绍了使用节流的方法来控制预算,其中一种方法是线性优化,需要在预算允许的情况下最大化广告的价值。那么,对于广告商来说,如何衡量广告的价值?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
1. Lee, K.-C., Jalali, A., and Dasdan, A. **Real Time Bid Optimization with Smooth Budget Delivery in Online Advertising**. Proceedings of the Seventh International Workshop on Data Mining for Online Advertising, page 1. ACM, 2013.
|
||||
|
||||
2. Xu, J., Lee, K.-c., Li, W., Qi, H., and Lu, Q. **Smart Pacing for Effective Online Ad Campaign Optimization**. Proceedings of the 21st ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pages 2217–2226. ACM, 2015.
|
||||
|
||||
3. Agarwal, D., Ghosh, S., Wei, K., and You, S. **Budget Pacing for Targeted Online Advertisements at Linkedin**. Proceedings of the 20th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pages 1613–1619. ACM, 2014.
|
||||
|
||||
4. Chen, Y., Berkhin, P., Anderson, B., and Devanur, N. R. **Real-time Bidding Algorithms for Performance-based Display Ad Allocation**. Proceedings of the 17th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pages 1307–1315. ACM, 2011.
|
||||
|
||||
5. Zhang, W., Rong, Y., Wang, J., Zhu, T., and Wang, X. **Feedback Control of Real-time Display Advertising**. Proceedings of the Ninth ACM International Conference on Web Search and Data Mining, pages 407–416. ACM, 2016.
|
||||
|
||||
|
63
极客时间专栏/AI技术内参/广告系统核心技术/092 | 如何设置广告竞价的底价?.md
Normal file
63
极客时间专栏/AI技术内参/广告系统核心技术/092 | 如何设置广告竞价的底价?.md
Normal file
@@ -0,0 +1,63 @@
|
||||
<audio id="audio" title="092 | 如何设置广告竞价的底价?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/0f/c1/0fa77422446247f5b7426f0d031555c1.mp3"></audio>
|
||||
|
||||
在互联网广告生态系统的环境中,我们已经分享了不少关于点击率优化和竞价排名以及如何优化出价的内容,相信你对于广告的整体运作以及其中的核心算法都有了一定的了解。
|
||||
|
||||
我们首先来简单回顾一下,发布商和广告商或者DSP之间的关系。发布商,往往是类似于新闻网站、社交媒体网站和视频网站这样的内容提供方。这些网站的一个特点就是他们本身并不产生收益,甚至往往是免费提供服务。因为流量巨大,这些内容提供方希望能够通过在自身的网站上发布广告从而获得巨额收益。对于广告商和DSP来说,则是希望能够利用发布商的巨大流量来接触更多的用户从而推销自己的服务和产品。
|
||||
|
||||
我们之前的很多讨论,其实重点都放到了需求侧平台,也就是常说的DSP方面,包括点击率预估和很多调整竞价排名的方法等等。今天,我们就来看一个**发布商**在广告竞价流程中可以参与调优的地方,那就是广告竞价中的底价优化。
|
||||
|
||||
## 底价
|
||||
|
||||
底价,顾名思义,就是在广告的竞价中给竞拍设定一个最低价。
|
||||
|
||||
为什么需要这么做呢?其实在理想的状态下,一个充分竞争的,并且有着充分广告源的市场,广告的单价应该是逐渐升高的。因为广告位资源毕竟是有限的,在有充分广告源的情况下,所有的广告商为了竞争这些有限的广告位,必定是会逐渐抬高广告位的价格。而作为内容发布商,在这个过程中则可以享受到逐渐升高的广告位价值。
|
||||
|
||||
然而,在现实中的很多情况下,这种理想状态的竞争态势并不完全存在。比如,对于一个新闻内容提供商来说,在新闻首页顶端出现的广告位一般更能吸引眼球,这种广告位常常可以引起充分竞争,但是在新闻页面下方的广告位则很有可能无法带来充分竞争,因为这些广告位的点击率可能只有顶端广告位点击率的十分之一甚至更少。那么,对于那些无法带来充分竞争的广告位,内容发布商就有可能无法收取理想状态下的收益,甚至在一些比较极端的情况下,会以非常便宜的价格给予广告商。
|
||||
|
||||
也就是说,**在真实的广告竞争市场中,很多时候广告位都无法得到充分竞争**。除了我们刚才所说的因为广告位的位置所导致的不充分竞争以外,同一广告位在一天中的不同时段的竞争程度也是不尽相同的。另外,在搜索广告中,不同的搜索关键词也会有不同的竞争情况。
|
||||
|
||||
综合这些原因,对于内容发布商来说,如何保护自己的广告位价值并且保证最低收益呢?一种方法就是设置一个广告竞价的最低价格,也就是我们这里所说的**底价**。当我们设置了底价以后,所有的广告竞价都不会低于这个价格,也就人为地抬高了广告位的竞争水准。
|
||||
|
||||
既然这是一种保护广告位价值的简单做法,那么会不会带来一些其他的问题呢?答案是,当然会。一个重要的因素就是,这个底价设置得太高,会打击广告商的积极性,进一步影响广告位的竞争,从而让整个市场变得竞争不足拉低价格。而如果这个底价设置得太低,则没有起到实际的作用,广告商仍然可以利用较低的价格获得广告位,而内容发布商可能也没有获得足够的收益。
|
||||
|
||||
## 底价优化
|
||||
|
||||
在了解了这些关于底价的背景知识以后,我们来思考一下该**如何设置底价**。
|
||||
|
||||
在一个基于第二价位的竞价系统中,底价存在三种情况,这些情况的不同会导致发布商有不同的收益。
|
||||
|
||||
第一种情况,底价高于竞价的最高价。很明显,这个时候发布商没有收益,因为所有其他的出价都低于底价,也就是说底价过高。在实际的操作中,这一次广告位请求可能会被重新拍卖(Re-Sell)。
|
||||
|
||||
第二种情况,底价高于第二价位。因为是基于第二价位的竞价,所以已经用第一价位获取了广告位的广告商,这个时候就需要支付底价,而不是原本的第二价位的价格。这种情况下,发布商就获取了额外的收益。这个额外的收益就是底价减去之前原本的第二价位。
|
||||
|
||||
第三种情况,底价低于第二价位。同理,因为是基于第二价位的竞价,所以这个时候的底价并没有影响原本的第二价位,因此发布商的收益没有变化。
|
||||
|
||||
我们讨论了这三种情况以后,就会发现,对于发布商来说,在绝大部分情况下,第二种情况是最理想的,因为这种时候会有额外的收益。那么,如何学习到这个底价就成为了一个挑战。
|
||||
|
||||
这里面发布商面临的一个困难是,广告商在提交出价的时候,发布商往往是不知道这个出价的。因此,发布商需要去“猜”所有出价的分布,这无疑是一件非常困难的任务。
|
||||
|
||||
在比较早期的研究中[1],研究者们借用了“**最优化竞拍理论**”(Optimal Auction Theory)来研究究竟该如何设置这个出价。
|
||||
|
||||
最优化竞拍理论其实假设了发布商知道**出价的一个概率密度函数**,再进一步假设这个密度函数是服从“对数正态”(Log-Normal)分布的,然后推导出了一个最佳的底价。在有了这个假设之后,就可以利用最佳的底价对广告的竞价进行管理,最终在实验中显示,对于某一些广告,发布商的收益增加了10%以上。
|
||||
|
||||
一个更加近期的研究[2]则指出,在实时竞价(RTB)的很多场景中,出价的分布未必是对数正态分布,整个竞价的环境中也有很多并不符合最优化竞拍理论的情况,比如广告商出价未必是按照心中的价值出价,而是为了赢得更多的广告位。
|
||||
|
||||
在这项研究中,作者们提出了一种非常直观的**类似于决策树的策略**,然后研究了在不同情况下发布商策略的不同所带来收益的区别。总体说来,发布商可以采用这样一种策略来调整底价:当发现底价低于最高的出价时,保持或者提高底价;当发现底价高于最高出价时,降级底价。在这种策略的指导下,发布商能够达到一种最佳的收益。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了广告竞价中底价的设置。
|
||||
|
||||
一起来回顾下要点:第一,在真实的广告竞争市场中,很多时候广告位都无法得到充分竞争,为了保证发布商的最佳收益,需要给竞拍设置一个最低价,也就是底价;第二,如何设置底价是一个很困难的任务,以往的研究给我们提供了两种策略可以借鉴,分别是最优化竞拍理论和类似于决策树的策略。
|
||||
|
||||
最后,给你留一个思考题,我们应该对所有广告位设置统一的底价吗?还是不同的广告位有不同的底价呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
1. Ostrovsky, M. and Schwarz, M. **Reserve Prices in Internet Advertising Auctions: A Field Experiment**. Search, pages 1–18, 2009.
|
||||
|
||||
2. Yuan, S., Wang, J., Chen, B., Mason, P., and Seljan, S. **An Empirical Study of Reserve Price Optimisation in Real-Time Bidding**. Proceedings of the 20th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pages 1897–1906. ACM, 2014.
|
||||
|
||||
|
59
极客时间专栏/AI技术内参/广告系统核心技术/093 | 聊一聊“程序化直接购买”和“广告期货”.md
Normal file
59
极客时间专栏/AI技术内参/广告系统核心技术/093 | 聊一聊“程序化直接购买”和“广告期货”.md
Normal file
@@ -0,0 +1,59 @@
|
||||
<audio id="audio" title="093 | 聊一聊“程序化直接购买”和“广告期货”" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/fb/69/fbff0fbafb45b6dcab58c1cec95fe669.mp3"></audio>
|
||||
|
||||
在周一的分享里,我们讨论了内容发布商优化自己收益策略的**底价方案**。如果能够把这种底价方案运用得当,就可以增加市场的竞争程度,从而人为地抬高竞价,达到增加收益的目的。
|
||||
|
||||
今天,我们来看关于计算广告竞价的另外两个话题:一个是程序化直接购买,另一个是广告期货。
|
||||
|
||||
## 程序化直接购买
|
||||
|
||||
程序化直接购买(Programmatic Direct)是指广告商不通过竞价的方式获取发布商的广告位。这往往意味着广告商需要和发布商**直接签订合同来购买一定量的展示机会**(Impression)。
|
||||
|
||||
在互联网的早期,其实有很多广告合同是通过直接购买的方式进行的。这一类合同的签订通常是经过相对比较传统的模式,也就是由公司的销售人员直接进行接洽。
|
||||
|
||||
直接购买的广告合作合同往往是比较大的。例如,可口可乐公司需要在雅虎主页显示一类新饮料的广告。这种广告要求涵盖的人群广,并且时间也比较长。如果按照竞标的方式,这可能是要竞标上百万次甚至上千万次的展示机会。在这样的情况下,对于广告商和发布商来说,比较快捷的方式反而可能是一次性购买下这些展示机会。
|
||||
|
||||
以雅虎为例,在很长的一段时间里,广告的销售都是分为“有保证的销售”和“无保证的销售”。后者类似于今天的RTB市场,而前者就是我们现在所说的直接购买。
|
||||
|
||||
时至今日,对于顶级的内容发布商来说,大家依然喜欢把最优价值的一些广告位,比如较好的位置或者尺寸较大的广告,留下来当做“独家”(Premium)广告位用于直接购买的合同。而近些年,如何使用程序让直接购买更加便捷就成为了很多广告中间平台的一个重要任务。
|
||||
|
||||
那么,对于内容发布商或者SSP(供应侧平台)来说,需要做什么事情来推动程序化直接购买呢?
|
||||
|
||||
首先,内容发布商需要预估未来一段时间内展示机会的数量。例如,在下一个小时内,一共有多少展示机会。这种预估其实就是网站或者服务对流量的估计。然后,把这些预估的展示机会分为两个部分,一部分送入RTB,用于我们之前介绍过的广告竞价排名,而另一部分则用于程序化直接购买。
|
||||
|
||||
和传统的直接购买不同的是,这时候的直接购买是程序化的,因此并不需要广告商和发布商之间直接建立联系,而是通过平台进行交易。从某种意义上来说,这种交易和股票交易十分类似。通常情况下,平台显示的是对这一批展示机会的一个统一价格。广告商以及DSP(需求侧平台)可以根据自己的需要直接购买这个统一价格的展示机会。一般来说,这种购买可以提前几个星期甚至几个月。
|
||||
|
||||
一旦直接购买和通过竞价排名的方式都程序化以后,对于广告商来说,他们愿意提前直接购买广告位,因为这样购买的广告位价值低于他们的一个心理价位。而对于发布商来说,就需要权衡这两种渠道之间的收益平衡,其实在某种情况下,特别是市场竞争不完全的情况下,这也是发布商希望确保一定收益的方法,也就是在有一定折扣的情况下卖掉广告位。
|
||||
|
||||
在程序化直接购买方面进行研究的相关论文非常稀少[1],一个原因是这种技术的探讨往往需要比较高级的广告系统作为支撑。
|
||||
|
||||
## 广告的期权
|
||||
|
||||
到现在为止,我们已经讨论了广告的竞价排名以及程序化直接购买等话题,你是不是已经慢慢感受到,广告生态系统的构架和我们熟悉的另外一个领域的很多概念有着千丝万缕的联系。对,这个领域就是金融系统,特别是股票或者大宗商品的交易。
|
||||
|
||||
这里面的联系其实是非常直观的。第一,广告和股票交易一样,都有大量的交易机会。这就需要出现第三方系统和平台,对于股票来说是股票交易所,而对于广告来说则是广告的DSP和SSP。第二,广告和股票交易一样,价值和价格都有可能因为交易带来瞬息万变的差别,因此越来越多的金融工具被制造出来,来为这个生态系统中的种种角色进行风险控制。
|
||||
|
||||
比如对于RTB来说,虽然这种机制为广告商和发布商创造了一种交易的模式,但是这种模式中,基于第二价位的竞价让广告商无法对最终的成交价进行有效控制;而且对于发布商而言,对于利润的把握也有一定的风险;同时广告商和发布商之间也谈不上什么“忠诚度”,因为相同的广告位还有可能在其他的发布商那里找到。在这种情况下,**“期权”(Option)这种金融工具就被介绍到了计算广告的环境中**。
|
||||
|
||||
最近一段时间以来,已经有了一些零星的研究工作讨论**广告期权的理论和应用**([2]和[3])。当前,很多发布商是这么设置广告期权的。发布商设置一个未来某个时间点的某个或某些广告展示机会的一个提前价格。这个价格并不是展示机会的实际价格,而是一个权利。对于广告商来说,可以购买这个权利,用于得到未来的这个展示机会。当然,广告商在未来并不一定购买这个展示机会,也可以放弃这个权利。
|
||||
|
||||
对于广告商来说,如何参与竞拍,如何在最佳的时机去购买期权,就变成了一个**复杂的优化问题**。当下关于这方面的很多研究,都借用了金融领域的一些模型和算法。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了在线计算广告的另外两个重要话题:程序化直接购买和广告期权。到此为止,我们就完整地介绍了DSP和SSP中所有有关出价和竞价的话题。
|
||||
|
||||
一起来回顾下要点:第一,我们从广告的历史发展中介绍了程序化直接购买的意义;第二,我们简单聊了聊广告期权存在的目的。
|
||||
|
||||
最后,给你留一个思考题,对于一个DSP来说,能不能通过直接购买获得大量的展示机会,然后又通过RTB竞价排名把这些机会卖出去,这样做的风险是什么?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
1. Chen, B., Yuan, S., and Wang, J. **A dynamic pricing model for unifying programmatic guarantee and real-time bidding in display advertising**. In Proceedings of the Eighth International Workshop on Data Mining for Online Advertising, pages 1:1–1:9. ACM, 2014.
|
||||
|
||||
2. Chen, B., Wang, J., Cox, I. J., and Kankanhalli, M. S. **Multi-keyword multi-click advertisement option contracts for sponsored search**. ACM Transactions on Intelligent Systems and Technology (TIST), 7(1):5, 2015.
|
||||
|
||||
3. Chen, B. and Wang, J. **A lattice framework for pricing display advertisement options with the stochastic volatility underlying model**. Electronic Commerce Research and Applications, 14(6):465–479, 2015.
|
||||
|
||||
|
65
极客时间专栏/AI技术内参/广告系统核心技术/094 | 归因模型:如何来衡量广告的有效性.md
Normal file
65
极客时间专栏/AI技术内参/广告系统核心技术/094 | 归因模型:如何来衡量广告的有效性.md
Normal file
@@ -0,0 +1,65 @@
|
||||
<audio id="audio" title="094 | 归因模型:如何来衡量广告的有效性" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/fa/56/fa1e93a8aa6c74dd4543faaf95ec2056.mp3"></audio>
|
||||
|
||||
在互联网广告生态系统的环境中,我们已经分享了不少关于点击率优化和竞价排名以及如何优化出价的内容。接下来我们开始讨论一些计算广告相关的高级话题。之所以说这些是高级话题,是因为作为机器学习在计算广告的应用,这些话题往往都比较偏冷,但在现实中又特别有实用价值。
|
||||
|
||||
今天我们先来聊一聊归因模型,这种技术在计算广告业中被广泛使用。
|
||||
|
||||
## 什么是归因模型
|
||||
|
||||
**归因模型(Attribution Model)是一种计算广告中分配“贡献”的机制**。
|
||||
|
||||
在现代网站或者应用中,每一个用户都有可能在每一次会话中看到多个不同的广告,或者在多个不同的会话中看到相同广告的不同展示。那么,当用户点击了某个广告,或者是当用户转化以后,比如购买了某个商品或是订阅了某种服务,广告商通常希望知道究竟是哪一个广告起了更大的作用。也就是说,广告商想知道用户接收到的不同广告对这个最后的转化事件都起了什么作用,这个问题就是归因模型研究的核心。
|
||||
|
||||
归因模型之所以重要,是因为这里面牵涉到了**广告有效性**这个话题。那么,如何来衡量广告的有效性呢?
|
||||
|
||||
衡量广告的有效性,就需要利用归因模型,针对每一个转化来分配“贡献”。这样,对于广告商来说,就可以通过**贡献值的叠加**来看某一个渠道或者某一个内容发布平台的转化效果。
|
||||
|
||||
然而,归因模型的难点在于,这里面并没有完全的“基本事实”(Ground Truth),全部都基于一定的假设。同时,归因模型直接关系到广告是否有效的计算,也就关系到我们能否推行一个“公平”的市场,以及能否防止其他的广告商在整个平台上进行博弈。
|
||||
|
||||
那么,现在各个平台普遍都在使用的是什么样的归因模型呢?下面我给你介绍几个最基本的归因模型。当然了,说这些方法是模型其实也是不够准确的,因为这些方法大多没有理论支撑,主要是基于经验或者基于传统的方法。
|
||||
|
||||
第一种经验方法叫“**最后触碰**”(Last Touch)。
|
||||
|
||||
顾名思义,最后触碰指的就是**在转化前的最后一个广告拿走100%的贡献值**。这是目前使用最广泛的归因方法,主要是因为它的简单直观。
|
||||
|
||||
我们之前讨论过的所有点击率或者转化率的计算都是基于这个归因方法的。一个可以去博弈“最后触碰”的方法就是让DSP(需求侧平台)把广告投放给那些已经对品牌或者服务产生兴趣的人,从而能够以较大的概率获得用户的转化。在这个过程中,广告的投放其实并没有起作用,而DSP也并没有试图去转化新用户。
|
||||
|
||||
举一个例子,如果我们已知一个用户喜欢可口可乐,并且很可能在过去购买过可口可乐,那么给这个用户展示最新的可口可乐促销广告,就很有可能让这个用户点击广告并购买了一箱促销的可乐。但是,在这个情况下,我们还可以认为,这个用户很有可能不需要看这个广告也会购买可乐,所以这个广告其实是浪费了资源。**“最后触碰”其实是鼓励了DSP采用更加保守的投放方式**。
|
||||
|
||||
既然有“最后触碰”,那肯定就有“**第一次触碰**”(First Touch)的经验方法。这种方式和“最后触碰”截然相反,那就是只要一个用户最后转化了,那么这个用户第一次看到的广告就获得了100%的贡献值。尽管用户可能在第一次看到这个广告后还看了其他的广告,但是这些其他广告都不算数了。**“第一次触碰”其实鼓励了DSP尽可能广地投放广告,把广告的投放当做品牌宣传**。
|
||||
|
||||
除了这两种比较极端但是被广泛使用的归因方法以外,还有一系列的经验方法,都算是这两种方法的某种平衡状态。比如一种叫“**线性碰触**”(Linear Touch)的方法,是给用户在转化的道路上每一个广告都赋予一样的贡献值。还有一种叫“**位置触碰**”(Position Based)的方法,其实就是“最后触碰”和“第一次触碰”的结合。另外一种经验方法“**时间递减**”(Time Decay),则是按照由远到近,对所有的广告位都给一定的贡献值。离转化事件时间越近的广告获得的贡献值越多。
|
||||
|
||||
总之,你可以看到,这些林林总总的经验方法虽然都比较直观,但是在实践中,都有可能给一些广告商利用系统进行不公平投放的机会。
|
||||
|
||||
## 基于模型的归因方法
|
||||
|
||||
下面我们来看一些具备一定理论基础的归因方法,介绍一个在这方面比较早的探索研究[1]。在这个研究里,作者们首先介绍了一种叫**Bagged Logistic Regression**的方法,这个方法根据当前广告的“触碰”信息,也就是用户看了什么广告,来预测用户是否将会转化。在这个模型里,所有的特征就是二元的用户是否观看了某个广告的信息,然后标签就是用户是否转化。通过这些二元的特征学习到的系数就表达了这个广告在这个预测模型下的贡献度。当然,作者们利用了Bagged的方法学习到所有的系数都是正的,确保能够解释这个模型的含义。
|
||||
|
||||
同时,作者们还提出了一个对归因问题的概率解法,我来介绍下这个概率解法的直观思路。某一个广告对用户转化的最后作用都来自两个部分:第一部分是这个广告对用户转化的直接作用;第二个部分是当前这个广告和另外一个广告一起作用使用户转化的概率。当然,这个第二部分的联合作用需要减去这两个广告分别单独作用于用户的情况。那么,一个广告对于用户的影响,就是这两个部分概率的加和,这其实就是考虑了一阶和二阶的关系下的归因模型。
|
||||
|
||||
知道了归因信息之后,我们还可以把这个信息利用到广告的竞价中。直白来说,就是针对有价值的渠道进行有效的出价,而对没有效果的渠道进行控制[2]。除此以外,归因信息还可以帮助广告商来分配自己的预算,把大部分的预算用在优质的渠道中来投放广告[3]。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了在线计算广告的一个高级话题:归因模型。
|
||||
|
||||
一起来回顾下要点:第一,归因模型是一种计算广告中分配贡献的机制,广泛使用的方法有最后触碰和第一次触碰等;第二,有一些有一定理论基础的归因方法,我们其实可以拓展归因信息的应用场景。
|
||||
|
||||
最后,给你留一个思考题,如何来衡量一个归因方法是否有效呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
<li>
|
||||
Shao, X. and Li, L. **Data-driven multi-touch attribution models**. Proceedings of the 17th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pages 258–264. ACM, 2011.
|
||||
</li>
|
||||
<li>
|
||||
Xu, J., Shao, X., Ma, J., Lee, K.-c., Qi, H., and Lu, Q. **Lift-based bidding in ad selection**. Proceedings of the 30th AAAI Conference on Artificial Intelligence, 2016.
|
||||
</li>
|
||||
<li>
|
||||
Geyik, S. C., Saxena, A., and Dasdan, A. **Multitouch attribution based budget allocation in online advertising**. Proceedings of 20th ACM SIGKDD Conference on Knowledge Discovery and Data Mining, pages 1–9. ACM, 2014.
|
||||
</li>
|
||||
|
||||
|
61
极客时间专栏/AI技术内参/广告系统核心技术/095 | 广告投放如何选择受众?如何扩展受众群?.md
Normal file
61
极客时间专栏/AI技术内参/广告系统核心技术/095 | 广告投放如何选择受众?如何扩展受众群?.md
Normal file
@@ -0,0 +1,61 @@
|
||||
<audio id="audio" title="095 | 广告投放如何选择受众?如何扩展受众群?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/bb/f2/bb3ec916d71d0714dd51f6f2accc16f2.mp3"></audio>
|
||||
|
||||
从上一期的分享开始,我们来讨论计算广告相关的一些高级话题。作为机器学习在计算广告的应用,这些话题往往偏冷,但在现实中又有很大的实用价值。我们首先聊了归因模型,介绍了几种经验方法和一些基于模型的归因方法,这种模型在计算广告业中举足轻重,不过也常常被人忽视。
|
||||
|
||||
今天,我们来看另外一个重要的话题,那就是如何帮助广告商扩大受众群,我们也把这种技术称为受众扩展(Audience Expansion)技术。
|
||||
|
||||
## 什么是受众
|
||||
|
||||
广告商在投放广告时有一个最根本的需求,就是希望通过广告平台接触到更多有可能被转化的受众群。所以,对于绝大多数的广告平台而言,满足广告商的这个需求就成为了一个非常重要的功能。
|
||||
|
||||
为了让广告商来选择受众,不少广告平台提供两种最基本的功能。
|
||||
|
||||
第一种方式是**搜索广告的模式**,也就是广告商可以选择**通过某个关键词或者一系列关键词**来接触到希望投放的受众。这里面其实有一个假设,那就是受众的兴趣或者意图是和关键词联系在一起的,而如果投放的广告内容和受众的兴趣以及意图相符,那么对于广告商来说,就可以假设这种情况下受众的转化率是最高的。
|
||||
|
||||
第二种就是**通过某种选择受众群的方式来让广告商自由地选择广告投放的对象**。这里,最基本的方式是通过受众的“人口”(Demographic)信息来进行投放。典型的人口信息包括年龄、性别和地域。
|
||||
|
||||
不管是采用关键词还是人口信息来进行受众选择,这些方法看似简单直观,但其实也给广告商带来了不小的挑战。
|
||||
|
||||
首先,我们来看关于搜索关键词的难点。作为一个广告商,你怎么知道所有的跟你产品或者服务相关的关键词呢?理论上说,可能会有无穷无尽的关键词可供投放。但是关键词的投放数量也和成本有着密切的关系。所以,从现实的角度来讲,肯定是无法投放所有的关键词的。
|
||||
|
||||
其次,利用人口信息来选择受众,那如何来找到比较合适的人口信息呢?这里面就有很大的挑战了。广告商可以利用一些研究结果来找到对应的人口信息从而增强广告投放的效果。然而针对很多中小广告商来说,花费很大的精力和时间去研究这些不同的人口信息和广告效果之间的关系显然是不可能的。
|
||||
|
||||
除了我们刚才所说的这两种广告商选择受众的方式以外,现在也有不少的广告平台并不需要广告商进行“显式”的受众选择。这些服务其实就是看到了这种选择带给广告商的复杂性,与其让广告商来选择,还不如让广告平台来优化。于是,有很多广告平台提供的就是“**傻瓜式**”的广告服务,广告商仅需要设置预算信息,对于人群的投放则完全由广告平台来负责。
|
||||
|
||||
## 受众扩展
|
||||
|
||||
了解了受众的选择以后,一个很现实的问题就摆在了广告平台商的面前,如何帮助广告商来扩展已经选择了的受众群体,从而能够实现受众转化的最大化呢?
|
||||
|
||||
来自LinkedIn的几位作者就探讨了在社交媒体广告中受众扩展的这个问题[1]。在LinkedIn平台上,广告商,也就是雇主,可以针对不同的群体限制条件,也就是我们所说的受众,来投放广告,以吸引潜在的雇员和候选人。广告商在投放广告的时候,可以按照雇员的职业技能(比如是否会Java,是否会机器学习等)以及一些其他的信息(例如来自哪个公司、地理位置)来选择投放的受众。这和我们之前介绍的场景一样,很明显,即便是广告商精心选择一个看似比较有效的受众,在这种情况下,其实依然有很多种其他选择的可能性。
|
||||
|
||||
在这篇文章里,作者们介绍了这么几种受众扩展的思路。
|
||||
|
||||
第一种思路是和某一个广告推广计划(Campaign)无关的。这里主要是**通过一种“类似”算法而找到类似的公司、类似的技能等等**。这种扩展的好处是可以对任何广告推广进行扩展而无需积累数据。
|
||||
|
||||
第二种思路是广告推广相关的扩展。这里其实还是利用了“类似”算法,但是在扩展的时候是根据广告商**对当前这个广告推广所选择的条件来进行选择**,这样的选择自然就会和当前的广告推广更加相关。
|
||||
|
||||
在实际操作中,LinkedIn采用了这两种思路结合的方法。先利用于推广无关的扩展方法来获取最初的一些扩展用户,尽管这部分用户可能质量不高。然后,当广告推广已经运行了一段时间以后,再针对这个广告推广的选择进行扩展,就可以找到更加高质量的扩展用户群体。
|
||||
|
||||
我们看到这些扩展方法都依赖于“**类似**”算法,这里我简单说一下这个算法的核心思想。
|
||||
|
||||
总体来说,这个算法是针对某一个实体(可以是公司、人名、地域、技能等),通过搜索的方法来返回最相关的K个其他实体。作者们把这个问题看成了一个**监督学习的问题**。其核心就是利用了一个**对数几率模型**,对相似的正例和负例进行学习。
|
||||
|
||||
那么,哪些实体是正例,哪些是负例呢?作者们把用户频繁选择放在一起投放的实体当做了正例,而把其他的实体当做负例。对于特性来说,这里广泛采用了**文本特性**,包括文本的词包表达、以及N元语法(N-gram)组成的特性。同时,这里还利用了**图相关度**来推算,比如两个公司在社交关系上的相关程度。然后,两个实体之间的**余弦相关度**也作为一种特性被包含在了模型中。
|
||||
|
||||
在线上实验的结果中,所有受众扩展的效果都比不用扩展有显著的提升。特别是在混合扩展的模式下,展示机会、点击率和总的收益都提升了10%以上。这个实验结果可以用来说明受众扩展的重要性。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了在线计算广告的另外一个高级话题:受众扩展。
|
||||
|
||||
一起来回顾下要点:第一,广告商可以通过关键词或者人口信息等方式来选择受众,不过受众选择也并不容易,有很大的挑战性;第二,我们介绍了和推广计划有关的与无关的两种受众扩展思路,以及将两种思路结合的方法,并简单介绍了两种思路都依赖的“类似”算法。
|
||||
|
||||
最后,给你留一个思考题,在什么情况下受众扩展可能会出现问题,如何来衡量这些问题?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
1. Haishan Liu, David Pardoe, Kun Liu, Manoj Thakur, Frank Cao, and Chongzhe Li. **Audience Expansion for Online Social Network Advertising**. Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD '16). ACM, New York, NY, USA, 165-174, 2016.
|
||||
|
||||
|
77
极客时间专栏/AI技术内参/广告系统核心技术/096 | 如何利用机器学习技术来检测广告欺诈?.md
Normal file
77
极客时间专栏/AI技术内参/广告系统核心技术/096 | 如何利用机器学习技术来检测广告欺诈?.md
Normal file
@@ -0,0 +1,77 @@
|
||||
<audio id="audio" title="096 | 如何利用机器学习技术来检测广告欺诈?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/d4/f0/d4d1b739df49b0ffbff28fe961835cf0.mp3"></audio>
|
||||
|
||||
在上一期的内容中,我们聊了如何帮助广告商扩大受众群这个话题,也就是受众扩展技术。受众扩展的目的是让广告商投放的广告能够接触到更广泛的受众,甚至有可能提高广告效果。
|
||||
|
||||
在计算广告高级话题的最后一篇分享,同时也是整个广告模块的最后一篇分享里,我想来聊一聊广告中一个非常棘手,同时也是一个非常实际的问题:欺诈检测(Fraud Detection)。
|
||||
|
||||
## 什么是广告欺诈
|
||||
|
||||
广告欺诈是一个多大规模的问题呢?
|
||||
|
||||
根据一个统计数字[1],到2015年的时候,就因为广告欺诈,全美的市场营销和媒体业每年的耗费约为82亿美元。这个数字中大约有56%,也就是46亿多美元的耗费来自于“**非法流量**”(Invalid Traffic)。我们把这个数字和全美每年596亿的广告支出进行对比,就可以看出这是一个惊人的数字。当然,因为各种欺诈手段层出不穷,并不是所有的欺诈都能够被甄别出来。因此,我们其实有理由相信真实的数字会更高。
|
||||
|
||||
那么,怎么来定义广告欺诈呢?什么样的行为算是广告欺诈呢?
|
||||
|
||||
我们这里主要讨论三种形式的广告欺诈。这三种广告欺诈模式其实对应着三种流行的广告计费模式。
|
||||
|
||||
第一种欺诈叫“**展示欺诈**”(Impression Fraud),也就是造假者产生虚假的竞价信息,然后把这些竞价展示放到广告交易平台上去贩卖,并且在广告商购买了这些展示后获利。
|
||||
|
||||
第二种欺诈叫“**点击欺诈**”(Click Fraud),也就是造假者在广告商产生虚假的点击行为。
|
||||
|
||||
第三种欺诈叫“**转化欺诈**”(Conversion Fraud),也就是造假者完成某种虚假的动作,例如填写表格,下载某个应用等来虚拟真实的转化事件。
|
||||
|
||||
在真实的场景中,这三种欺诈手段经常混合出现。例如点击欺诈和展示欺诈可能同时出现,这样就能在报表中展示一个看似合理的点击率。
|
||||
|
||||
## 广告欺诈的产生源
|
||||
|
||||
了解了广告欺诈的基本形式之后,我们来看一下这些欺诈产生的源头都在什么地方。因为广告产业的有利可图,产生欺诈的途径也是多种多样的,我们这里就看一些经典的形式。
|
||||
|
||||
首先,有一种欺诈来源途径叫**PPV**(Pay-Per-View)网络。
|
||||
|
||||
利用PPV进行欺诈的主要流程就是尝试通过购买流量,然后在一些合法的展示机会中插入用户肉眼看不见的0像素的标签(Tag),诱导广告商,让广告商以为产生了更多的合法流量。
|
||||
|
||||
对于这样的欺诈,一般来说,广告商必须去检测展示机会用户是不是看不见,或者是否是由0像素产生的。然后还可以采用黑名单的方式,对屡次利用PPV来进行欺诈的IP地址进行屏蔽。
|
||||
|
||||
另外一种欺诈手段是通过“**僵尸网络**”(Botnets)。
|
||||
|
||||
这种方法主要是试图直接控制用户的终端电脑或者其他的移动设备,从而进行很多方面的攻击。在过去,僵尸网络的一大应用主要是来产生拒接服务的DDoS(Distributed Denial of Service)攻击和发送垃圾信息。
|
||||
|
||||
近年来,因为其灵活性,很多僵尸网络也被用于广告欺诈。僵尸网络的一大作用就是产生浏览信息,而这些浏览的行为是宿主电脑的用户所无法得知的。因此,对付僵尸网络的一大方法,就是检测从某些IP地址或者DNS产生的流量行为是否发生了突然的根本性的变化。
|
||||
|
||||
第三类欺诈手段是“**竞者攻击**”(Competitor Attack)。
|
||||
|
||||
正常的广告商设立预算参与竞价购买广告位。而竞争对手可以利用“点击欺诈”的方式产生虚假无效的点击信息,从而消耗广告商的预算。当把竞争对手的预算消耗光以后,攻击者反而可以用比较小的成本拿到这些广告位,因为竞争减少了。
|
||||
|
||||
另外,还有一种情况是仅仅大量调入竞争对手的广告而不点击。在这样的情况下,就容易产生非常低的点击率。而很多广告平台依赖点击率来进行排序,因此,如果点击率很低,那代价就是难以赢得竞价,通过这种方式也就间接打压了竞争对手。
|
||||
|
||||
## 欺诈检测
|
||||
|
||||
了解了什么是广告欺诈以及不同的广告欺诈来源之后,我们来看一看如何利用机器学习技术,来对各种不同的欺诈行为进行检测和挖掘。
|
||||
|
||||
首先介绍一个研究[2],作者们提出了一种技术,**利用“同访问”图来分析异常的浏览行为**。这里面有一个最基本的假设:对于大多数用户来说,对两个不同的网站并不具有相同的喜好程度,除非这些网站非常流行。也就是说,对于绝大多数的网站来说,其用户群体是不一样的。
|
||||
|
||||
如果用户和这些网站的相互关系发生了变化,那可能就是出现了一些异常的情况。当然,利用图分析的方法,就是把异常发掘当成了一种无监督学习的任务,自然也就会有无标签的困难。
|
||||
|
||||
还有一个研究[3],作者们提出了一种方法,来**分析用户到底需要花多少时间来浏览显示的像素**。这个方法其实就是来检测是否是0像素的展示欺诈。作者们通过研究发现,对于50%以上的像素,绝大多数用户至少需要1~3秒时间来观看。于是,广告商或者平台就可以用这种停留时间来作为一个最基本的检测手段。
|
||||
|
||||
当然,一种最普遍的做法就是把广告欺诈当做一个**监督学习任务**。通过产生各种格样的特性以及把过去已知的欺诈数据当做训练数据来进行学习。这种做法的难点是,欺诈数据在真实世界中毕竟是少数。于是,我们就有了数据不足以及需要训练和不平衡的分类问题。正是因为存在这些问题,欺诈检测依然是一个非常前沿的研究领域。
|
||||
|
||||
## 总结
|
||||
|
||||
今天我为你介绍了在线计算广告的最后一个高级话题:欺诈检测。
|
||||
|
||||
一起来回顾下要点:第一,我们讲了三种形式的广告欺诈,分别是展示欺诈、点击欺诈和转化欺诈,在真实场景中,这三种欺诈手段经常混合出现;第二,产生欺诈的源头很多,我们简单介绍了三种不同类型的广告欺诈来源,分别是PPV网络、僵尸网络和“竞者攻击;第三,我们讨论了欺诈检测的一些基本思路,比如利用图分析、利用停留时间的方法等等。
|
||||
|
||||
最后,给你留一个思考题,如何来检测转化欺诈,也就是我们怎么知道广告转化中哪些是虚假的呢?
|
||||
|
||||
欢迎你给我留言,和我一起讨论。
|
||||
|
||||
**参考文献**
|
||||
|
||||
1. Interactive Advertising Bureau (2015). **What is an untrustworthy supply chain costing the us digital advertising industry**?
|
||||
|
||||
2. Stitelman, O., Perlich, C., Dalessandro, B., Hook, R., Raeder, T., and Provost, F. **Using co-visitation networks for detecting large scale online display advertising exchange fraud**. In Proceedings of the 19th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pages 1240–1248. ACM, 2013.
|
||||
|
||||
3. Zhang, W., Pan, Y., Zhou, T., and Wang, J. **An empirical study on display ad impression viewability measurements**. arXiv preprint arXiv:1505.05788, 2015.
|
||||
|
||||
|
60
极客时间专栏/AI技术内参/广告系统核心技术/复盘 4 | 广告系统核心技术模块.md
Normal file
60
极客时间专栏/AI技术内参/广告系统核心技术/复盘 4 | 广告系统核心技术模块.md
Normal file
@@ -0,0 +1,60 @@
|
||||
|
||||
今天我准备了 18 张知识卡,和你一起来对广告系统核心技术模块的内容做一个复盘。
|
||||
|
||||
在这个模块,我们一起学习了18篇文章,讨论了5大话题,包括广告系统架构、知名公司的广告点击率预估模型、出价系统、预算等。通过这些点,我们勾勒出了这个领域的主线。希望你能沿着这条线,去做更多探索。
|
||||
|
||||
提示:点击知识卡,可以一键到达你最想复习的那一篇文章。
|
||||
|
||||
## 广告系统架构
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/c6/47/c69f5c211f534704f697b7c8d883d247.jpg" alt="" />](https://time.geekbang.org/column/article/8601)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/b3/64/b3204838e3208e2686379e0b6b031e64.jpg" alt="" />](https://time.geekbang.org/column/article/8691)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/55/15/558051beb4226c533f4353fd26bf1815.jpg" alt="" />](https://time.geekbang.org/column/article/8913)
|
||||
|
||||
## 广告点击率预估
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/d5/4c/d5a1c2f9c6c8c5027d3dd86403017b4c.jpg" alt="" />](https://time.geekbang.org/column/article/370)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/9a/98/9a318b5d184b280076221609affd3498.jpg" alt="" />](https://time.geekbang.org/column/article/9037)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/d3/1e/d32093305580245bcf6ba35d561bac1e.jpg" alt="" />](https://time.geekbang.org/column/article/9069)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/13/0b/13c9702f628b22bc7e9d7831cf13c40b.jpg" alt="" />](https://time.geekbang.org/column/article/9264)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/10/c6/103af5b5b13282ef903533a95dc472c6.jpg" alt="" />](https://time.geekbang.org/column/article/9370)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/5c/f0/5cca8045d1379542a03194b6d622faf0.jpg" alt="" />](https://time.geekbang.org/column/article/9488)
|
||||
|
||||
## 出价系统
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/0a/d3/0a836af516a51efe8a57effacdf91ad3.jpg" alt="" />](https://time.geekbang.org/column/article/9695)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/9a/af/9a636c550f97ac07c5d3908ba4e3deaf.jpg" alt="" />](https://time.geekbang.org/column/article/9747)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/4d/33/4d66606cefcbe80b930cdb6f163bdc33.jpg" alt="" />](https://time.geekbang.org/column/article/9864)
|
||||
|
||||
## 预算
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/8c/c9/8cd334df302b194d9b199e960a60c9c9.jpg" alt="" />](https://time.geekbang.org/column/article/10029)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/7a/66/7a2d3b680773ff2ca72e46baa4aced66.jpg" alt="" />](https://time.geekbang.org/column/article/10147)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/bf/b8/bf8202e1c4ec0f739d1d4dac4980c0b8.jpg" alt="" />](https://time.geekbang.org/column/article/10182)
|
||||
|
||||
## 高级话题
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/85/7e/85df3edefbf8c41f337220054aee8a7e.jpg" alt="" />](https://time.geekbang.org/column/article/10360)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/3e/7c/3ee4555b2cd71200b18fe08fed96887c.jpg" alt="" />](https://time.geekbang.org/column/article/10599)
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/77/c4/7727caade789065737ea51c01bd90cc4.jpg" alt="" />](https://time.geekbang.org/column/article/10719)
|
||||
|
||||
## 积跬步以至千里
|
||||
|
||||
最后,恭喜你在人工智能领域的千里之行,又往前迈出了一步。
|
||||
|
||||
感谢你在专栏里的每一个留言,给了我很多思考和启发。期待能够听到你更多的声音,我们一起交流讨论。
|
||||
|
||||
|
Reference in New Issue
Block a user