淘宝搜索算法综述之一:淘宝搜索的特点

淘宝有十亿商品,挂靠在几千个叶子类目,上百个一级类目,十几个行业下面,如何能让用户快速的找到符合意图的商品,是淘宝搜索需要解决的首要问题。


淘宝搜索从大的架构或流程上来说,与传统的搜索引擎有不少相似的地方。由于淘宝搜索面对的是站内卖家上传的商品,这些商品挂靠在人工整理的类目属性体系下,所以除了不需要像传统搜索引擎一样有爬虫对网页进行收集,以及网页信息的分类处理等部分工作外,其它部分的流程和工作原理都有相通的地方,包括对数据的整理、分析、索引产生索引库,如何根据用户输入的关键词在索引倒排表中进行检索,完成商品与检索之间的相关度评价,对将要输出的结果进行排序,并实现某种用户相关性反馈机制等。  


除了上述与全网搜索的相似的地方外,淘宝搜索有很多自己独特的地方


1.淘宝搜索面对的既有非结构化的详情页商品描述信息,也有结构化的商品和属性数据。每个商品下挂在一个有层次的类目体系下,同时又关联到很多相关的属性。比如对于一件连衣裙的商品,它可以下挂在连衣裙类目,连衣裙类目又属于女装类目;同时这个连衣裙商品又可以关联很多相关属性,比如它的品牌是歌莉娅,袖长是七分袖,颜色是白色,材质是棉等等;所以淘宝搜索并不是单纯的匹配一段文字,而是需要从结构化的数据出发满足用户的搜索词和偏好


2.淘宝的数据变化和更新非常快。每天很多的新商品数据被上传到网站,一旦新商品被上传,这个商品就是需要被搜索到的。不像全网网页任何人可以发布一个,是否被搜索引擎收录是另一回事。另外在淘宝每天有大量的商品不停的在做更新,包括商品标题描述的变化,商品价格的改变,商品图片的更新,商品的上下架等等,这些变化需要实时的更新到搜索中,以便让用户及时找到更新后的商品信息。而在全网搜索中,很多网页是静态不变,网页之间的相互关系也变化缓慢,大量索引的更新没有类似淘宝搜索这种实时性的需求。


3.导航,类目属性导航在网页搜索中基本是不可见的。在淘宝搜索中,浏览和导航则是用户在线寻找和购买商品的重要途径,占商品搜索流量的25%-30%,在淘宝,大量的商品搜索是关键词和导航的组合。


4. 图片,商品的图片在用户研究和购买过程中起到了很大作用,搜索的展现结果中有很大一部分被图片所占据。图片的质量,图片与文本的相互关系都是我们需要考虑和处理的,不像全网搜索,基本就是在文本中做匹配和排序。


5.淘宝是一个生态系统。搜索,比较以及购买都发生在淘宝站内,不像一般的全网搜索引擎,用户搜索完后就跳离到其它网站,搜索前和搜索后的用户行数据是很难拿到的。而在淘宝搜索,一般来说用户搜索完后,会点击其中一些商品,然后比较这些商品,和卖家进行沟通,然后下单购买,或者返回来继续搜索,搜索前,搜索中和搜索后的数据和信息非常丰富,有非常多的用户行为数据能帮助我们设计一个更好的搜索排序算法


6.单一维度排序,商品需要在多种维度上相互之间进行比较,比如按价格进行比较,按卖家的信用进行比较,按商品的销量进行比较,所以淘宝搜索除了提供一个综合排序外,也有很多按一个维度进行的排序方式,方便用户做多层次的商品比较和挑选,不像网页搜索就是一套固定的排序体系


7. 社会责任。淘宝搜索的发展不只是体现了搜索本身的技术追求,也包含了很多的社会责任。在全网搜索中,一般的网页是不是被索引,被索引后是不是能展现,对网页的拥有者来说并不是一个事关生活的决定点。在淘宝上则完全不同,很多商家依赖于淘宝来解决民生就业问题,网店的流量以及成交关系到很多人的生活。在淘宝搜索的算法设计中,既要考虑用户的搜索体验,也要考虑商业规则来保障公平性和流量的分散性。很多的搜索算法原理,规则或算法结果都会向卖家宣导,引导卖家向更好的方向发展


除了与传统的网页搜索有比较大的差异外,淘宝搜索和其它大型的电子商务网站搜索比如Amazon相比也有一定的差异性, Amazon基本是一个基于产品的搜索形态,它的数据量,多样性,更新的量和实时性等都和淘宝有比较大的差别。淘宝搜索面临的挑战大概和Ebay有比较大的相似性。

本文将介绍如意淘商品推荐的高级技术,也是我们获得PV点击率翻倍的关键技术,主要是商品聚类、Re-ranking和点击反馈


一、商品聚类

为什么要做商品聚类不是因为数据稀疏性的问题,上一篇文章中挖掘到的商品数据字典虽只有1000多万条数据,但已可覆盖60+%的商品PV;是因为如意淘插件提供的同款聚合商品点击率明显高于我们基于搜索的点击率,一个最直接的想法:

能不能线下挖掘出一些相似度高的商品来替代基于搜索的推荐商品?

怎么挖掘相似度高的商品?很简单,计算商品间的文本相似度即可,但淘宝的商品数据量巨大,如何将计算量降低到可接受的范围内成为关键问题。幸运的是,淘宝的商品都有后台叶子类目属性,我们只要在相同后台叶子类目中寻找相似度高的商品即可。

另外,为了进一步降低计算量,我们将商品标题中TermRank值最大的几个词建立倒排链,计算时只要计算倒排链中商品间的相似度即可。

通过叶子类目与关键词倒排对商品数据的划分,我们将商品的相似度计算量降低到了可接受的范围。

而商品的相似度计算,我们采用最简单的方法,计算商品标题词语的余弦相似度,词语的权重可以默认为1或使用TermRank值,对最终效果的影响很小。


通过上面的方法,我们可计算出约1亿商品的高相似度推荐商品,其点击率明显高于基于搜索的点击率,符合我们的预期。


二、Re-ranking

用户对商品最关注的2个维度是品牌和价格,那么在展现推荐商品时能不能使用这2个维度对商品进行Re-ranking,从而获得更高的PV点击率?

首先我们对商品的品牌进行了调研,发现商品可提取出品牌特征的比率较低,而且从挖掘到的推荐商品来看,相同品牌的重复度较高,所以再对品牌维度优化的收益不大。

从商品的价格维度来看,如果推荐商品与被推荐商品的价格接近或者略低,很可能会得到更多的点击。我们将推荐商品与被推荐商品价格差的百分比引入到Re-ranking中,PV点击率提升5+%,非常明显。

另一方面,因为之前推荐商品的价格是从IC服务获取的,无法获得商品的折扣后价格(即真实价格),后来改从主搜索引擎获取商品真实价格后,PV点击率提升10+%,可以看到价格对用户点击的影响之大。


三、点击反馈

问题描述

假设如意淘商品推荐每天展现PV约2000万,点击量约40万,能否根据这些数据来进一步提升推荐的点击率?

答案是肯定的,最直接的想法是:

1. 推荐商品若具有更高的点击率,给以更好的展现位置,即正反馈

2. 推荐商品若点击率低或没有点击,降低其展现位置或展现其它推荐商品,即负反馈概率模型

我们可以将上面的想法转换为一个概率模型,先回到最初的定义:

找到ItemB,使得P(ItemB|ItemA)最大化

根据条件概率的定义,我们可以将P(ItemB|ItemA)转化为:

P(ItemB|ItemA)=P(ItemA,ItemB)/P(ItemA)

而对不同的ItemB而言,ItemA是不变的,即P(ItemA)是不变的,即只要计算出P(ItemA,ItemB),就能找到最大的ItemB。我们将场景分为有推荐场景和无推荐场景,根据全概率公式,就能得到以下的概率模型:

P(ItemA,ItemB)=P(ItemA,ItemB|无推荐场景)*P(无推荐场景) + P(ItemA,ItemB|有推荐场景)*P(有推荐场景)

其中,P(无推荐场景)+P(有推荐场景)=1,与正反馈和负反馈的对应如下:

1. 初始值:没有考虑点击反馈时,P(有推荐场景)=0,P(ItemA,ItemB)=P(ItemA,ItemB|无推荐场景),即P(ItemA,ItemB)以无推荐场景下的取值作为其初始值

2. 正反馈:P(ItemA,ItemB|有推荐场景)>P(ItemA,ItemB|无推荐场景),则P(ItemA,ItemB)相对其初始值被提升

3. 负反馈:P(ItemA,ItemB|有推荐场景)<P(ItemA,ItemB|无推荐场景),则P(ItemA,ItemB)相对其初始值被降低

综上,我们建立了点击反馈的概率模型,下面将介绍模型的计算方法。


点击反馈计算方法

要计算出P(ItemA,ItemB),只需要计算下面3项P(ItemA,ItemB|无推荐场景),P(ItemA,ItemB|有推荐场景),P(无推荐场景)即可。

1. 计算P(ItemA,ItemB|无推荐场景)

这里我们仍可以按照UV的方式来计算(可参考前一篇文章的介绍),即点击了ItemA之后又点击了ItemB的UV数,即页面内点击和搜索点击两种方式,不再赘述,分母取无推荐场景下的所有UV(目前取ItemA的UV)似乎更合理一些。

2. 计算P(ItemA,ItemB|有推荐场景)

这个很容易计算,即用户点击在ItemA的详情页下点击推荐商品ItemB的UV数,分母取有推荐场景下的UV更合适些(目前取ItemA的UV)。

3. 计算P(有推荐场景)

这个可以根据有/无推荐场景的UV数来计算,增加一个参数C,以调整反馈强度,即

P(有推荐场景)=C*UV(有推荐场景)/(C*UV(有推荐场景)+UV(无推荐场景))

 

你可能感兴趣的:(淘宝搜索算法综述之一:淘宝搜索的特点)