您的位置:首页 > 其它

机器学习之排序学习综述

2014-07-25 08:42 127 查看

1 排序学习的简介

Web Search 的历史经历了传统的 “text retrieval” 到 “基于link analysis的搜索引擎”,目前,由于机器学习和数据挖掘的技术不断成熟,利用统计模型来解决rank问题已经成为一个hot topic: Learning to Rank(排序学习指用机器学习理论解决排序问题)

排序最常见的就是给一个query,对候选的documents排序,返回top-k给用户。

传统的排序方法一般是通过构造一个排序函数(Scoring Function)来实现,该排序函数可以体现不同的标准,在IR领域一般是按照相关度进行排序。比较典型的,在搜索引擎中,对于一条查询query,搜索引擎将返回一个相关的文档(document)列表,然后根据(query, document)之间的相关度,对列表中的文档进行排序,并返回给用户。影响相关度的因素有很多,比如词频、文档频等。

LTR是有监督的学习。建立好模型后,需要用训练数据集进行训练。

LTR可以被应用到信息检索(IR)、协同过滤、自然语言处理(NLP)、数据挖掘(DM)、推荐系统中的候选产品、用户排序,机器翻译中排序候选翻译结果等领域。

排序学习的优势是该方法很容易融合信息(特征)并且机器学习有成熟又深厚的理论基础。参数是通过迭代优化出来的。有一套成熟的理论解决,稀疏,过拟合,优化等问题。

对于传统的排序模型,单个模型往往只能考虑某一个方面(相关度或者重要性),所以只是用单个模型达不到要求。搜索引擎通常会组合多种排序模型来进行排序,但是,如何组合多个排序模型来形成一个新的排序模型,以及如何调节这些参数,都是一个很大的问题。

并且传统的排序模型,如果参数较多的话,会使得用经验方法调参特别困难,于是人们很自然地想到用机器学习来解决这一问题。

使用机器学习的方法,我们可以把各个现有排序模型的输出作为特征,然后训练一个新的模型,并自动学得这个新的模型的参数,从而很方便的可以组合多个现有的排序模型来生成新的排序模型。

2 LTR的特征选取

此阶段就是要抽取出所有的特征,供后续训练使用。

与文本分类不同,LTR考虑的是给定查询的文档集合的排序。所以,LTR用到的特征不仅仅包含文档d本身的一些特征(比如是否是Spam)等,也包括文档d和给定查询q之间的相关度,以及文档在整个网络上的重要性(比如PageRank值等),亦即我们可以使用相关性排序模型和重要性排序模型的输出来作为LTR的特征:

传统排序模型的输出,既包括相关性排序模型的输出f(q,d),也包括重要性排序模型的输出。如:文本相关性、Query term在文档中出现的次数等

Doc本身的特征:Pagerank、内容丰富度、是否是spam(搜索引擎垃圾技术)等

3 LTR训练数据的获取

训练数据的获取有两种主要方法:人工标注和从日志文件中挖掘。

人工标注:从搜索日志中随机选取一部分Query,让受过专业训练的数据评估员对”Query-Url对”给出相关性判断。常见的是5档的评分:差、一般、好、优秀、完美。以此作为训练数据。人工标注是标注者的主观判断,会受标注者背景知识等因素的影响。

从日志中挖掘:在实际应用中,除了点击数据,往往还会使用更多的数据。比如通过session日志,挖掘诸如页面停留时间等维度。在实际场景中,搜索日志往往含有很多噪音。且只有Top Query(被搜索次数较多的Query)才能产生足够数量能说明问题的搜索日志。

公共数据集:LETOR,Microsoft Learning to Rank Dataset等

4 排序模型

排序是信息检索的核心研究问题,有大量成熟的方法,可以分为两类:

相关度排序模型(Relevance Ranking Model)

相关度排序模型根据查询和文档之间的相识度来对文档进行排序。常用的模型包括:布尔模型(Boolean Model),向量空间模型(Vector Space Model),隐语义分析(Latent Semantic Analysis),BM25算法,LMIR模型等。

重要性排序模型(Important Ranking Model)

重要性排序模型不考虑查询,仅仅根据网页(也就是文档)之间的图结构来判断文档的权威程度,典型权威网站有Google、Yahool。常用模型有PageRank,HITS,HillTop,TrustRank等。

5 模型训练方法

LTR是一个监督学习过程。

对与每个给定的查询-文档对(query document pair),抽取相应的特征(既包括查询和文档之间的各种相关度,也包括文档本身的特征以及重要性等),另外通过人工标注或者从日志中挖掘的方法来得到给定查询下文档集合的真实序列。然后我们使用LTR的各种算法来学到一个排序模型,使其输出的文档序列和真实序列尽可能相似。

我们平常使用Machine Learning做的最多的两个任务,即分类(Classification)和回归(Regression)。

基于这样的思想,人们提出了三种方法:

1.单文档方法(Pointwise),2.文档对方法(Pairwise),3.文档列表方法(Listwise)

L2R算法主要包括三种类别:单文档方法(PointWise),文档对方法(PairWise),文档列表方法(ListWise)。Pointwise和Pairwise把排序问题转换成回归 、分类或有序分类问题。Lisewise把Query下整个搜索结果作为一个训练的实例。3种方法的区别主要体现在损失函数(Loss Function)上:

1)单文档方法

Pointwise方法的主要思想是将排序问题转化为多类分类问题或者回归问题。以多类分类为例进行说明:假设对于查询query,与其相关的文档集合为:{d1, d2, …, dn}。那么首先对这n个pair:(query, di)抽取特征并表示成特征向量。将query与di之间的相关度作为label,一般的label等级划分方式为:{Perfect, Excellent, Good, Fair, Bad},一共五个类别。于是,对于一个查询及其文档集,可以形成n个训练实例。有了训练实例,我们可以使用任一种多类分类器进行学习,比如最大熵,SVM。

举例:如给定q1时document正确的顺序为d3,d2,d1。pointwise方法着眼于优化每个q,d对:{q1,d3,3},{q1,d2,2},{q1,d1,1}。

2)文档对方法

Pairwise方法是目前比较流行的方法,效果也非常不错。它的主要思想是将Ranking问题形式化为二元分类问题。

举例:pairwise将顺序d3,d2,d1看成{d3 , d2,+1},{d2 , d1,+1},{d3 , d1,+1},{d2,d3,-1},{d1,d2,-1},{d3,d2,-1}。之后进行优化。

于是,按照这种方式,我们就得到了二元分类器训练所需的样本了。预测时,只需要对所有pair进行分类,便可以得到文档集的一个偏序关系,从而实现排序。

缺点:1.它对不同级别之间的区分度是一致对待的。2.相关文档集大小带来的模型偏置。

3)文档列表方法

Listwise方法相比于前两种(Pointwise,Pairwise)而言,不再将Ranking问题直接形式化为一个分类或者回归问题,而是直接对文档的排序结果(list)进行优化。目前主要有两种优化方法:

1.直接针对Ranking评价指标进行优化。比如常用的MAP, NDCG。这个想法非常自然,但是往往难以实现,因为NDCG这样的评价指标通常是非平滑(连续)的,而通用的目标函数优化方法针对的都是连续函数。

2.优化损失函数

6 排序学习的效果评价

L2R是用机器学习的方法进行排序,所以评价L2R效果的指标就是评价排序的指标,主要包括以下几种:

1) WTA(Winners take all) 对于给定的查询q,如果模型返回的结果列表中,第一个文档是相关的,则WTA(q)=1,否则为0.

2) MRR(Mean Reciprocal Rank) 对于给定查询q,如果第一个相关的文档的位置是R(q),则MRR(q)=1/R(q)。

3) MAP(Mean Average Precision) 对于每个真实相关的文档d,考虑其在模型排序结果中的位置P(d),统计该位置之前的文档集合的分类准确率,取所有这些准确率的平均值。(常用)

4) NDCG(Normalized Discounted Cumulative Gain) 是一种综合考虑模型排序结果和真实序列之间的关系的一种指标,也是最常用的衡量排序结果的指标。(常用)

5) RC(Rank Correlation) 使用相关度来衡量排序结果和真实序列之间的相似度,常用的指标是 Kendall's Tau。

7 对排序学习的疑问

1. 很难融合多种信息。如基于vector space model 以tf-idf作为权重,可能就很难用上其他信息了;基于language model 除了计算p(q | D),也很难结合其他信息了。

2. 缺乏深厚的理论支持。还如vector space model通过计算向量间的余弦相似度,看似有道理,但是否有道理,或是否对于每种情况都是准确的,没人可以证明;常用的一元language model假设bags of words又有多少道理?如果模型中需要设定参数,那只能手工调整出经验参数,那么是否准确,是否over-fitting,很难讲了。

3.Learning to rank一般是监督学习,实际应用的话,训练语料是个问题,毕竟语料需要包含q与d的 relevance level。另外,机器学习存在一些固有的问题。

4.大部分研究建立在特征相同的前提下,唯一关注的是如何学习出一个排序函数,那么实际应用时到底是合理的特征更重要还是学习排序函数更重要,在特征固定的前提下,通过好的排序函数,总体效果会有很大提高吗?

5.传统的Retrieval model 是考虑在建立model时如何更好的更充分合理的利用q与d的概率信息,现在把所有的q与d的信息和link信息等等,都转化成向量形式,而将全部的精力放在学习函数上,是否使路越走越窄呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: