机器学习的 ranking 技术——learning2rank,包括 pointwise、pairwise、listwise 三大类型。

【Ref-1】给出的:
<Point wise ranking 类似于回归>
Point wise ranking is analogous to regression. Each point has an associated rank score, and you want to predict that rank score. So your labeled data set will have a feature vector and associated rank score given a query
IE: {d1, r1} {d2, r2} {d3, r3} {d4, r4}
where r1 > r2 > r3 >r4
 
<Pairwise ranking 类似于分类>
Pairwise ranking is analogous to classification. Each data point is associated with another data point, and the goal is to learn a classifier which will predict which of the two is "more" relevant to a given query.
IE: {d1 > d2} {d2 > d3} {d3 > d4}

  1、Pointwise Approach

  1.1 特点

  Pointwise 类方法,其 L2R 框架具有以下特征:

  • 输入空间中样本是单个 doc(和对应 query)构成的特征向量;
  • 输出空间中样本是单个 doc(和对应 query)的相关度;
  • 假设空间中样本是打分函数;
  • 损失函数评估单个 doc 的预测得分和真实得分之间差异。

  这里讨论下,关于人工标注标签怎么转换到 pointwise 类方法的输出空间:

  1. 如果标注直接是相关度 s_j,则 doc x_j 的真实标签定义为 y_j=s_j
  2. 如果标注是 pairwise preference s_{u,v},则 doc x_j 的真实标签可以利用该 doc 击败了其他 docs 的频次
  3. 如果标注是整体排序 π,则 doc x_j 的真实标签可以利用映射函数,如将 doc 的排序位置序号当作真实标签

  1.2  根据使用的 ML 方法不同,pointwise 类可以进一步分成三类:基于回归的算法、基于分类的算法,基于有序回归的算法。

  (1)基于回归的算法

    此时,输出空间包含的是实值相关度得分。采用 ML 中传统的回归方法即可。

  (2)基于分类的算法

    此时,输出空间包含的是无序类别。对于二分类,SVM、LR 等均可;对于多分类,提升树等均可。

  (3)基于有序回归的算法

    此时,输出空间包含的是有序类别。通常是找到一个打分函数,然后用一系列阈值对得分进行分割,得到有序类别。采用 PRanking、基于 margin 的方法都可以。

  1.3  缺陷

    回顾概述中提到的评估指标应该基于 query 和 position,

  • ranking 追求的是排序结果,并不要求精确打分,只要有相对打分即可。
  • pointwise 类方法并没有考虑同一个 query 对应的 docs 间的内部依赖性。一方面,导致输入空间内的样本不是 IID 的,违反了 ML 的基本假设,另一方面,没有充分利用这种样本间的结构性。其次,当不同 query 对应不同数量的 docs 时,整体 loss 将会被对应 docs 数量大的 query 组所支配,前面说过应该每组 query 都是等价的。
  • 损失函数也没有 model 到预测排序中的位置信息。因此,损失函数可能无意的过多强调那些不重要的 docs,即那些排序在后面对用户体验影响小的 doc。

  1.4  改进

    如在 loss 中引入基于 query 的正则化因子的 RankCosine 方法。

2、Pairwise Approach

    2.1 特点

  Pairwise 类方法,其 L2R 框架具有以下特征:

  • 输入空间中样本是(同一 query 对应的)两个 doc(和对应 query)构成的两个特征向量;
  • 输出空间中样本是 pairwise preference;
  • 假设空间中样本是二变量函数;
  • 损失函数评估 doc pair 的预测 preference 和真实 preference 之间差异。

  这里讨论下,关于人工标注标签怎么转换到 pairwise 类方法的输出空间:

  1. 如果标注直接是相关度 s_j,则 doc pair (x_u,x_v) 的真实标签定义为 y_{u,v}=2*I_{s_u>s_v}-1
  2. 如果标注是 pairwise preference s_{u,v},则 doc pair (x_u,x_v) 的真实标签定义为y_{u,v}=s_{u,v}
  3. 如果标注是整体排序 π,则 doc pair (x_u,x_v) 的真实标签定义为y_{u,v}=2*I_{π_u,π_v}-1

  2.2  基于二分类的算法  

  Pairwise 类方法基本就是使用二分类算法即可。

  经典的算法有 基于 NN 的 SortNet,基于 NN 的 RankNet,基于 fidelity loss 的 FRank,基于 AdaBoost 的 RankBoost,基于 SVM 的 RankingSVM,基于提升树的 GBRank。

  2.3  缺陷

  虽然 pairwise 类相较 pointwise 类 model 到一些 doc pair 间的相对顺序信息,但还是存在不少问题,回顾概述中提到的评估指标应该基于 query 和 position,
  • 如果人工标注给定的是第一种和第三种,即已包含多有序类别,那么转化成 pairwise preference 时必定会损失掉一些更细粒度的相关度标注信息。
  • doc pair 的数量将是 doc 数量的二次,从而 pointwise 类方法就存在的 query 间 doc 数量的不平衡性将在 pairwise 类方法中进一步放大。
  • pairwise 类方法相对 pointwise 类方法对噪声标注更敏感,即一个错误标注会引起多个 doc pair 标注错误。
  • pairwise 类方法仅考虑了 doc pair 的相对位置,损失函数还是没有 model 到预测排序中的位置信息。
  • pairwise 类方法也没有考虑同一个 query 对应的 doc pair 间的内部依赖性,即输入空间内的样本并不是 IID 的,违反了 ML 的基本假设,并且也没有充分利用这种样本间的结构性。

  2.4  改进

   pairwise 类方法也有一些尝试,去一定程度解决上述缺陷,比如:

  • Multiple hyperplane ranker,主要针对前述第一个缺陷
  • magnitude-preserving ranking,主要针对前述第一个缺陷
  • IRSVM,主要针对前述第二个缺陷
  • 采用 Sigmoid 进行改进的 pairwise 方法,主要针对前述第三个缺陷
  • P-norm push,主要针对前述第四个缺陷
  • Ordered weighted average ranking,主要针对前述第四个缺陷
  • LambdaRank,主要针对前述第四个缺陷
  • Sparse ranker,主要针对前述第四个缺陷

   3、Listwise Approach

  3.1 特点  

  Listwise 类方法,其 L2R 框架具有以下特征:

  • 输入空间中样本是(同一 query 对应的)所有 doc(与对应的 query)构成的多个特征向量(列表);
  • 输出空间中样本是这些 doc(和对应 query)的相关度排序列表或者排列;
  • 假设空间中样本是多变量函数,对于 docs 得到其排列,实践中,通常是一个打分函数,根据打分函数对所有 docs 的打分进行排序得到 docs 相关度的排列;
  • 损失函数分成两类,一类是直接和评价指标相关的,还有一类不是直接相关的。具体后面介绍。

  这里讨论下,关于人工标注标签怎么转换到 listwise 类方法的输出空间:

  1. 如果标注直接是相关度 s_j,则 doc set 的真实标签可以利用相关度 s_j 进行比较构造出排列
  2. 如果标注是 pairwise preference s_{u,v},则 doc set 的真实标签也可以利用所有 s_{u,v} 进行比较构造出排列
  3. 如果标注是整体排序 π,则 doc set 则可以直接得到真实标签

  3.2  根据损失函数构造方式的不同,listwise 类可以分成两类直接基于评价指标的算法,间接基于评价指标的算法。

   (1)直接基于评价指标的算法

  直接取优化 ranking 的评价指标,也算是 listwise 中最直观的方法。但这并不简单,因为前面说过评价指标都是离散不可微的,具体处理方式有这么几种:

  • 优化基于评价指标的 ranking error 的连续可微的近似,这种方法就可以直接应用已有的优化方法,如SoftRank,ApproximateRank,SmoothRank
  • 优化基于评价指标的 ranking error 的连续可微的上界,如 SVM-MAP,SVM-NDCG,PermuRank
  • 使用可以优化非平滑目标函数的优化技术,如 AdaRank,RankGP

  上述方法的优化目标都是直接和 ranking 的评价指标有关。现在来考虑一个概念,informativeness。通常认为一个更有信息量的指标,可以产生更有效的排序模型。而多层评价指标(NDCG)相较二元评价(AP)指标通常更富信息量。因此,有时虽然使用信息量更少的指标来评估模型,但仍然可以使用更富信息量的指标来作为 loss 进行模型训练。

     (2)非直接基于评价指标的算法

  这里,不再使用和评价指标相关的 loss 来优化模型,而是设计能衡量模型输出与真实排列之间差异的 loss,如此获得的模型在评价指标上也能获得不错的性能。 
  经典的如 ,ListNet,ListMLE,StructRank,BoltzRank。

  3.3  缺陷

listwise 类相较 pointwise、pairwise 对 ranking 的 model 更自然,解决了 ranking 应该基于 query 和 position 问题。

listwise 类存在的主要缺陷是:一些 ranking 算法需要基于排列来计算 loss,从而使得训练复杂度较高,如 ListNet和 BoltzRank。此外,位置信息并没有在 loss 中得到充分利用,可以考虑在 ListNet 和 ListMLE 的 loss 中引入位置折扣因子。

  3.4  改进

   pairwise 类方法也有一些尝试,去一定程度解决上述缺陷,比如:

  • Multiple hyperplane ranker,主要针对前述第一个缺陷
  • magnitude-preserving ranking,主要针对前述第一个缺陷
  • IRSVM,主要针对前述第二个缺陷
  • 采用 Sigmoid 进行改进的 pairwise 方法,主要针对前述第三个缺陷
  • P-norm push,主要针对前述第四个缺陷
  • Ordered weighted average ranking,主要针对前述第四个缺陷
  • LambdaRank,主要针对前述第四个缺陷
  • Sparse ranker,主要针对前述第四个缺陷

以上,这三大类方法主要区别在于损失函数。不同的损失函数决定了不同的模型学习过程和输入输出空间。

rating数据集:
:所以关于这个问题,是要使用topN=1的对吗?并把指标改为 AUC和 NDCG对吗?
——是这样,这个是一个rating数据集。
如果是按照pairwise ranking的正确率,应该是我们的oPR和oMRR,PR和MAP都是没有用的。
如果不按照pairwise,(按照listwise),就是AUC和NDCG,所以我让你算那个。
当然还有就是按照数值,(按照pointwise),RMSE,不过我们的没法计算RMSE。
:啊这个“不按照pairwise”,没太明白,还是按照原来的思路,用的 winner 和 loser 比较对呀。尤其在这个rating数据集,是每个比较对当成一个session,这点还是不变的吧??
——这不就是pairwise吗?
rating是可以按照每个用户得到一个排序的,这是listwise,也就是算出NDCG,AUC的指标。
还可以按照pointwise,每个分数预测的怎么样,就是RMSE。
【Reference】

Learning to Rank:Point-wise、Pair-wise 和 List-wise区别的更多相关文章

  1. Learning to rank 介绍

    PS:文章主要转载自CSDN大神hguisu的文章"机器学习排序":          http://blog.csdn.net/hguisu/article/details/79 ...

  2. learning to rank

    Learning to Rank入门小结 + 漫谈 Learning to Rank入门小结 Table of Contents 1 前言 2 LTR流程 3 训练数据的获取4 特征抽取 3.1 人工 ...

  3. Learning to Rank 简介

    转自:http://www.cnblogs.com/kemaswill/archive/2013/06/01/3109497.html,感谢分享! 本文将对L2R做一个比较深入的介绍,主要参考了刘铁岩 ...

  4. 【模式识别】Learning To Rank之RankBoost

    RankBoost的思想比較简单,是二元Learning to rank的常规思路:通过构造目标分类器,使得pair之间的对象存在相对大小关系.通俗点说,把对象组成一对对的pair,比方一组排序r1& ...

  5. Learning To Rank之LambdaMART前世今生

    1.       前言 我们知道排序在非常多应用场景中属于一个非常核心的模块.最直接的应用就是搜索引擎.当用户提交一个query.搜索引擎会召回非常多文档,然后依据文档与query以及用户的相关程度对 ...

  6. Learning to Rank简介

    Learning to Rank是采用机器学习算法,通过训练模型来解决排序问题,在Information Retrieval,Natural Language Processing,Data Mini ...

  7. [笔记]Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart

    之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...

  8. Learning to Rank算法介绍:GBRank

    之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...

  9. Learning to Rank(转)

    https://blog.csdn.net/kunlong0909/article/details/16805889 Table of Contents 1 前言 2 LTR流程 3 训练数据的获取4 ...

随机推荐

  1. 超链接a标签的href与onclick中使用javascript的区别

    onclick中javascript的区别一般没用到都没注意,但出错时才有些郁闷,看文本章解释如下: 以前一直很随意,后来看.net里的linkbutton似乎是用在<a href=" ...

  2. C# 键值对数据排序

    对于键值对的数据进行排序方法总结. /*使用排序字典,默认只支持升序 SortedDictionary<DateTime, String> dd = new SortedDictionar ...

  3. oracle的!=与<>

    效果是完全一样的 Oracle中有三个不等符号的,分别是: != ^= <>

  4. scp ssh: connect to host 9.123.159.41 port 22:connection refused的解决办法

    不同机器之间的文件拷贝,可以用scp命令 使用时报:ssh:connect to host 192.16.41.121 port 22:connectionrefused mac 无法ssh loca ...

  5. jQuery 图片裁剪插件 Jcrop

    Jcrop是一个jQuery图片裁剪插件,它能为你的WEB应用程序快速简单地提供图片裁剪的功能.特点如下: 对所有图片均unobtrusively(无侵入的,保持DOM简洁) 支持宽高比例锁定 支持 ...

  6. Log4j日志体系结构

    转自:https://my.oschina.net/andylucc/blog/794867 摘要 我们在写日志的时候首先要获取logger,在每一个使用log4j的项目都有很多个地方要获取logge ...

  7. FastDFS_v4.06+nginx-1.4.2配置详解

    径不带group名(storage只有一个group的情况),如/M00/00/00/xxx:       location /M00 {            ngx_fastdfs_module; ...

  8. Solidworks公司电脑图纸被加密之后如何解密输出

    第一步:打开总装配的组件(该组件需要包含你所有需要的零件),比如打开其中一个:   第二步:Solidworks的菜单中依次:"文件"→"打包"(有的版本是pa ...

  9. android中使用toolbar

    系统默认使用的是ActionBar,就是界面中的标题栏,但是由于ActionBar设计的原因,被限定只能位于活动的顶部,从而不能实现Material Design效果,所以官方建议使用Toolbar替 ...

  10. 【jeecg-mybatis版本】 mybatis+spring mvc 完美整合方案 查询,保存,更新,删除自动生成

    Jeecg-Mybatis版本代码生成器演示视频 http://pan.baidu.com/share/link?shareid=243717&uk=2668473880   简要说明  JE ...