摘自:「CSDN」

LTR(Learning torank)学习排序是一种监督学习的排序方法。LTR已经被广泛应用到文本挖掘的很多领域,比如IR中排序返回的文档,推荐系统中的候选产品、用户排序,机器翻译中排序候选翻译结果等等。

学习排序是非常完备的领域,本文仅对LTR常用的「单文档方法」和「文档对方法」进行介绍并不涉及算法细节。

单文档方法(PointWise)

Pointwise处理对象是单一文档,将文档转化为特征向量后将排序问题转化为机器学习中常规的分类或回归问题。

  • 假设匹配「QueryA」的文档有「Doc1,Doc2,Doc3,Doc4,…」,其中文档已经进行「分类
  • 用户输入「QueryA」并点击了「Doc3」则对「相关性」进行调整 | Query | | 点击Doc3 | | Query | 「重新评估」
    按点击概率从大到小排序 | Query | | —- | —- | —- | —- | —- | —- | —- | | 1 | Doc1 | | Doc1「-1」 | Doc1 | | | 2 | Doc2 | | Doc2「-1」 | Doc3 | | | 3 | Doc3 | | Doc3「+1」 | Doc2 | | | 4 | Doc4 | | Doc4「-1」 | Doc4 | | | 5 | … | | … | … | |

Pointwise从单文档「分类」角度计算并不考虑文档间的「相对顺序」。而且假设相关度是「查询无关」的,只要「Query,Doc」相关度相同那么就划分到同级别中属同一类别。然而实际上相关度的「相对性」和「查询相关」,比如常见查询会有很多相关文档,该查询和相关性「相对靠后」的文档的「标准级别」可能会比一个「稀有查询」和「为数不多」的高度相关文档的「标准级别」更高。

文档对方法(PairWise)

Pairwise是目前比较流行的方法,相对Pointwise将重点转向文档「顺序关系」。将排序问题归结为二元分类问题,对所有Pair进行分类就可以得到所有文档的一个偏序关系,从而实现排序。

Query 点击Doc3 Query 「重新评估」
二元分类计算偏序关系
1 Doc1 Doc1 > Doc3「-1」
2 Doc2 Doc2 > Doc3「-1」
3 Doc3
4 Doc4 Doc3 > Doc4「+1」
5

尽管PairWise对PointWise做了改进但该方法还是存在明显的问题:

  • 只考虑了两篇文档的相对顺序,没有考虑他们出现在搜索结果列表中的位置

排在前面的文档更为重要,如果出现在前面的文档判断错误「惩罚函数」需要明显高于排在后面判断错误。因此需要引入位置因素,每个文档对根据其在结果列表中的位置具有不同的权重,排在越是前面「权重越大」,如果排错受到「惩罚越大」。

  • 对于不同查询相关文档集的数量差异很大,对效果评价带来了偏置

假设查询A对应500个文档对,查询B对应10个文档对,对应查询A能够「正确判断」480个文档对,查询B能够「正确判断」2个,那么总体文档对准确率评估是482/510=95%,但从查询角度两个查询对应的准确率分别为96%和20%,将使得「模型偏向」相关文档集大的查询。

文档列表方法(ListWise)

Listwise与上述两种方法完全不同,将每个查询对应「所有搜索结果」列表作为一个「训练样例」进行整体预测和评估,根据训练样例得到最优「评分函数」,对应新的查询使用「评分函数」对每个文档打分,这里不做扩展。

更多用途

排序本身不仅限于搜索推荐,任意对「处理信息量」有限制的场景均可以使用。诸如曝光位排序,有限特征筛选等均可以采用到LTR思维方式。