排序模型(Learning to Rank)
要解决的问题
排序模型旨在解决信息检索中的排序优化问题。例如:
- 搜索引擎中对候选网页的排序
- 推荐系统中物品的展示顺序
- 广告系统中广告位的分配
核心挑战:根据上下文特征,将最相关/最有价值的内容排列在更靠前的位置。
主要方法
1. Pointwise
核心思想
Pointwise方法将排序问题转化为单文档的监督学习任务,通过直接预测每个文档的绝对相关性分数实现排序。其本质是将排序问题拆解为:
- 回归任务:预测连续的相关性得分(如CTR预估)
- 分类任务:预测离散的相关性等级(如0-4星分级)
算法原理
1. 问题建模
对于查询query ( q ) 对应的文档集合 ( D = {d_1, d_2,…,d_n} ):
- 每个文档 ( d_i ) 被表示为特征向量 ( x_i \in \mathbb{R}^m )
- 标注数据为 ( y_i \in \mathbb{R} )(回归)或 ( y_i \in {0,1,…,k} )(分类)
- 目标函数:学习映射 ( f: x_i \rightarrow \hat{y_i} )
2. 特征工程
典型特征包括:
- Query-Doc匹配特征:TF-IDF、BM25、词向量相似度
- 文档质量特征:PageRank、点击率、停留时间
- 上下文特征:用户画像、设备类型、地理位置
3. 学习范式
# 伪代码示例
for each query in training_data:
for each document in query:
feature_vector = extract_features(query, doc)
true_label = get_relevance_label(doc)
predicted_score = model.predict(feature_vector)
loss += calculate_loss(true_label, predicted_score)
model.update(loss)
2. Pairwise(样本对优化)
核心思想:通过比较文档对的相对顺序进行优化。
RankNet 算法原理:
- 定义文档对(xi,xj)(x_i, x_j)(xi,xj),若yi>yjy_i > y_jyi>yj则标记为1,否则为0
- 计算得分差:sij=f(xi)−f(xj)s_{ij} = f(x_i) - f(x_j)sij=f(xi)−f(xj)
- 用sigmoid转换概率:Pij=11+e−sijP_{ij} = \frac{1}{1+e^{-s_{ij}}}Pij=1+e−sij1
- 交叉熵损失:L=−Pij∗logPij−(1−Pij∗)log(1−Pij)L = -P_{ij}^*\log P_{ij} - (1-P_{ij}^*)\log(1-P_{ij})L=−Pij∗logPij−(1−Pij∗)log(1−Pij)
改进版本:
- LambdaRank:引入NDCG梯度信息调整更新量
- LambdaMART:结合梯度提升决策树
典型算法
1. RankNet(微软,2005)
核心贡献:首次将概率模型引入pairwise排序
算法原理
-
概率建模:
定义文档iii比jjj更相关的概率:
Pij=11+e−σ(si−sj)P_{ij} = \frac{1}{1+e^{-\sigma(s_i-s_j)}}Pij=

&spm=1001.2101.3001.5002&articleId=147403802&d=1&t=3&u=6deb6d418e1f4e889127b4e69f948285)
2962

被折叠的 条评论
为什么被折叠?



