WSDM24-因果推荐|因果去偏的可解释推荐系统

1 动机
可解释推荐系统(ERS)通过提供透明的推荐解释,提高用户信任度和系统的说服力,如下图所示,然而:

1:现有工作主要关注推荐算法的去偏(流行度偏差),但未显式建模模型生成的解释如何影响推荐结果(解释偏差),导致推荐系统仍可能在解释层面继承流行度偏差,使得推荐解释偏向热门物品的共性特征,放大推荐系统中的偏差,而非用户的真实兴趣。
2:忽略了模型生成的解释本身可能存在的偏差,例如,热门物品往往具有更丰富的用户交互数据,因此其解释更容易被模型学到,而冷门物品的解释则可能受限,导致推荐系统的解释不够个性化,甚至进一步放大推荐结果的偏差。
2 贡献
从因果推理的视角,提出了一种因果可解释推荐系统(Causal Explainable Recommendation System, CERS)
1:提出了基于因果推理的可解释推荐系统框架,通过因果图建模用户-物品交互与推荐解释之间的关系,明确解释变量在推荐过程中的影响,揭示推荐系统中的解释偏差来源。
2:引入因果干预消除解释偏差,采用前门调整,利用模型生成的解释作为中介变量,有效去除推荐和解释中的流行度偏差,使推荐更加个性化。
3:结合用户反馈优化推荐与解释,CERS设计了一种交互机制,允许用户对推荐解释进行点击反馈,使得系统能够自适应地调整推荐逻辑,提高推荐结果的个性化程度和用户满意度。
3 问题定义
结合了可解释推荐系统的特点,引入模型生成的解释作为中介变量,为后续的前门调整提供基础。
这段就不说了,用户项目集合以及交互:

预测函数用于估计用户对物品的偏好,然而在可解释推荐系统(ERS)中,不仅要生成推荐,还要提供解释:首先是候选解释集合 ,包含所有可能的解释维度(例如电影推荐系统中的“剧情”“演员”等)以及解释向量
,表示推荐物品 i 时,生成的解释概率分布。
ERS流程:1 基于用户和物品计算匹配表示m;2基于m使用解释生成模型生成解释;3基于 m和解释
计算最终推荐分数
4 因果图
CERS目的是同时去除推荐结果和和生成解释的偏差:

U:用户特征;I:物品特征;M:用户-物品匹配嵌入;E:模型生成的解释;Y:推荐分数
传统推荐系统的因果关系表示为图 2a,目标是学习用户和物品的匹配函数,通过 M计算最终推荐分数 Y, 但由于历史数据中热门物品更容易被曝光和交互,导致 M 存在偏差,从而影响最终的推荐结果 Y。
在可解释推荐系统中,模型生成的解释E起到了中介变量的作用,解释 E 由匹配嵌入 M 生成,并影响最终的推荐结果 Y。如果E存在解释偏差,会进一步放大推荐系统的流行度偏差。因此使用因果干预的前门调整来减少 E的偏差。
前门调整
通过将解释 E作为中介变量,避免推荐系统直接受到匹配嵌入 M的流行度偏差影响。前门调整通过分解路径 M→E→Y来去除偏差。根据因果推理中的前门调整定理,通过公式计算因果效应:

P(Y∣do(M)):表示在去除了偏差后,M 对 Y 的真实因果效应;P(E∣M):解释 E 由匹配嵌入 M生成的概率;P(Y∣M′,E)P(M′):通过解释 E 来计算调整后的推荐分数(通过调整 M的分布,使得 M 的影响仅通过 E传播到 Y,避免直接受流行度偏差的影响。)
5 CERS
流程:首先从历史数据中提取用户和项目嵌入。 同时,从用户评论中获得候选解释集(E)。 这些预处理方法在整个数据提取过程中保持一致。 给定𝑢和item,通过基于神经网络的表示提取模块(如多层感知器(MLP)生成M。 解释生成模型处理用户-项目匹配并产生一个表示解释可能性的向量(Eu)。 最后,项目排名模块使用多层感知器算法计算用户项目对的分数。

5.1 匹配嵌入M计算
首先计算用户 u和物品 i之间的匹配嵌入 mui,通过基于神经网络的表示提取模块。
5.2 生成解释嵌入
首先生成候选集,并利用神经网络计算每个候选item与用户和物品的匹配表示M的得分,并生成
5.3前门调整

eui,j 表示用户 u对物品 i的解释向量中第 j个解释项的概率;y(m′,eui,j) 表示在解释 影响下,用户 u对物品 i进行的交互评分;M′ 是用户-物品匹配集合的一个随机子集。首先计算用户-物品匹配 m′及其对应的推荐评分,其次计算该推荐评分在所有可能的解释
下的均值,从而去除模型生成解释的偏差。
5.4 用户模拟器
CERS 希望优化推荐结果和生成的解释,但是现实世界的数据集很少包含显式用户反馈关于模型生成的解释。大多数数据集只有用户点击某个物品的记录,但没有用户是否认可推荐解释的记录。因此使用用户模拟器提供了一种方法,可以自动生成用户的模拟反馈,以评估解释质量并提供监督信号,训练解释生成模型。
首先基于用户的历史交互,通过短语级情感分析提取属性特征向量(剧情质量,视觉效果),
表示表示物品 i在某个解释 j上的评分,如果用户过去的交互记录中某个解释的评分较高,则用户更有可能接受该解释。

t 是用户交互过的物品数量,δ 是预设的阈值。如果用户历史交互的物品在某个解释维度 j上的平均得分超过 δ,那么用户更可能接受该解释,并生成模拟点击反馈,从而提供监督信号,用于计算解释损失


推荐分数衡量用户是否点击了推荐物品,解释损失衡量推荐解释的质量
6 实验分析
6.1 评价指标
为了评估推荐的准确性,论文使用了NDCG衡量推荐列表的排名质量;
为了衡量推荐系统去偏差的能力,使用了以下两个去偏指标:
Concentration Ratio (C-Ratio)集中度比率,用于衡量推荐系统是否存在马太效应,即是否过度偏向热门物品。

Pu 表示用户u的前 K 个推荐物品集合,Ihot 表示数据集中最流行的前 15% 物品集合,较低的 C-Ratio说明模型减少了对热门物品的依赖,推荐更加多样化。
Average Recommendation Popularity(ARP)平均推荐流行度,衡量模型在推荐时偏向流行物品的程度。

ϕ(i) 表示物品在数据集中被交互的次数,Pu 表示用户u的前 K 个推荐物品集合,较低的 ARP说明模型更倾向于推荐长尾物品,提升推荐的公平性和多样性。
6.2 去偏能力
为了评估去偏差能力,首先根据项目受欢迎程度分为七组进行了实验分析。

此外,通过对不同受欢迎程度的项目进行不同的评估,评估缓解流行度偏差的能力。 将数据集分为“热门项目”(推荐频率前15%)和“长尾”项目。

7 总结
前门调整的实现:1 基于匹配嵌入M生成候选解释 E;2 用户模拟器提供解释反馈 eui;3通过前门调整计算去偏推荐分数。而用户模拟器解释E真实反映用户兴趣,而非流行度偏差,前门调整通过用户模拟器提供的解释反馈来去偏。
相关文章:
WSDM24-因果推荐|因果去偏的可解释推荐系统
1 动机 可解释推荐系统(ERS)通过提供透明的推荐解释,提高用户信任度和系统的说服力,如下图所示,然而: 1:现有工作主要关注推荐算法的去偏(流行度偏差),但未显…...
VScode在Windows11中配置MSVC
因为MSVC编译器在vs当中,所以我们首先要安装vs的一部分组件。如果只是需要MSVC的话,工作负荷一个都不需要勾选,在单个组件里面搜索MSVC和windows11 SDK,其中一个是编译器,一个是头文件然后右下角安装即可。搜索Develop…...
数据库基础二(数据库安装配置)
打开MySQL官网进行安装包的下载 https://www.mysql.com/ 接着找到适用于windows的版本 下载版本 直接点击下载即可 接下来对应的内容分别是: 1:安装所有 MySQL 数据库需要的产品; 2:仅使用 MySQL 数据库的服务器; 3&a…...
cuda-12.4.0 devel docker 中源码安装 OpenAI triton
1,准备 docker 容器 下载docker image: $ sudo docker pull nvidia/cuda:12.6.2-devel-ubuntu20.04 创建容器: sudo docker run --gpus all -it --name cuda_LHL_01 -v /home/hongleili/ex_triton/tmp1:/root/ex_triton/tmp1 nvidia/cuda:12.6…...
doris: Hive Catalog
通过连接 Hive Metastore,或者兼容 Hive Metatore 的元数据服务,Doris 可以自动获取 Hive 的库表信息,并进行数据查询。 除了 Hive 外,很多其他系统也会使用 Hive Metastore 存储元数据。所以通过 Hive Catalog,我们不…...
【LeetCode】131.分割回文串
目录 题目描述输入输出示例及数据范围思路C 实现 题目描述 这道题目来自 LeetCode 131. 分割回文串。 题目描述如下: 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 输入输出示例及数据…...
JeeWMS graphReportController.do SQL注入漏洞复现(CVE-2025-0392)
免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...
基于Python+django+mysql旅游数据爬虫采集可视化分析推荐系统
2024旅游推荐系统爬虫可视化(协同过滤算法) 基于Pythondjangomysql旅游数据爬虫采集可视化分析推荐系统 有文档说明 部署文档 视频讲解 ✅️基于用户的协同过滤推荐算法 卖价就是标价~ 项目技术栈 Python语言、Django框架、MySQL数据库、requests网络爬虫…...
我的工作经历
主要说一下毕业工作大半年了一些心得与想法。 首先是因为本科不好的原因,单2硕士找了一个国企(其实应该说是央企)。也幸好找的是央企,后续工作基本上没有强度,不然后期神经衰弱抑郁症家里乱七八糟催婚的事情能把人逼疯…...
筑牢安全防线:工商业场所燃气泄漏防护新方案
燃气安全是企业经营不可逾越的生命线。在餐饮后厨、化工车间、酒店锅炉房等场所,可燃气体一旦泄漏,极易引发严重事故。如何实现精准监测、快速响应,成为工业及商业领域安全管理的核心诉求。旭华智能深耕安全监测领域,推出的工业及…...
基于STM32的智能停车场管理系统
1. 引言 传统停车场管理存在车位利用率低、停车体验差等问题,难以满足现代城市停车需求。本文设计了一款基于STM32的智能停车场管理系统,通过车位状态实时监测、智能导航与无感支付技术,实现停车资源的高效利用与用户服务的全面升级。 2. 系…...
MacBook 终端中使用 vim命令
在 MacBook 终端中使用 vim 编辑器时,以下是一些常用命令和操作指南: 1. 基本操作 启动 vim vim 文件名 # 打开或创建文件退出 vim 保存并退出: 按 Esc,然后输入 :wq,按 Enter。 不保存退出: 按 Esc&am…...
VoIP之SBC(会话边界控制器)
SBC(Session Border Controller,会话边界控制器)是一种在VoIP通信网络中的重要设备,用于连接处理会话边界,核心功能包含信令代理/媒体代理、网络NAT穿越、防火墙、QoS等。 经典案例 关键说明 用于客户端和核心业务服务器的互联互通支持IP接入控…...
threejs:document.createElement创建标签后css设置失效
vue3threejs,做一个给模型批量CSS2D标签的案例,在导入模型的js文件里,跟着课程写的代码如下: import * as THREE from three; // 引入gltf模型加载库GLTFLoader.js import { GLTFLoader } from three/addons/loaders/GLTFLoader.…...
安装2018版本的petalinux曲折经历
具体操作步骤 1.安装VMware Workstation15.5的虚拟机2.安装Ubuntu16.04.43.配置Ubuntu的环境1.可以复制粘贴的指令2.安装vim 4.准备安装petalinux1.先配置petalinux的安装环境2.替换镜像源1.备份原始的软件源2.从以下镜像点找到合适自己系统版本的源3.执行替换镜像源1.打开源文…...
return和print
目录 1.print的用法 2.return的用法 3. print 和 return 的区别 4.总结 1.print的用法 print 是一个函数,用于将信息输出到控制台(终端)。它主要用于显示程序运行的结果,方便用户查看。print 的作用是输出内容,而不…...
springboot411-基于Java的自助客房服务系统(源码+数据库+纯前后端分离+部署讲解等)
💕💕作者: 爱笑学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm…...
跨平台文件互传工具
一款高效便捷的文件互传工具,支持在线快速传输各种文件格式,无需注册,直接分享文件。适用于个人和团队间的文件共享,跨平台支持,轻松解决文件传输问题。免费的文件传输服务,让你的工作更高效。 gotool...
final 关键字在不同上下文中的用法及其名称
1. final 变量 名称:final 变量(常量)。 作用:一旦赋值后,值不能被修改。 分类: final 实例变量:必须在声明时或构造函数中初始化。 final 静态变量:必须在声明时或静态代码块中初…...
Elasticsearch:使用阿里云 AI 服务进行嵌入和重新排名
作者:来自 Elastic Toms Mura 将阿里云 AI 服务功能与 Elastic 结合使用。 更多阅读,请参阅 “Elasticsearch:使用阿里 infererence API 及 semantic text 进行向量搜索”。 在本文中,我们将介绍如何将阿里云 AI 功能与 Elastics…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
