本文原作者:彭江军,经授权后发布。

原文链接:https://cloud.tencent.com/developer/article/1523867

1: 搜索排序的概念

搜索排序:在一次会话中,用户在交互界面输入需要查询的query,系统给返回其排好序的doc例表的过程。

2:搜索排序和推荐排序的区别

推荐:基于用户的行为挖掘出用户的兴趣,为其推荐对应的视频,doc等。

2.1从展示形式来讲:

搜索排序每次展示一系列的消息例表,如下图所示:

推荐每次可以展示一条消息,但是我们看到的这条可以被展示的doc也是经过背后的排序算法得到的。

也可以在界面上一次展示多条doc,这种情况下推荐排序的展示形式也是多条和搜索排序没有本质的区别。如腾讯视频的火锅视频的推荐就是一次展示多个视频,在这种情况下展示的顺序就由推荐的排序算法给出的。

2.2 难度上而言:

排序相比推荐而言,用户有一个较为明确的目的,所以在排序的初级阶段该问题的难度并不高。但搜索排序在后期的优化上面难度也很大。

前期,因为即使单纯的依据内容与query的文本相关性、内容的质量和内容的时新就可以给出一个还不错的排序结果。但是在基础的排序上在想来提升用户的体验,提升体验包括挖掘用户的意图,提高用户的点击率,长点击率等就比较困难。

由于不管是推荐还是搜索最后都离不开排序,下面结合自己的经验和项目写一点对排序的理解。

3:对排序的理解

排序;顾名思义,就是从一堆杂乱的例表中依据某些特征进行排序。

常见的一些排序的因子在大的维度上可以分为:

文本相关性类特征

内容质量分类特征

内容的时新类特征

点击类特征

用户画像类特征

每个大的维度下的排序特征可以是单个特征,或者多个特征。

对于这些排序特征,排序类的算法的目的就是要做好一件事——审时度势。有点偏哲学,哈哈(研究算法本身就是一门哲学,一种方法论)。

审时度势有点玄乎,其实细分下来可以分为两个,审时和度势。

度势。多个排序的特征融合到一起,每个都有自己的作用,所以需要以一种方式去组合这些特征。排序类算法要做的事就是去确定用何种方式,该怎么组合,来选定每个特征的重要性,度势就体现在这——即确定每个特征的势力范围,重要程度。

审时。任何的一个算法,拟合训练只是手段,真正要做的事情还是去预测。预测这个事情就要求训练模型时候的数据分布和需要预测的数据的分布尽可能一致,这种一致性保证了模型的泛化能力。所以对于实际问题而言,用一个月前的训练模型来预测今天的表现效果自然是不如用一个星期前的训练模型来预测今天的线上表现。

训练数据时间预测数据数据分布一致性模型预测效果一个月前数据今日数据不太一致低一个星期的数据今日数据较为一致中昨天的数据今日数据很一致高

关于如何衡量数据或者特征的分布,可以见后续的特征分析文章。

4:排序的常见算法

搜索排序可以大致分为两个阶段:

先是召回,然后是排序。排序里面又分为粗排和精排,拍完之后,为了预防某些badcase,还会有产品的干预,这个在下一节中讲到。

这一小节我们只从排序的算法层面讲起。大体上来讲,排序算法的可以分为传统阶段和learning to rank 两个阶段。

4.1: 传统的阶段

排序的前期是没有模型的,是直接对精选的特征进行手动组合。这种手动组合的形式一般比较简单,每种组合的形式之下,权重的大小由经验比较丰富的从业者或者专家敲定,特征的可解释性很强。一般常用的有线性组合如加法公式,有简单的非线性组合如乘法公式。这两种其实背后对应的机器学习的方法,分别是线性回归,和Logistic 回归。

下表整合了以加法公式和乘法公式为代表的手动设置权重的特征组合方法的优缺点:

在传统的阶段,我们可以看到,如果我们把组合的方式转化为机器学习的方法参数的确定由样本去学,就可以兼顾组合类方式的优点和缺点。

所以构造一个将搜索排序构造成一个机器学习问题的好处是不言而喻的。这样就进入第二个阶段,learning to rank(以下简称LTR) 阶段。

4.2: LTR阶段

我们在4.1看到,可以将加法公式变成线性回归来克服手动定权重的弊端。但实际上由于线性模型的组合方式太过于简单,其模型的复杂度太低,在面对实际问题的时候,表现力不走。那该选择何种方式来自动组合这些特征呢?

上面的何种方式对应到机器学习的专业术语中,可以叫做学习器,学习器是一族模型的集合,类似于函数族(千万别被两个术语吓到,其实不理解这个术语,也没影响的)。如神经网络学习机,如树模型,如线性模型学习器。每个学习器就代表一类特征的组合方式。言而总之,学习器就决定了以何种方式进行组合。

一旦选定了学习器,就需要去学习对应的组合形式的权重应该是多少?学习权重的时候需要确定损失函数,损失函数的作用相当于告诉学习器的优化方向。学习器应该沿着那个方向去优化才能保证获得最优的权重。

不同的策略下对应的损失函数差别很大。

排序常见的优化策略有三种。借用CSDN博文https://blog.csdn.net/clheang/article/details/45674989,下面分别给出三种优化的策略和对应的损失函数形式:

4.2.1:PointWise

该方法只考虑给定查询下,单个文档的绝对相关度,而不考虑其他文档和给定查询的相关度。亦即给定查询q的一个真实文档序列,我们只需要考虑单个文档di和该查询的相关程度ci,亦即输入数据应该是如下的形式:

这里将需要学习的学习器记为f:

损失函数为:

这里的l是loss的缩写,常见的选择方式由RMSE和entropy cross, logloss等。

Pointwise方法主要包括以下算法:Pranking (NIPS 2002), OAP-BPM (EMCL 2003), Ranking with Large Margin Principles (NIPS 2002), Constraint Ordinal Regression (ICML 2005)。

Pointwise方法仅仅使用传统的分类,回归或者Ordinal Regression方法来对给定查询下单个文档的相关度进行建模。这种方法没有考虑到排序的一些特征,比如文档之间的排序结果针对的是给定查询下的文档集合,而Pointwise方法仅仅考虑单个文档的绝对相关度;另外,在排序中,排在最前的几个文档对排序效果的影响非常重要,Pointwise没有考虑这方面的影响。

4.2.2:PairWise

文档对方法(Pairwise)中排序问题被转化成结果对的回归、分类或有序分类的问题。Pairwise方法考虑给定查询下,两个文档之间的相对相关度。亦即给定查询q的一个真实文档序列,我们只需要考虑任意两个相关度不同的文档之间的相对相关度:di>dj,或者di<dj。

需要学习的学习器记为f:

损失函数为:

Pairwise方法主要包括以下几种算法:Learning to Retrieve Information (SCC 1995), Learning to Order Things (NIPS 1998), Ranking SVM (ICANN 1999), RankBoost (JMLR 2003), LDM (SIGIR 2005), RankNet (ICML 2005), Frank (SIGIR 2007), MHR(SIGIR 2007), Round Robin Ranking (ECML 2003), GBRank (SIGIR 2007), QBRank (NIPS 2007), MPRank (ICML 2007), IRSVM (SIGIR 2006) 。

相比于Pointwise方法,Pairwise方法通过考虑两两文档之间的相对相关度来进行排序,有一定的进步。但是,Pairwise使用的这种基于两两文档之间相对相关度的损失函数,和真正衡量排序效果的一些指标之间,可能存在很大的不同,有时甚至是负相关,如下图所示(pairwise的损失函数和NDCG之呈现出负相关性):

另外,有的Pairwise方法没有考虑到排序结果前几名对整个排序的重要性,也没有考虑不同查询对应的文档集合的大小对查询结果的影响(但是有的Pairwise方法对这些进行了改进,比如IR SVM就是对Ranking SVM针对以上缺点进行改进得到的算法)。

4.2.3:ListWise

与Pointwise和Pairwise方法不同,Listwise方法直接考虑给定查询下的文档集合的整体序列,直接优化模型输出的文档序列,使得其尽可能接近真实文档序列。

这里的NDCG是衡量排序的一个关键性指标,在后面排序类指标中会单独进行描述。

Listwise算法主要包括以下几种算法:LambdaRank (NIPS 2006), AdaRank (SIGIR 2007), SVM-MAP (SIGIR 2007), SoftRank (LR4IR 2007), GPRank (LR4IR 2007), CCA (SIGIR 2007), RankCosine (IP&M 2007), ListNet (ICML 2007), ListMLE (ICML 2008) 。

相比于Pointwise和Pairwise方法,Listwise方法直接优化给定查询下,整个文档集合的序列,所以比较好的解决了克服了以上算法的缺陷。Listwise方法中的LambdaMART(是对RankNet和LambdaRank的改进)在Yahoo Learning to Rank Challenge表现出最好的性能。

5:排序模型的常用评价指标

这里列举最常用的几种指标,指标具体的含义,计算公式,计算例子在后面的里面详细展开

1:NDCG,全称: Normalized discounted cumulative gain。 该衡量指标通过这种归一化的折扣的方式来保证头部的排序的准确性

2:MAP,全称为Mean Average Precision。该衡量指标是反映系统在全部相关文档上性能的单值指标,衡量了每个主题的平均准确率

3:MRR,全称为Mean Reciprocal Rank。该衡量指标是把标准答案在被评价系统给出结果中的排序取倒数作为它的准确度,对于头部的排序做一个discount,已经保证头部排序的准确性。

4:AUC,全称为Area Under Curve。这个其实是一个二分类的指标,但是这个也可以用来作为排序。并且是十分有效的。该指标有效的解决了分类(排序)问题中样本严重有偏的评估数值的置信度问题。

【技术分享】一:搜索排序—概述相关推荐

  1. 业界分享 | 美团搜索排序实践

    作者 | 陈胜 美团 搜索排序负责人 整理 | DataFunTalk 美团的业务品类非常多,不同业务之间的履约方式差异很大.例如当用户进行搜索时,返回的是一个异构混排后的结果,可能会推荐一些具体的到 ...

  2. 【技术分享】五:搜索排序-特征分析

    本文原作者:彭江军,经授权后发布. 原文链接:https://cloud.tencent.com/developer/article/1531448 导语: 数据决定了任务的上限,模型方法决定达到上限 ...

  3. 《跨境电商——速卖通搜索排名规则解析与SEO技术》一一1.3 从购买过程看速卖通的搜索排序机制...

    本节书摘来自异步社区出版社<跨境电商--速卖通搜索排名规则解析与SEO技术>一书中的第1章,第1.3节,作者: 冯晓宁,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  4. 去哪儿酒店实时报价搜索技术分享

    去哪儿酒店实时报价搜索技术分享 去哪儿酒店搜索每天处理近千万次用户的实时报价查询请求, 涉及到200多家目标网站的近30万家酒店. 对其内容详细阅读

  5. Unity游戏帧同步技术分享篇【01】帧同步解决方案概述

    前言: 1.0 帧同步原理与简介 A.什么是帧同步? 帧同步是一种前后端数据同步的方式,一般应用于对实时性要求很高的网络游戏. 其基本实现流程及思路可以概括为: 1.所有客户端每帧上传操作指令集到服务 ...

  6. 阿里飞猪个性化搜索排序探索实践

    导读:旅行类商品 ( 如机票.火车票.汽车票 ) 相对实物电商更加标品,用户决策因素更加单一,而行业内大多基于简单规则排序,如时间.价格或业务逻辑加权,难以满足用户的个性化出行需求.飞猪在过去一段时间 ...

  7. Transformer 在美团搜索排序中的实践

    美团搜索是美团 App 连接用户与商家的一种重要方式,而排序策略则是搜索链路的关键环节,对搜索展示效果起着至关重要的效果.目前,美团的搜索排序流程为多层排序,分别是粗排.精排.异构排序等,多层排序的流 ...

  8. AAAI 2021 | 幻灯片中文字的重要性预测赛亚军DeepBlueAI团队技术分享

    ©PaperWeekly 原创 · 作者|罗志鹏 单位|深兰北京AI研发中心 2 月 2-9 日,AAAI 2021 于线上隆重召开.AAAI(美国人工智能协会)作为人工智能领域的主要学术组织之一,其 ...

  9. 阿里文娱搜索排序算法实践和思考(附交流视频和PPT下载链接)

    开工大吉! 本次分享以优酷为例介绍阿里文娱视频搜索的相关业务和算法体系,视频搜索基础相关性和排序算法的特点和挑战以及技术实践方案:听众还了解了优酷在多模态视频搜索上的探索和实践技术方案. 内容摘要 ▽ ...

最新文章

  1. MATLAB R2018a 输入中文却显示方框问号的问题
  2. 21 款 IDEA 插件,yyds!
  3. P3758 [TJOI2017]可乐
  4. 网页 php pdf文件怎么打开是乱码,打开php文件乱码的解决方法
  5. 基于深度学习的驾驶行为预测方法
  6. 2019年北京高校毕业生就业质量状况:四成博士去了高校
  7. BootstrapTable分页(二)
  8. linux cp 隐藏文件,如何用cp复制包含隐藏文件和隐藏目录及其内容?
  9. python middleware模块_python之auth模块
  10. vue跳转静态HTML,Vue-router,在静态切换的世界中翱翔
  11. 25. Location hash 属性
  12. CentOS6.4部署OpenStack Havana(Nova-Network版) (上)
  13. Python实现答题程序
  14. python 抓取网页工具
  15. led的伏安特性曲线 matlab实现_Matlab在伏安特性实验中的应用
  16. Latex中的括号用法总结
  17. 60个有趣的经济学定律!
  18. Ansys多核仿真报错解决办法
  19. Vim插件管理:Pathogen安装
  20. Windows 使用命令强制删除文件及文件夹

热门文章

  1. ALK8266WIFI解决方案支持常见普通单片机实现WIFI高速传输和许多实用功能,实测速度超过M字节每秒
  2. 量子计算与区块链抗量子算法
  3. 数字图像处理风格化效果——马赛克处理
  4. 联想u盘启动linux,联想thinkpad e335台式机bios设置u盘启动的方法
  5. 客服整理的聊天话术怎么导入到新电脑上面?
  6. 深度分析:一次Wi-Fi入侵实录(1)
  7. 【Beta】Scrum Meeting 4
  8. WinXP系统浏览器字体大小怎么调--win7w.com
  9. matlab如何画双x坐标,matlab画双坐标图
  10. 考计算机基础a的ap考试,用AP考试,敲开计算机名校大门!