竞价广告系统-广告检索

广告检索

在前面谈到合约式广告时没有讨论广告检索的问题,虽然合约式广告也有检索的问题,但合约式广告一般数量非常小,只有千的级别,不需要特别的检索技术。但在广告网络中,比如google的广告数在百万级别。广告的检索问题有其独特的地方,下面我们讨论两点。

1.     布尔表达式检索,2. 长Query,它在上下文广告时会用到。

广告投放条件过滤可以视为布尔表达式检索问题。它不同于web搜索中关键词的搜索。比如广告主投放条件可能是年龄属于第三年龄段,地区是纽约,或是地区是加州,性别是男性的用户。可以用(age∈{3}^state∈{NY})∨(state∈{CA}^gender∈{M})表示。广告定向条件的DNF是一组或的条件,即某种定向条件或是某种定向条件下,广告可以展示。DNF可以分解成Conjunction, Conjunction是按或的方式分开,并且同一定向条件在某Conjunction里只出现一次,比如上面的例子就可以分解age∈{3}^state∈{NY}和state∈{CA}^gender∈{M},这里state在两个Conjunction中就各出现了一次。Assignment是一组属性名称和值的集合{A1=v1, A2=v2, …},比如一个在加州的女性用户可能就有{gender=F, state=CA}的assignment,sizeof[Conjuction]是conjunction中∈的个数。这个是比较重要的一个定义,实际意义是一个广告的其中的定向条件个数。在上例的age∈{3}^state∈{NY}中,那么如果你的查询只有一个条件时,那么这个条件不可能满足这个定向条件,那么在检索的过程中可以借助这种方式进行一定的加速。Yahoo!的GD广告就是用的这种检索方式。

Index Boolean Expression论文中的基本思想是某查询满足conjunction,也就满足包含此conjunction的doc。索引维护两层倒排关系,Conjunction->DocId和Assignment->ConjunctionId,Conjunction->DocId是普通的倒排索引,Assigment->ConjunctionId可会考虑sizeof(Conjunction),如果sizeof(Conjunction)大于sizeof(query),则无需考虑。

Index算法

建立第一层 Index

遍历文档DNF的Conjunction,如果为新的,则分配一个新ID(从0递增),否则用之前分配的ConjunctionID;文档分配DocID(从0递增);写入conjunction到doc的倒排关系,形成第一层Index。

对于上步出现的新Conjunction,建立第二层 Index

l  将Conjunction切成Assignment流,Term为(属性, 值),例: age ∈ {3;4}切成两个Term:  (age, 3),  (age, 4);state ? {CA;NY}也切成两个Term: (state, CA),  (state, NY),?和∈体现在倒排链表上

l  计算Conjunction的size,将size体现在Term中,最终的Term的组成是(sizeof[Conjunction], 属性, 值)

l  对于size为0的Conjunction,添加一个特殊的Term:Z,∈

l  写入倒排关系, Term -> (ConjunctionID,  ∈| ?)+

布尔表达式检索-index示例

下面是描述成DNF形式的广告集合。

doc1 = (age∈{3}^state∈{NY})∨(state∈{CA}^gender∈{M})=c1∨c4

doc2 = (age∈{3}^state∈{F})∨(state?{CA;NY})=c2∨c6

doc3 = (age∈{3}^gender∈{M}^state?{CA})∨(state∈{CA}^gender∈{F})=c3∨c7

doc4 = (age∈{3;4})∨(state∈{CA}^gender∈{M})=c5∨c4

doc5 = (state?{CA;NY})∨(age∈{3;4})=c6∨c5

doc7 = (age∈{3}^state∈{NY})∨(state∈{CA}^gender∈{F})=c1∨c7

doc6 = (state?{CA;NY})∨(age∈{3}^state∈{NY})∨(state∈{CA}^gender∈{M})= c6∨c1∨c4

第一层倒排(conjunction->DocId)

c1 -> doc-1, doc-6, doc-7

c2 -> doc-2

c3 -> doc-3

c4 -> doc-1, doc-4, doc-7

c5 -> doc-4, doc-5

c6 -> doc-2, doc-5, doc-7

c7 -> doc-3, doc-6

比如c1这个conjuction在doc-1,doc-6,doc-7中都有,所以c1的posting list就是这样的,这个倒排是为了得到广告的目的,比较简单。

第二层倒排(assignment->conjunction),它首先按size进行划分,0表示size=0的conjunction组成的倒排表,它里面只有不属于的情况,1表示conjunction只有一个属于的情况。以此类推。

在检索的时候,先查看sizeof(query),即查询中有几个定向条件,仅当查询的定向条件少于广告的定向条件时,才会查找广告,否则不用查找,这样可以减少查找的工作量。

长Query

做上下文广告时会用到,从要投放的页面中提取标签,到广告集合中匹配相应的广告,标签可能有几十到上百个,但这么多的标签对搜索引擎检索是很大的挑战。但所有的关键词都是Should的关系。它们即不是AND的关系,如果是AND的关系,可能根本就检索不到广告,也不是OR的关系,OR的关系会检索出大量的文档,对后面做相关性造成很大的压力。

传统搜索引擎中需需要将所有出现过以上Term的文档都取出来,然后计算相关性并找到Top-N,在长Query和大文档集时查询速度被巨大的计算量所限制,并且最终的效果也不会很好,Top-N中N的取值如果太大会给后续计算产生很大的压力,如果N太小可能会将一些优质的广告丢弃了。

一种可选的思路是:在查找候选DOC的过程中做一个近似的评估,切掉那些理论上不需要再考虑的文档,只对进候选的文档进行相关性计算,比Top-N最小堆最小值大的插入。理论上不需要再考虑的文档是由一个相关性函数来决定,相关性函数会判断一个query和一个文档的相关程度,当相当性函数为线性时,存在有效的剪枝算法。对于相关性函数是线性这个问题,大家不要太苛求,很显然在后续计算相关性时,不一定用线性函数,比如最常用的cosine distance也不是线性函数,但如果你使用相对合理的线性评价函数,使得retrieval的过程变得很有效,那么对ranking阶段的速度是很有帮助的。所以这种思路的核心是在线性函数的限制下找到一个相对合理的相关性函数。

Weight-And(WAND)检索算法

在个人使用WAND算法中感觉WAND算法很有效,并且很有启发意义。前面提到过要定义文档和Query的相似度函数,用这个函数来进行剪枝,剪枝的目的是使得在Query很长的情况下,能够用少的TopN将优质的广告覆盖。我们用一个比较简单的函数:

公式中score就是相似度函数,d是文档,q是查询,t是查询和文档中都有的term,alpha是t的一个权重,比如IDF,w(t,d)是t和d的一个权重。

WAND算法的关键是定义了Term贡献度的上界ub(upper bound):

ub是指一个term t在所有的文档d中,贡献的最大值ub(t)。

文档相关性上界UB公式是:

利用ub和UB,可以进行大量的剪枝。

时间: 2024-10-09 17:18:43

竞价广告系统-广告检索的相关文章

大型广告系统架构 — 检索模块

广告系统主要解决一个问题:在给定展示场景.用户的情况下,返回收益最大化的广告.下图是一个广告系统最简单的架构图.其中,Router,检索模块,排序模块一般称为广告系统的核心.同时,与之辅助的至少包含三大系统:特征计算系统,计费系统,投放系统. 先介绍一下三个辅助系统的主要功能: 特征计算系统:实时计算广告展示环境 (网页,APP) 的特征,用户的特征.并提供实时查询功能. 计费系统:实时处理广告的展现 (CPM).点击 (CPC).转化 (CPA)数据,并计算广告的剩余预算.需要包括反作弊功能.

竞价广告系统-广告网络

广告网络 广告网络 (Ad Network) 在竞价机制下,主流的广告市场形态是广告网络,解释一下,广告网络在竞价机制下这个说法并不准确,因为广告网络是一个很庞杂的概念,有按CPD(按天付费)广告,还有合约式广告等等,我这里我们暂时只关注竞价机制下的广告网络. Wiki中对广告网络的定义,Connects advertisers to web sites that want to host advertisement,这是一个非常泛的定义,广告网络的主要特征有: 1. 竞价系统(Auction

[Spring cloud 一步步实现广告系统] 8. 检索系统配置&依赖

工作流程 项目依赖 <dependencies> <!-- hystrix 监控面板 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId> <version>1.2.7.RELEASE</version>

竞价广告系统-流量预测

流量预测 在前面合约式广告中提到过合约式广告中有三个基本技术,1. 受众定向,2. 点击预测,3. 流量预测.在这三个技术基础上才可以做Online Allocation,本节主要介绍流量预测. 在定向条件分的比较粗的情况下,流量预测是比较简单的,比如只对人群分了几十个类,那么只需要进行简单的统计就可以进行流量预测了.但在实际的Network中,一个广告投放的定向条件比较多(即前一节中的DNF),并且条件有或的关系,也可能有与的关系. 流量预测的方法有很多,也不乏一些fancy的做法,这里只介绍

竞价广告系统-点击率预测和逻辑回归

点击率预测和逻辑回归 点击率预测 从广告索引中我们得到很多的广告候选,这些广告从逻辑上都满足广告主的定向条件,即广告主定向条件的DNF范式,在竞价广告系统中,我们要选择一个最优的方案,最优的广告投送出来,一般最优的广告是通过eCpm进行排序,用广义第二高价进行排序,进行收费的模式.在CPC环境中eCpm=bid * ctr,那么对CTR的预测就是竞价广告系统中最重要的一个部分. 每个公司都对点击率预测有不同的做法,做法也非常多,这里只描述一下人人对这个问题的理解和看法. 广告点击预测概率模型:

互联网DSP广告系统架构及关键技术解析

互联网DSP广告系统架构及关键技术解析 宿逆 关注 1.9 2017.10.09 17:05* 字数 8206 阅读 10271评论 2喜欢 60 广告和网络游戏是互联网企业主要的盈利模式 广告是广告主通过媒体以尽可能低成本的方式与用户达成接触的商业行为.也就是说按照某种市场意图接触相应人群,影响其中潜在用户,使其选择广告主产品的几率增加,或对广告主品牌产生认同,通过长期的影响逐步形成用户对品牌的转化. 一个好的DSP系统需要满足: 拥有强大的RTB(Real-Time Bidding)的基础设

广告系统的smart pricing是什么

smart pricing这个词来源于google的Adwords系统,指的是系统能够根据流量质量对流量方的收入进行打折,为的是让广告主获得更高的ROI(投资回报率).将smart pricing的使用场景抽象化,任何一个广告系统,只要它有着各种各样不同的流量,而这些流量的效果有好有坏,那么smart pricing都有它的用武之地. 如果系统发现一个流量(网站.APP.网站或APP的某个广告位)的效果好,那么,我们不对它的收入进行打折. 如果系统发现一个流量的效果差(与大盘平均效果相比),那么

合约广告系统-在线分配问题

在线分配(Online Allocation)问题 在线分配问题 前面提到过广告是三方博弈,用户,广告主,媒体之间的博弈,而推荐系统是用户与媒体的博弈.它们之间的区别其一是广告主通媒体reach用户是有量的需求的,推荐系统是自己把内容推给用户,不见得有明显的量的需求.广告的量的需求体现在两个方面,一种是我前面提到的GD广告系统,有量的下限的需求,或者说有固定流量的需求,二是Non- Guaranteed delivery,即非合约方式,它有一种上限的限制,它受到广告预算的受限.所以在线分配问题的

合约广告系统-合约广告系统

合约广告系统 直接媒体购买 合约广告英文是Agreement-based Advertising,它是一种基于合约(Agreement)的商业模式,大家会看到它与后面的Network和Exchange有相当大的不同,我们当前最主要的是把合约广告要解决的问题理解清楚,具体的技术可以再理解. 传统的广告媒体购买方式是称之为直接媒体购买方式(Direct Media Buy),它是一种简单的购买方式,比如一个杂志可能有几个广告位,比如封二页,封底页,广告主可以直接购买这些广告位,这种方式没有任何的技术