百度关键词搜索推荐系统交互流程

如果把百度凤巢系统比作商场,那这个商场的主要商品是什么?答案就是‘流量’,而关键词,就是流量对广告主最直观的表现载体。

客户想要在百度上做搜索广告,就需要找到能够准确描述自己推广意图的关键词集合;但另一方面,目前百度凤巢系统拍卖词接近10亿,百度每天有PV关键词约数十亿。从这些词海中淘出优质关键词,无论对于客户本身,还是为客户打理账户的客服而言都是一大挑战。
此时百度关键词搜索推荐工具(KR)就显现出它的重要作用。
那KR到底是什么呢?顾名思义,KR(Keyword Recommendation缩写)就是百度向客户推荐关键词的工具。当然,KR不仅提供诸如被动,主动,按URL,按行业等推荐形式为客户推荐个性化关键词,同时还提供像种子词,种子URL,Suggestion等引导提词技术;另外KR还提供客户账户诊断优化服务,一方面优化客户账户结构,提升客户提词,账户管理效率,同时也达到提升客户消费,提升百度凤巢系统整体消费的功能。

因为该工具是提供给百度广告主使用的,所以在网络上没有直接的入口,需要再www2.baidu.com上注册帐号后,找到‘关键词工具’后进行访问。

百度关键词搜索推荐交互

以下为关键词工具使用流程:

广告主进入KR入口(www2.baidu.com)中有多个入口,此时KR会根据广告主在凤巢中的历史操作行为,为其推荐种子关键词,广告主可以直接点击种子关键词进行搜索(种子关键词主要是面向对KR使用不熟练的客户,对他们的使用进行引导,百度搜索框也没有该功能,该功能为KR独有); 之后网民可输入搜索搜索query获取和该query字面,语义相似的关键词,同时系统会返回和这些关键词相关的属性。然后用户可以对关键词进行筛选及分组(系统会提供多种分组建议)

图: 百度关键词搜索推荐系统交互示意图

同时KR也提供传统推荐的方式为广告主推荐关键词。就是根据客户历史提词行为,使用SVD,图关系挖掘等协同过滤技术直接将结果推荐给广告主,广告主无需有任何交互输入,直接进入提词页面就能看到结果。

搜索系统策略架构

百度关键词搜索推荐系统(KR)不仅提供典型的推荐服务,即不搜既得,同时也提供搜索功能,即用户输入关键词进行搜索,KR推荐出与该关键词最相关的top n 关键词, 这些关键词不仅附带有容易理解的推荐理由(表明该关键词为何推荐出来),同时附带有关键词的各种属性(例如关键词在百度上的流量,竞争激烈程度等信息),同时对关键词按照字面,语义进行聚类;推荐出来的关键词默认已按照字面,语义相关性及marketing rule进行了排序。 以下为KR搜索过程online部分的策略架构(offline部分涉及较多数据挖掘逻辑,参见之前的文章介绍)

其中最底层为各种基础数据及这些基础数据经过预处理, 清洗后的存储, 以及基于这些过程的挖掘数据。当用户发起一次请求时,系统会经历以下主要步骤:

  1. 关键词触发: 根据经典的字面进行触发以及语义, 同购关系及复杂图关系的挖掘数据,触发出推荐关键词的候选。对应到百度搜索引擎上,该步骤就是query改写变换及文档的检索。
  2. 相关性准入:考虑到后续的过滤步骤, 触发的关键词量一般需要比最终需要的关键词数量多以保证召回。此时需要对这些候选关键词进行相关性过滤。例如使用GBDT模型进行二分类: 相关 or 不相关。
  3. audit:推荐出的关键词可能涉及黄赌毒, 为避免风险, 这些关键词需在推荐时尽早过滤。搜索引擎上,也需要对一些黄赌毒反内容进行过滤。
  4. ranking:为提升KR推荐的效率, 使用提词率模型,效用模型及价值模型对剩下的候选关键词进行排序,同时需要根据应用场景对关键词进行过滤(例如用户有pv过滤需求,则需要将pv值小于阈值的关键词过滤);对应到百度上, 最重要的技术就是ctr预估及质量度。
  5. marketing rule:此处集中了人工干预的逻辑,例如: 假设某个时间段需要KR推荐该消费的关键词,此时可以在此处增加逻辑对候选关键词队列进行重排序; 或者对于某些bad case进行过滤。搜索引擎上也需要有该逻辑层, 以便最快速度对结果进行人工干预。
  6. UI:关键词的展现, 以及保存等功能,同时包含传统推荐系统的正负反馈信息收集,反馈等机制; 以及KR独有的关键词分组功能,信息筛选功能等。对应到搜索引擎上就是前端的展示。

主动推荐策略架构

KR中的主动推荐,就是传统的推荐技术在百度关键词搜索推荐中的应用。所谓主动,是针对KR而言的:关键词,广告主无需发起交互操作,KR即使用传统推荐技术: content-based, collaborative filtering及多种技术混合的hybrid filtering方法向广告主推荐结果。

以下为KR主动推荐的策略架构, 一方面KR使用网民搜索日志,点击日志,广告库数据构建item候选集合,另一方面系统收集广告主的反馈(explicit or implicit)构建user profile,之后基于这些信息使用推荐算法向客户进行推荐。如果KR中的搜索功能是即搜即得, 那么主动推荐就是不搜即得

图:百度关键词搜索推荐系统主动推荐策略架构

按网页内容进行推荐

百度凤巢广告主都有自己的推广网站(或主页),而要达到较好的推广效果,广告主应该提交与网页相关性较高的关键词,否则即使广告主因为提交了一个高PV的关键词导致来到网站的流量较高, 也会因为内容与关键词不相关而导致转化较低而得不偿失。

KR为此提供了按URL进行推荐, 即广告主在KR搜索框中输入某一个网址(例如semocean.com),则KR会抓取该网站并分析其中的主题词进行推荐, 以下为主要的策略流程。

图:KR按URL推荐策略处理流程

 

每一种KR推荐算法, 或者做一个延伸:每一个商业搜索引擎中, 都会包含以下几个模块:触发,相关性过滤,rank,marketing rule。

其中触发是根据输入,找到一个相对较大的候选集合, 之后的所有排序过滤都是针对该集合的(在学术界使用的数据;例如搜索引擎中,根据网民输入的query,进行简单的字面语义匹配后,找到潜在的候选集合作为后续处理的对,又例如在学术界使用的LTR任务的开放数据LETOR中,直接使用BM25进行校验,筛选出相关性较高的top N进行后续的ranking实验; 之后对返回的结果进行相关性过滤及排序,最后根据一些业务规则进行强制过滤及重排序,包括黄赌毒反动内容的过滤,或是某些特定的人工干预。

图:KR搜索推词逻辑

 

百度关键词工具介绍参见:http://support.baidu.com/product/fc/4.html?castk=24b18bi7062c720d0d596

协同过滤中item-based与user-based选择依据

协同过滤是大家熟知的推荐算法。 总的来说协同过滤又可以分为以下两大类:
  1. Neighborhood-based:计算相似item 或user后进行推荐
  2. Model-based: 直接训练模型预测Rating
在Neighborhoold-based算法中,又细分为user-based CF(Collaborative Filtering)和item-based CF。合适选择使用userd-based CF,什么时候item-based CF更适用就会是一个需要权衡的问题。一般而言,可以以下几个标准进行选择:
  1. Accuracy:一般而言,少数置信的邻居的推荐要比很多的没有太多区分性的邻居更加准确,所以一般我们会选择数量较少的因素(item or user)作为based的算法。 例如, amazon中的商品的种类很多,但远没有注册的用户多,所以该场景使用item-based CF比较合适; 反过来,在百度关键词推荐系统中,商业客户(user)量级是100W左右,而待推荐的关键词(item)是10亿量级,此时使用user-based会是更明智的选择。
  2. Efficiency
  3. Stability:一般情况下倾向于使用变动频率和变动量较少的因素作为based的因素, 例如item变动较少, 则选择item-based, 否则选择user-based
  4. Justifablity(说服力):推荐系统中,推荐理由越白盒,用户越容易理解就越有说服力。所以从这方面考虑,item-based CF会更有说服力,例如显示‘因为你浏览了三星 Galaxy,所以给你推荐了HTC One’的理由会比‘和你相似的用户也喜欢XXX’更有说服力,因为推荐系统是不披露哪些用户和我详细,怎么证明和我相似的,而且这种说法显得比较含糊。
  5. Serendipity:多样性就是user-based的一大优势,和自己相似的用户,总能发现一些自己还没发现的新东西。 如果追求多样性, userd-based会是不错的选择。
当然上述原则都不是绝对的,而且在真实工业界推荐系统中, 两种方法一般都是混合着使用。例如百度关键词推荐系统中,就会分别使用item-based和user-based方法找到待推荐关键词候选后,再统一使用model进行后续ranking。
参考文献:
  1. RSs Handbook
  2. Evaluating Collaborative Filtering Recommender Systems, Jonathan L.Herlocker
也可关注我的微博:  weibo.com/dustinsea
也可直接访问: http://semocean.com

Collaborative Filtering根据近邻推荐时需要考虑的3要素

在使用类似于item-based 或user-based collaborative filtering构建推荐策略时,会涉及以下3个因素:
  1. 训练数据的归一化: 工业界推荐系统,包括商业系统中user的数量非常庞大(例如facebook是10亿级别),而user都会有自己对推荐内容打分的独特习惯,例如有些人对推荐内容,都会一股脑地接收,或是给出较高的评价,而有些人则会打较低的分数;有些人总给一样的分数,有些人的评价则分布较为广泛。这就需要对训练数据进行归一化,规避user个性化对模型的影响。
  2. 寻找一种适合数据的相似度度量方法:信息检索中的经典问题。在推荐系统中,第一步就是需要找到待推荐的候选, 以及之后的众多过滤,基本都是在使用合适的相似度度量过滤不相关的item,保留较为相关的item。例如在百度关键词推荐系统,以及触发系统中,大部分的工作,都是围绕相似度度量展开的(当然会比较复杂,包含各种特定场景,特定优化目标的相关性模型,以及使用topic model进行语义相关性计算)
  3. 高效的neigibors查找算法: 正如1中提到,工业界中待推荐处理的user/item较多,所以不可能为每个neighbor的pair都计算相似度,所以一般会对待计算的neighbors进行剪枝,仅计算‘靠谱’的neighbors进行计算。
训练数据归一化
最常用的训练数据归一化方法,非Mean-centering莫属,该方法的核心思想就是对于每一个user,找出其投票分值得中心,该用户其他的分值均会与该中心对比正负,即不关心投票分数的绝对值,而是看与均值的偏差: 如果投票分数为负数,说明是一个负向的打分,如果为正值,则说明正向。例如小明和小张都是用户,小明平均情况下对电影的打分是3分(例如满分是5,最低分是1),小张的打分均值是4,说明相比于小明,小张喜欢打高分,对于小张,一个电影如果打分为3就算是负向评价了,而同样的分值对于小明这样的分数是个中性的分数。
item-base CF中mean-centering计算方法如下:
user-based CF中mean-centering计算方法同理
设想这样一个场景: 小明和小张投票的均值均为3,小明投票时都投3分,而小张则各个分数的分布都有。如果小明和小张对于同一个电影都投了5分,此时小明和小张的投票体现出的信息是不同的: 小明平常都投3分而此时投了5分,这一票体现出的信息,比经常投5分的小张的一票体现出的信息要多(类似于TF-IDF中的IDF原理),而Mean-Centering则不能体现该特性。故我们引出另一种Normalization方法: Z-Score
Z-Score
核心思路是:如果一个用户投票的波动较大,则其投票的话语权要降低。具体计算公式与Mean-Centering相比,除以标准差即可。
极端的解释,就是经常投各种票的人, 其投票的权重会被降低;而投票分值一般不变,但突然改变以往习惯投票值得一票,体现出的信息较多。

在这插入另一篇文章中的思想: 就是经常投票给较多item的user的票的权值需要进行惩罚。例如在youtube推荐视频时,如果某个视频经常和很多视频一起被观看,则有可能不是因为他们相关,而是某个视频就是比较热,需要增加惩罚降低‘哈利波特’效应(具体思想可参见论文: the youtube video recommendation system),例如百度关键词推荐系统中就在级联二步图算法中对类似边的权值进行了惩罚(具体技术实现后续会有专门章节介绍)
Neighborhood 中的相似度度量方法参见前文,此处就不再复述。
至于高效的Neighbors计算方法,则可以在离线计算时设定固定Neighbors的具体N值(KNN中的N),之后在性能和效果之间权衡, 就像你知道的,很多时候,系统设计,就是在不停地在性能和效果之间做取舍达到平衡。
参考文献:
the youtube video recommendation system,James Davidson 等
RSs Handbooks
可关注微博:  weibo.com/dustinsea
也可直接访问:  http://semocean.com