淘宝搜索排序算法分析

淘宝搜索排序的目的是帮助用户快速的找到须要的商品。从技术上来讲,就是在用户输入关键词匹配到的商品中,把最符合用户需求的商品排到第一位,其它的依次排在后续相应的位置。为了更好的实现这个目标,算法排序系统基本按三个方面来推动:算法

1、算法模型机器学习

当用户输入关键词进行搜索的时候,系统依据算法模型来给匹配到的每一个商品进行实时的计算,并按照分数的大小对商品进行排序。ide

对于好的算法模型,首先须要考虑咱们可以有哪些特征因子能够应用。好比在网页搜索中,算法模型基本就是按网页的重要性和相关性给网页计算一个分数,而后进行排序。这里的相关性,和重要性就是网页排序模型中两个重要的因子。具体来讲相关性因子是指搜索关键字在文档中出现的度数,当这个度数越高时,则认为该文档的相关程度越高。重要度因子好比 Google 的 Pagerank,能够理解为一个网页入口超级连接的数目:一个网页被其余网页引用得越多,则该网页就越有价值。特别地,一个网页被越重要的网页所引用,则该网页的重要程度也就越高。学习

考虑淘宝搜索的时候,有些特征因子是很容易能想到的,好比:测试

A、文本的相关性:关键词和商品的匹配,匹配的程度,是否重要词的匹配,匹配词之间的距离等,均可能影响相关性。好比搜索“小鸭子洗衣机”的时候,一个商品的中心词是洗衣机的要比卖洗衣机配件商品的相关性高,小鸭子连在一块儿的相关性要比“小”和“鸭子”分开时候的相关性高等。文本相关性最基本的计算方式能够参考 BM25 等。网站

B、类目热点:淘宝数据的一个重要特质是每一个商品都挂靠在类目属性体系下面,每一个商品都作了一个很好的分类。在搜索过程当中,同一搜索词的大量用户行为数据很容易聚焦到相应的热点类目,好比“手机”的搜索行为会集中到手机类目,而不是配件类目。搜索引擎

C、图片质量:图片是电子商务网站很是重要的一个数据,图片是否精美吸引人,图片上是否有各类各样的“牛皮癣”,和商品匹配度等都很大程度上影响着用户的点击和购买决策。spa

D、商品质量:每一个商品都有不一样的质量,商品的描述真实性,是否物美价廉,受人欢迎的程度等。排序

E、做弊因子:相似于全网搜索有关键词堆砌,link spam,网页重复等等做弊的问题,电子商务搜索也面临一样的问题,好比商品关键词堆砌,重复铺货,重复开店,广告商品引流等等,也有商品特有的问题如价格做弊,交易做弊等,须要利用统计分析或者机器学习来作异常行为,异常规律的发现和识别并运用到排序中。索引

F、公平因子:淘宝的商品很丰富,每一个搜索词下都有足够多的商品在竞争,须要在类似质量的状况下让更多的商品和卖家有展现的机会,而不是像网页搜索同样是一个基本静态的排序,照成商品点击和展现的马太效应。

相似的商品,卖家,买家,搜索词等方面的特征因子有不少,一个排序模型就是把各类各样不一样的特征因子组合起来,给出一个最终的关键词到商品的相关性分数。只用其中的一到两个特征因子,已经能够对商品作一些最基本的排序。若是有更多的特征参与到排序,咱们就可能获得一个更好的排序算法。组合的方法能够有简单的人工配置到复杂的相似 Learning to Rank 等的学习模型。

那么如何衡量不一样算法之间的优劣呢?

2、线下评估

算法模型的评估通常分为线下的评估和线上的评估,线下的评估不少都体如今搜索中经常使用的相关性(Relevance)指标。相关性的定义能够分为狭义相关性和广义相关性两方面,狭义相关性通常指检索结果和用户查询的相关程度。而从广义的层面,相关性能够理解为用户查询的综合满意度。当用户在搜索框输入关键词,到需求得到知足,这之间经历的过程越顺畅,越便捷,搜索相关性就越好。

在淘宝搜索衡量狭义相关性的时候,通常是使用 PI(Per Item)测试的方法:

A、抽取具备表明性的查询关键词,组成一个规模适当的关键词集合

B、针对这个关键词集合,从模型的产出结果中查询对应的结果,进行人工标注(人工判断为相关性好、中、差等), 对人工评测的结果数据,使用预约义好的评价计算公式好比 DCG 等,用数值化的方法来评价算法模型的结果和标注的理想结果的接近程度。

利用人工标注数据来计算相关性的分数,来判断模型的好坏;在这个过程当中人工不可避免的会有主观的判断,但综合了多人的判断结果仍是能够得到一个有统计意义的结果,另外一方面标注数据也能够帮助咱们找到一个算法表现不理想的地方,有针对性的提高。
广义的相关性线下评测比较困难,受人工主观因素的影响更大,通常使用 SBS(Side by Side)的评测方法,针对一个关键词,把两个不一样算法模型产出的结果同时展现在屏幕上,每次新模型和对比模型展现的位置关系都是随即的,人工判断的时候不知道哪一边的数据是新模型的结果,人工判断那一边的搜索结果好,以最终的统计结果综合来衡量新模型和老模型的搜索表现。

线下评测的方法和指标有不少,不一样的搜索引擎会关注不一样的指标,好比之前 Yahoo 的全网搜索引擎比较关注 RCFP(Relevance,Coverage,Freshness,Perspective)等,淘宝搜索线下评测时候通常统计 DCG 和 SBS 的指标。

线下的评测方法从统计上有必定的指导意义,能从必定程度上区分模型的好坏,但要真正验证算法模型的好坏,还须要接受真实的流量来验证。

3、线上测试

为了真实验证一个算法模型的好坏,须要有一个系统能提供真实的流量来检验。淘宝搜索实现的 BTS(Bucket Testing System)系统就是这样的一个环境,在用户搜索时,由搜索系统根据必定的策略来自动决定用户的分组号(Bucket id),保证自动抽取导入不一样分组的流量具备可对比性,而后让不一样分组的用户看到的不一样算法模型提供的结果。用户在不一样模型下的行为将被记录下来,这些行为数据经过数据分析造成一系列指标,而经过这些指标的比较,最后就造成了不一样模型之间孰优孰劣的结论。只要分组的流量达到必定的程度,数据指标从统计意义上就具备可比性。

不一样的 BTS 系统会关注不一样的数据指标,在淘宝搜索,有一些重要的指标是不少算法模型测试的时候关注的:

  • 访问 UV 成交转化率:来淘宝搜索的 UV,最终经过搜索结果成交的用户占比。
  • IPV-UV 转化率:来淘宝搜索的 UV,有多少比例的用户点击了搜索结果
  • CTR:搜索产生的点击占搜索产生的 PV 的比例
  • 客单价:每一个成交用户在淘宝搜索上产生成交的平均价格
  • 基尼系数:基尼系数是一个经济学名词,考量社会财富的集中度;若是社会财富集中到不多一部分富人手中的时候,基尼系数就会增大,社会的稳定性和可持续发展性就会出现问题;淘宝搜索借用了这个概念来衡量搜索带给卖家的 PV 展现,和点击的集中度,在保证用户体验的前提下,给更多的优质或小小而美的卖家展现的机会。

大部分时候咱们都有好几个模型和功能在线上测试,咱们用 BTS 的方式来观察测试的状况,若是提高稳定就逐渐开放给全部用户,若是没有提高,咱们也能从中得到经验帮助咱们更好的理解用户。