当前位置: 首页 > news >正文

【推荐系统9】重排模型:基于贪心、个性化的重排

目录

基于贪心的重排

MMR: 最大边际相关

DPP:行列式点过程

代码层面的使用

基于个性化的重排

PRM: 基于Transformer的个性化重排模型

PRS

PMatch:基于排列组合的重排模型

PRank阶段:排列评估


召回阶段从海量物品中筛选出数百到数千候选,精排阶段利用复杂模型对候选集精准打分,输出按预估分数降序排列的候选列表。
重排(Re-ranking) 阶段作为推荐流程的最终优化环节,其作用是对精排输出的高质量候选列表进行全局优化,生成更能满足用户体验需求和业务目标的最终推荐列表。

本文为funrec推荐系统学习笔记,整合自己的理解和网络其他资料写成。


本节介绍重排阶段的核心算法策略:

基于贪心的重排

关于贪心的重排算法主要有两个:

MMR: 最大边际相关

最大边际相关(Maximal Marginal Relevance, MMR)

精排输出的按CTR降序排列的列表中,头部物品往往具有高度相似性,这样会导致用户产生审美疲劳、优质内容曝光不足的现象
MMR算法的核心目标是在保留高相关性物品的前提下,通过主动引入多样性打破同质化

DPP:行列式点过程

行列式点过程(Determinantal Point Process, DPP)

MMR通过候选内容和已选内容计算两两相似度,贪心的选择一个和已选所有内容相似度最低的内容。但MMR无法捕捉多个物品间的复杂排斥关系
行列式如何度量多样性? 相似度矩阵的行列式值较大时,对应物品的多样性越高,反之行列式的值越低,多样性越低(当行列式值=0时,向量共面),因此相似矩阵的行列式可以度量多样性
如何融合相关性和多样性? 核矩阵可以融合相关性和多样性,
核矩阵的行列式值同时反映相关性和多样性:
    - 相关性越高(物品精排得分越高),行列式值越大;
    - 多样性越好(物品间相似度越低,越接近正交),行列式值越大。
最后通过对核矩阵行列式取对数,将优化目标拆解为 “相关性项” 和 “多样性项” 的线性组合。再加上超参数调节两者的权重
最后的贪心求解过程: 
核心目标是从候选物品中选择一个子集,使得核矩阵(融合了相关性和多样性)的行列式值最大,使用的贪心策略:每次挑一个能让当前推荐列表变得更好(更相关且更多样)的物品,逐步凑出最优推荐结果,这里用到了数学技巧(Cholesky 分解)降低了 DPP 求解的复杂度

代码层面的使用

调用开源库(如`dppy`),只需传入核矩阵和推荐数量,快速验证效果。

from dppy.finite_dpps import FiniteDPP# 构造核矩阵K(已提前计算好相关性和相似度)
K = np.array([[1.0, 0.2, 0.1], [0.2, 1.0, 0.3], [0.1, 0.3, 1.0]])
# 初始化DPP,指定核矩阵
dpp = FiniteDPP('likelihood', **{'K': K})
# 贪心选择2个物品
selected = dpp.sample_exact_k_dpp(size=2, mode='greedy')
print("选中的物品索引:", selected)

基于个性化的重排

基于贪心策略的重排序方法。这些方法通过显式定义多样性、相关性或覆盖度的优化目标,在初始排序列表上进行局部调整。它们计算效率高且可解释性强,但在处理复杂的物品间相互影响和深度个性化方面存在局限:目标函数往往需要手工设计,难以捕捉高阶、非线性的交互模式;同时,将用户个性化信息深度融入列表级优化也颇具挑战。

本节介绍两个个性化重排模型:

PRM: 基于Transformer的个性化重排模型

(Personalized Re-Ranking Model)

PRM 利用 Transformer 通过多头自注意力机制让每个物品关注列表中所有其他物品,捕捉长距离、复杂的物品间相互影响,融入用户个性化信息,无需依赖预设多样性公式,直接从数据中学习最优物品组合。
输入层输入 PV、物品自身特征、位置嵌入
关键创新:个性化向量(PV)生成
- 利用预训练点击率预估模型,输入用户历史行为数据学习用户对物品的点击概率预测能力。
- 提取预训练模型输出层前隐藏层的激活值作为 PV

PRS


(Permutation Retrieve System)

传统的重排序方法(包括PRM)主要关注单个物品的分数优化,却忽略了物品排列顺序本身对用户行为的影响。
> 想象这样一个场景:用户面对商品列表 [A, B, C] 时毫无购买欲望,但当看到 [B, A, C] 这个排列时却购买了商品A。这种现象被称为 排列变异影响 (Permutation-Variant Influence)。一个可能的解释是:将价格较高的商品B放在前面,会让用户觉得商品A相对便宜,从而激发购买欲望。

PRS的设计思路是:评估所有可能的物品排列组合,并选择其中用户体验最佳的那一个。在计算效率上PRS提供了两阶段解决方案:
1. PMatch阶段:通过搜索算法快速筛选出少数几个候选排列
2. PRank阶段:使用神经网络模型评估这些候选排列的质量,选出最优解

如图为PRS的框架结构

PMatch:基于排列组合的重排模型

离线训练:双模型预测体系
PMatch阶段需要两个point-wise预测模型的支持:
1. CTR模型:预测用户点击某个物品的概率 PCTR
2. Next模型:预测用户在浏览完当前物品后继续浏览下一个物品的概率
在线服务:FPSA算法
将用户的浏览行为建模为一个序列决策过程。

PRank阶段:排列评估

PRank (Permutation-Ranking) 阶段接收PMatch生成的候选排列,使用神经网络模型DPWN (Deep Permutation-Wise Network) 来评估每个排列的质量。

DPWN的设计理念是:排列中每个物品的价值不仅取决于它自身的特征,更取决于它在整个序列上下文中的位置和作用。为了捕捉这种复杂的序列依赖关系,DPWN采用了Bi-LSTM架构。
PRank阶段的核心评估指标是List Reward(LR) ,它被定义为排列中所有物品预测点击概率的总和:这个简单而有效的指标反映了整个排列的预期收益。在线服务时,PRank会计算每个候选排列的LR值,并选择LR最高的排列作为最终输出。

http://www.dtcms.com/a/556952.html

相关文章:

  • Pandas-之Series 数据结构详解
  • 关键词解释:多视图学习(Multi-view Learning)
  • 类与对象(上):面向过程到面向对象的跨越,类的定义、封装与 this 指针等核心概念深度剖析
  • 医院手机网站中国建设银行预约网站
  • MATLAB实现模糊PID控制
  • 长沙有实力seo优化公司昆明网站seo报价
  • RuoYi-Vue3项目定制修改全攻略
  • 用Python来学微积分24-洛必达法则
  • 银川建网站全国统一核酸检测价格
  • Android WebView 最佳实践:Fragment 版本 + Token 注入 + 离线包热更新
  • 509-Spring AI Alibaba Graph Parallel Stream Node 示例
  • GitHub 热榜项目 - 日榜(2025-11-01)
  • 【愚公系列】《MCP协议与AI Agent开发》004-LLM 在应用中的典型接口模式
  • 【2025-10-31】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
  • 《网络云服务》
  • 本地南昌网站建设上海网站建设企业
  • xshell设置跳板机登录内网服务器
  • 晴天小猪历险记之Hill---Dijkstra算法
  • 【pdf-rs】color.rs 文件解析
  • 网站后台的功能手机触屏网站开发
  • 盐城建设网站国外优秀购物网站设计
  • ARP 欺骗深度解析:从原理到防御的全方位拆解
  • 7-1 最大子列和问题
  • day23_密码加密 前端验证码 监听器 svn版本控制
  • 做的网站不能放视频播放器wordpress清空数据
  • 【Microsoft Learn】Microsoft Azure 服务
  • MacCalendar:专为 Mac 用户打造的高效日历工具
  • 第10章:中断处理-6:Implementing a Handler
  • 伊利网站建设评价多少钱?
  • Spring集成Mybatis-Plus(适用于非Springboot项目)