推荐系统重排:MMR 多样性算法

news2025/1/7 17:56:49

和谐共存:相关性与多样性在MMR中共舞

推荐系统【多样性算法】系列文章(置顶)

1.推荐系统重排:MMR 多样性算法
2.推荐系统重排:DPP 多样性算法

引言

在信息检索和推荐系统中,提供既与用户查询高度相关的文档或项目,同时确保结果的多样性是一个关键挑战。最大边际相关性(Maximum Marginal Relevance, MMR)是一种旨在解决这一问题的算法。本文将深入探讨MMR的工作原理、公式解析、实现细节,并通过具体案例说明其应用价值。
在这里插入图片描述


一、 背景

最大边际相关性(Maximum Marginal Relevance, MMR)算法是由Jaime CarbonellJeffrey Goldstein1998年 提出的。Carbonell 是卡内基梅隆大学计算机科学系的教授,而 Goldstein 当时是他的博士生。

在1990年代末期,随着互联网的迅速发展和数字内容的爆炸式增长,信息检索系统面临着一个新的挑战:如何在提供大量相关结果的同时避免冗余和重复。传统的信息检索方法主要关注于提高结果的相关性,即返回尽可能多的与用户查询匹配的内容。然而,这种方法可能会导致结果中存在大量相似度极高的项目,从而降低了用户体验。

此外,在文本摘要生成领域,研究者们也遇到了类似的问题——自动生成的摘要中可能包含过多重复的信息,无法有效地传达文档的主要观点。为了解决这些问题,Carbonell 和 Goldstein 提出了MMR算法,旨在平衡相关性和多样性,以提升信息检索和自动摘要的质量。

MMR最初被设计用于解决文本摘要中的重复问题,但其理念很快就被推广到更广泛的领域,如搜索引擎优化、社交媒体内容推荐、在线广告投放等。通过MMR算法,不仅可以确保推荐或检索的结果高度相关,还能增加结果的多样性,使得提供的信息更加丰富和个性化,满足用户的多样化需求。

二、算法介绍

1. 相关背景补充 – 相对补集

1.1 定义

在集合论中,相对补集(也称为差集)是指从一个集合 A A A中移除所有属于另一个集合 B B B的元素后剩下的元素组成的集合。换句话说,它包含那些仅属于集合 A A A但不属于集合 B B B的元素。如果集合 A A A和集合 B B B是两个给定的集合,那么 A A A相对于 B B B的相对补集通常记作 A ∖ B A \setminus B AB A − B A - B AB

1.2 表示方法
  • 符号表示 A ∖ B A \setminus B AB
  • 读法:A减去B 或 A相对于B的相对补集
  • 数学定义 A ∖ B = { x ∣ x ∈ A  and  x ∉ B } A \setminus B = \{ x | x \in A \text{ and } x \notin B \} AB={xxA and x/B}
1.3 具体例子

考虑以下两个集合:

  • A = { 1 , 2 , 3 , 4 , 5 } A = \{1, 2, 3, 4, 5\} A={1,2,3,4,5}
  • B = { 3 , 4 , 6 } B = \{3, 4, 6\} B={3,4,6}

根据相对补集的定义,我们可以计算 A ∖ B A \setminus B AB

  • A ∖ B = { 1 , 2 , 5 } A \setminus B = \{1, 2, 5\} AB={1,2,5}

这是因为1、2和5是唯一存在于集合 A A A中但不在集合 B B B中的元素。

同样地,我们也可以计算 B ∖ A B \setminus A BA

  • B ∖ A = { 6 } B \setminus A = \{6\} BA={6}

这是因为6是唯一存在于集合 B B B中但不在集合 A A A中的元素。

2. MMR算法

2.1 公式

这个公式是用于最大边际相关性(Maximum Marginal Relevance, MMR)的计算,常用于信息检索和自然语言处理中,以实现搜索结果的多样化。以下是公式的详细解释:

MMR = def arg max ⁡ D i ∈ R ∖ S [ λ ⋅ Sim 1 ( D i , Q ) − ( 1 − λ ) ⋅ max ⁡ D j ∈ S Sim 2 ( D i , D j ) ] \text{MMR} \stackrel{\text{def}}{=} \underset{D_i \in R \setminus S}{\operatorname{arg\,max}} \left[ \lambda \cdot \text{Sim}_1(D_i, Q) - (1 - \lambda) \cdot \max_{D_j \in S} \text{Sim}_2(D_i, D_j) \right] MMR=defDiRSargmax[λSim1(Di,Q)(1λ)DjSmaxSim2(Di,Dj)]

2.2 公式解读
  1. MMR \text{MMR} MMR:

    • 这表示通过最大化MMR得分选择的文档 D i D_i Di
  2. arg max ⁡ D i ∈ R ∖ S \underset{D_i \in R \setminus S}{\operatorname{arg\,max}} DiRSargmax:

    • 这部分从集合 R ∖ S R \setminus S RS2.2.1中的相对补集)中选择文档 D i D_i Di。这里 R R R 是所有文档的集合, S S S 是已经选择的文档集合。 arg max ⁡ \operatorname{arg\,max} argmax 操作符找到使括号内表达式最大化的文档 D i D_i Di
  3. λ ⋅ Sim 1 ( D i , Q ) \lambda \cdot \text{Sim}_1(D_i, Q) λSim1(Di,Q):

    • λ \lambda λ 是一个介于0和1之间的权重因子。
    • Sim 1 ( D i , Q ) \text{Sim}_1(D_i, Q) Sim1(Di,Q) 是文档 D i D_i Di 和查询 Q Q Q 之间的相似度分数。这部分确保选择的文档与查询相关。
  4. ( 1 − λ ) ⋅ max ⁡ D j ∈ S Sim 2 ( D i , D j ) (1 - \lambda) \cdot \max_{D_j \in S} \text{Sim}_2(D_i, D_j) (1λ)maxDjSSim2(Di,Dj):

    • ( 1 − λ ) (1 - \lambda) (1λ) 是另一个权重因子,与 λ \lambda λ 互补。
    • max ⁡ D j ∈ S Sim 2 ( D i , D j ) \max_{D_j \in S} \text{Sim}_2(D_i, D_j) maxDjSSim2(Di,Dj) 是文档 D i D_i Di 与集合 S S S 中任意文档 D j D_j Dj 之间的最大相似度分数。这部分确保选择的文档与已选文档之间有足够的差异性。

敲黑板,划重点

  • MMR 的目标是在确保文档与查询相关的同时,增加文档之间的多样性。
  • λ \lambda λ 参数控制了相关性和多样性的平衡:
    • 如果 λ \lambda λ 接近1,则公式更侧重于相关性。
    • 如果 λ \lambda λ 接近0,则公式更侧重于多样性。
2.2.3 举个 🌰

假设我们有一组文档 R = { D 1 , D 2 , D 3 , D 4 } R = \{D_1, D_2, D_3, D_4\} R={D1,D2,D3,D4} 和一个查询 Q Q Q。假设 S = { D 1 } S = \{D_1\} S={D1} 是已经选择的文档集合。我们需要选择下一个要添加到 S S S 中的文档。

  • 计算每个 D i ∈ R ∖ S = { D 2 , D 3 , D 4 } D_i \in R \setminus S = \{D_2, D_3, D_4\} DiRS={D2,D3,D4} 与查询 Q Q Q 的相似度 Sim 1 ( D i , Q ) \text{Sim}_1(D_i, Q) Sim1(Di,Q)
  • 计算每个 D i ∈ R ∖ S D_i \in R \setminus S DiRS 与集合 S S S 中的文档 D 1 D_1 D1 的相似度 Sim 2 ( D i , D 1 ) \text{Sim}_2(D_i, D_1) Sim2(Di,D1)
  • 使用公式计算每个 D i D_i Di 的 MMR 得分。
  • 选择 MMR 得分最高的文档。

这个过程确保了选择的文档既与查询相关,又与其他已选文档具有足够的差异性,从而提供了一组平衡的结果。

三、案例分析:电影推荐系统

假设我们正在构建一个电影推荐系统,用户喜欢科幻片,但不希望看到太多来自同一个导演的作品。我们的目标是使用MMR算法来挑选出既符合用户偏好的几部电影,同时确保这些电影出自不同的导演,以提供多样化的内容。

给定数据:
  • 查询(Query, Q Q Q:用户偏好为“科幻”。
  • 候选文档集合(Candidate Set, R R R:包含10部不同导演的科幻电影。
  • 已选文档集合(Selected Set, S S S:开始时为空集 S = { } S = \{\} S={}
  • 相似度函数(Similarity Function, s i m ( x , y ) sim(x, y) sim(x,y):衡量两部电影之间的相似性,基于导演、演员、类型等因素。
  • 相关性函数(Relevance Function, s i m ( Q , i ) sim(Q, i) sim(Q,i):衡量每部电影与用户偏好的匹配程度。
  • 平衡参数(Lambda, λ \lambda λ:设定为0.7,意味着更重视相关性,但仍保留一定多样性。
MMR公式:

[ MMR(i) = \lambda \cdot sim(Q, i) - (1-\lambda) \cdot max_{j \in S} sim(i, j) ]

步骤 1:初始化
  • S = { } S = \{\} S={},即尚未选择任何电影。
步骤 2:计算每个候选项的MMR得分

对于 R ∖ S R \setminus S RS中的每一部电影,根据上述公式计算其MMR得分。假设计算结果如下(简化版):

电影编号 s i m ( Q , i ) sim(Q, i) sim(Q,i) m a x j ∈ S s i m ( i , j ) max_{j \in S} sim(i, j) maxjSsim(i,j)MMR得分
10.9N/A0.63
20.85N/A0.595
100.7N/A0.49

注意,在第一次迭代中,由于 S S S为空,所以 m a x j ∈ S s i m ( i , j ) max_{j \in S} sim(i, j) maxjSsim(i,j)对所有候选项都为N/A,因此MMR得分仅由相关性决定。

步骤 3:选择最优项

从表中可以看到,电影1的MMR得分最高,因此我们将它加入到 S S S中: S = { 1 } S = \{1\} S={1}

步骤 4:迭代更新

重复步骤2和3,直到满足特定条件,如达到预设的结果数量或者没有合适的候选项为止。在每次迭代中,重新计算 R ∖ S R \setminus S RS中每个候选项的MMR得分,并考虑它们与 S S S中已有电影的相似性。例如,第二次迭代可能如下所示:

电影编号 s i m ( Q , i ) sim(Q, i) sim(Q,i) m a x j ∈ S s i m ( i , j ) max_{j \in S} sim(i, j) maxjSsim(i,j)MMR得分
20.850.30.525
100.70.20.44

最终,通过多次迭代,我们可以得到一组既与用户喜好高度相关又具有多样性的电影推荐列表。

四、总结

  1. 平衡相关性和多样性:MMR算法的核心在于它能够平衡信息检索或推荐系统的两个关键方面——相关性和多样性。这使得推荐内容不仅贴合用户的兴趣,还能覆盖更广泛的领域。

  2. 相对补集的应用:通过从未选集合 R ∖ S R \setminus S RS中挑选最佳候选项,MMR确保了每次推荐都是新颖且未见过的内容,避免了重复推荐的问题。

  3. 灵活性:MMR允许调整平衡参数 λ \lambda λ,以便根据具体应用场景的需求来权衡相关性和多样性的比重。当 λ \lambda λ接近1时,算法更加注重相关性;而当 λ \lambda λ接近0时,则更强调多样性。

  4. 广泛适用性:尽管最初是为了文本摘要生成而设计,MMR已经被成功应用于搜索引擎优化、社交媒体内容推荐、在线广告投放等多个领域,证明了其广泛的适应性和有效性。

  5. 简单易实现:MMR算法概念清晰,实现起来相对简单,只需要定义好相似度和相关性度量方法即可应用到各种信息检索和推荐任务中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2272082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

概述(讲讲python基本语法和第三方库)

我是北子,这是我自己写的python教程,主要是记录自己的学习成果方便自己日后复习, 我先学了C/C,所以这套教程中可能会将很多概念和C/C去对比,所以该教程大概不适合零基础的人。 it seems that python nowadays 只在人工…

【python因果库实战16】双重稳健模型1

这里写目录标题 双重稳健模型数据简单双重稳健模型双重稳健 IP 特征模型 双重稳健模型 基本上,这些是利用加权模型增强结果模型的不同集合模型。 本笔记展示了不同的结果模型和倾向性模型组合方式, 但由于可能的组合非常多,本笔记并不打算展…

如何恢复已删除的 Telegram 消息 [iOSamp;Android]

Telegram 是一款功能强大的消息应用程序,因其易用性、隐私保护和众多炫酷功能而深受用户喜爱。然而,有时我们会不小心删除重要的消息。在这种情况下你应该做什么? 本文将为您提供简单有效的解决方案来恢复 Telegram 上已删除的消息&#xff…

第431场周赛:最长乘积等价子数组、计算字符串的镜像分数、收集连续 K 个袋子可以获得的最多硬币数量、不重叠区间的最大得分

Q1、最长乘积等价子数组 1、题目描述 给你一个由 正整数 组成的数组 nums。 如果一个数组 arr 满足 prod(arr) lcm(arr) * gcd(arr),则称其为 乘积等价数组 ,其中: prod(arr) 表示 arr 中所有元素的乘积。gcd(arr) 表示 arr 中所有元素的…

【微服务】2、网关

Spring Cloud微服务网关技术介绍 单体项目拆分微服务后的问题 服务地址问题:单体项目端口固定(如黑马商城为8080),拆分微服务后端口各异(如购物车808、商品8081、支付8086等)且可能变化,前端难…

使用JMeter玩转tidb压测

作者: du拉松 原文来源: https://tidb.net/blog/3f1ada39 一、前言 tidb是mysql协议的,所以在使用过程中使用tidb的相关工具连接即可。因为jmeter是java开发的相关工具,直接使用mysql的jdbc驱动包即可。 二、linux下安装jmet…

2024网络安全运营方案概述(附实践资料合集)

以下是网络安全运营方案的详细内容: 一、目标与原则 目标:建立一套安全高效、灵活性强的网络安全运营体系,实现对网络安全的全面监控、防护和应急响应。原则: 全员参与:网络安全是全员共同的责任,所有员工…

使用Python进行图像裁剪和直方图分析

一、简介 在数字图像处理领域,裁剪和分析图像的直方图是两个非常基本且重要的操作。本文将通过一个简单的Python项目,展示如何使用skimage和matplotlib库来裁剪图像并分析其RGB通道的直方图。 二、环境准备 在开始之前,请确保你已经安装了以…

vue3-dom-diff算法

vue3diff算法 什么是vue3diff算法 Vue3中的diff算法是一种用于比较虚拟DOM树之间差异的算法,其目的是为了高效地更新真实DOM,减少不必要的重渲染 主要过程 整个过程主要分为以下五步 前置预处理后置预处理仅处理新增仅处理后置处理包含新增、卸载、…

【U8+】用友U8软件中,出入库流水输出excel的时候提示报表输出引擎错误。

【问题现象】 通过天联高级版客户端登录拥有U8后, 将出入库流水输出excel的时候,提示报表输出引擎错误。 进行报表输出时出现错误,错误信息:找不到“fd6eea8b-fb40-4ce4-8ab4-cddbd9462981.htm”。 如果您正试图从最近使用的文件列…

[SMARTFORMS] 创建样式模板

通过事务码SMARTFORMS创建样式模板 选择样式,自定义样式模板名称ZST_DEMO_2025 点击"创建"按钮,跳转至样式模板详情页面,我们可以在该页面上设置SMARTFORMS表单相关的样式 在段落样式处,右键选择创建节点,输…

基于51单片机和DS3231时钟模块、LCD1602(I2C通信)模块的可调时钟+温度测量+计时+闹钟

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、延时函数2、定时器03、定时器14、独立按键5、DS3231时钟模块6、LCD1602模块(PCF8574T驱动) 四、主函数总结 系列文章目录 前言 之前做过一个类似的,用到了很多外设&#xff…

通义视觉推理大模型QVQ-72B-preview重磅上线

Qwen团队推出了新成员QVQ-72B-preview,这是一个专注于提升视觉推理能力的实验性研究模型。提升了视觉表示的效率和准确性。它在多模态评测集如MMMU、MathVista和MathVision上表现出色,尤其在数学推理任务中取得了显著进步。尽管如此,该模型仍…

企业级Nosql数据库和Redis集群

一、关系数据库和Nosql数据库 关系数据库 定义:关系数据库是建立在关系模型基础上的数据库。它使用表格(关系)来存储数据,通过行和列的形式组织信息。例如,一个简单的学生信息表可能有 “学号”“姓名”“年龄”“班级…

Ant Design中Flex布局、Grid布局和Layout布局详解

好的,我们来更详细地探讨 Ant Design 中的 Flex布局、Grid布局 和 Layout布局 的特点、用法、适用场景,以及如何灵活运用它们来构建页面。下面将从各个方面进行更深入的分析,并提供具体的实例。 VueFlex布局实现响应式布局 1. Flex布局 概念…

基于FPGA的SNN脉冲神经网络之IM神经元verilog实现,包含testbench

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 vivado2019.2 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频&#xff0…

健身房管理系统多身份

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…

三甲医院等级评审八维数据分析应用(四)--数据质量管理篇

一、引言 1.1 研究背景与意义 在医疗卫生领域,医院评审是衡量医院综合实力、保障医疗服务质量的重要手段。其中,三甲评审作为我国医院评审体系中的最高级别,对医院的管理、医疗技术、服务质量等各方面都设定了严格标准。医务科作为医院医疗质量管理的核心部门,肩负着协调…

Solidity合约编写(一)

Solidity IDE地址:Remix - Ethereum IDE 点击进入后在contract文件夹下创建合约 合约代码如下: // SPDX-License-Identifier: MIT pragma solidity ^0.8.26;contract SimpleStorage{bool hasFavorNumtrue;uint256 favorNum5;string favorNums"fiv…

嵌入式系统(将软件嵌入到硬件里面)

目录 Linux起源 查看操作系统的版本 查看内核的版本: 内核系统架构 系统关机或重启命令 关机: 重启: linux下的软件安装 两种软件包管理机制: deb软件包分为两种: 软件包的管理工具:dpkg apt 1…