LearningtoRank:Point-wise、Pair-wise和List-wise区别 机器学习的 ranking 技术——learning2rank,包括 pointwise、pairwise、listwise 三⼤类型。
给出的:
<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 类⽅法也有⼀些尝试,去⼀定程度解决上述缺陷,⽐如:rank函数怎么用
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】
1、
2、
3、