排序模型入门详解

排序模型入门详解



https://yq.aliyun.com/articles/18

1. 排序模型的应用场景

当商家需要向用户提供多个商品供选择时,往往会遇到这个问题:如何将商品按照一定的顺序呈现给用户,以便使用户能够尽可能地完成购买流程?这就涉及到对商品的排序,用到的模型称排序模型。通常情况下,我们希望排在前面的商品是用户更大概率会点击的商品。

根据不同类型的训练数据,可以将排序模型可以分为三大类:

  1. 单点标注(point-wise)
  2. 两两标注(pair wise)
  3. 列表标注(list wise)

point-wise排序模型

输入特征向量集合表示为{x(1),x(2),,x(m)}\{x^{(1)},x^{(2)},\cdots,x^{(m)}\},其中x(i)x^{(i)}是一个n维向量,各个维度的含义可以是商品的特征例如评分、小量、价格以及用户的特征例如性别、年龄、偏好等,以及用户和商品的关联特征例如是否点击过该商品、是否购买过该商品、对该商品的评价等,以及场景特征如时间、地点等;标签集合为y(1),y(2),,y(m)y^{(1)},y^{(2)},\cdots,y^{(m)},其中y(i)y^{(i)}的取值集合是一个实数,例如用户没有点击过的商品为1,用户点击过但是没购买的商品为3,用户点击并购买过的商品为10.

在上述定义的基础上,我, 可以将point-wise排序模型转换为一个分类问题或者回归问题。如果将排序问题转换为分类问题,会导致输出只有预先定义的那几类(例如1,3,10),进而导致很多商品的label一样,无法进一步区分次序。因此,实际中往往将point-wise排序模型转换为回归问题。

point-wise模型的缺点是,没有考虑训练样本之间的相对顺序。例如,在某次点击事件中,用户点击了样本x(i)x^{(i)},在另一次点击事件中用于点击了样本x(j)x^{(j)}(且此次事件中存在样本x(i)x^{(i)}但是用户没有点击)。根据point-wise模型,x(i)x^{(i)}x(j)x^{(j)}的标签一样,但这显然是不合理的(x(j)x^{(j)}应该比x(i)x^{(i)}更靠前才合理)。

pair-wise排序模型

在pair-wise模型汇总,我们不再从单文档的分类或者回归的角度去看待问题,而是从一个文档对<d1,d2><d_1,d_2>来看待问题。如果用户点击了d1d_1而没有点击d2d_2,那么说明d1d_1d2d_2更靠前,可以把d1d2d_1-d_2的label设置为+1,d2d1d_2-d_1的label设置为-1,对所有的文档pair进行这样标注,就得到了一系列用于二分类的训练样本。预测时,对测试集里面的所有pair进行分类,便可以得到测试集的一个偏序关系,从而实现排序。SVM Rank、RankNet、FRank、RankBoost等方法都是pair-wise模型。

Ranknet

https://www.cnblogs.com/genyuan/p/9788294.html
RankNet提出的时候是为了解决如下搜索排序问题:给定query集合,每个query都对应着一个文档集合,如何对每个query返回排序后的文档集合。
RankNet将输入query的特征向量xRnx\in R^n映射为一个实数KaTeX parse error: Undefined control sequence: \inR at position 5: f(x)\̲i̲n̲R̲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章