论文《Causal Inference for Recommender Systems》阅读

论文《Causal Inference for Recommender Systems》阅读

  • 论文概况
  • 论文动机(Introduction)
  • Methodology
    • Preliminaries
    • Classical Causal Inference & Causal Adjustment
    • Deconfounded Recommender
  • 总结

论文概况

今天给大家带来的是发表在推荐系统顶会 RecSys 2020 上的文章《Causal Inference for Recommender Systems》,文章聚焦 推荐系统中 曝光 (exposure) 和 评分(rating)之间的偏差问题,通过因果推断,完成了模型 Deconfounded Recommder

论文动机(Introduction)

在 Intro 部分,作者着重强调了当前主流推荐系统的不合理的地方,即
推荐系统推荐的核心是:用户看了电影以后会如何评分? 但这实际上是不经济不合理的,因为实际上应该给用户推荐的是用户没看过但是想去看的物品。

作者形象地将这一问题比喻为临床试验,相当于随机地给患者(用户)进行诊断(电影的曝光),然后要求患者对诊断给出反应(评分)。

这一现象的核心在于,一般用户看电影是有目的去看的,那么根据用户看过的电影的评分去判断用户喜好这一行为本身就是存在bias的。驱使用户去看某一点用的出发点,可能是电影导演,可能是电影类型,更多情况下,可能是没法儿测量的。

针对上述问题,作者提出了 deconfounded recommender模型,基于矩阵分解模型去除 unobserved confounder 。作者首先将作者对物品的交互分成两步:(1)曝光 exposure;(2)评分 rating。
由于用户只能对看过的电影进行打分,即评分这一行为是有偏的,这一行为将 exposure 和 rating 耦合在一起。后续的操作也是根据这两个步骤具体进行操作的。

Methodology

Preliminaries

作者使用 a u i a_{ui} aui 作者是否用户对物品进行了评分, y u i ( 1 ) y_{ui}(1) yui(1) 用于表示 用户 u u u 在看过 电影 i i i 的情况下给出的评分( y u i ( 1 ) ≠ 0 y_{ui}(1) \neq 0 yui(1)=0 当且仅当 用户看过之后且进行了评分)。 y u i ( 0 ) y_{ui}(0) yui(0) 表示用户 u u u 没看过电影 i i i(一般情况下, y u i ( 0 ) = 0 y_{ui}(0) = 0 yui(0)=0 )。

作者将数据集分成两部分:
(一)曝光数据集(binary,非0即1),具体形式表现为: { a u i , u = 1 , 2 , ⋯ , U , i = 1 , 2 , ⋯ , I } \{a_{ui}, u = 1, 2, \cdots, U, i=1, 2, \cdots, I\} {aui,u=1,2,,U,i=1,2,,I} 用于表示用户是否看过电影。
(二)评分数据集,具体为 { y u i f o r ( u , i ) s u c h t h a t a u i = 1 } \{y_{ui} \ for (u, i)\ \mathrm{such\ that \ a_{ui} = 1 } \} {yui for(u,i) such that aui=1}

推荐系统预测目标应该为 针对 a u i = 0 a_{ui} = 0 aui=0 ( u , i ) (u,i) (u,i),预测 y u i ( 1 ) y_{ui}(1) yui(1) 并推荐影片。即给未交互用户物品对预测评分。

针对上述目标,给出对应的矩阵分解模型如下:
y u i ( a ) = θ u ⊤ β i ⋅ a + ϵ u i , ϵ u i N ( 0 , σ 2 ) , (1) y_{ui}(a) = \boldsymbol{\theta}_u^\top \boldsymbol{\beta}_i \cdot a + \epsilon_{ui}, \qquad \epsilon_{ui} ~ \mathcal{N}(0, \sigma^2), \tag{1} yui(a)=θuβia+ϵui,ϵui N(0,σ2),(1)
a = 1 a=1 a=1,均值为 θ u ⊤ β i \boldsymbol{\theta}_u^\top \boldsymbol{\beta}_i θuβi。当 a = 0 a=0 a=0,分布为标准正态分布。

Classical Causal Inference & Causal Adjustment

作者这里提出一个 Ignorability(可忽略性?不知道怎么翻比较合适),要求对于任意用户 u u u,满足 { y u ( 0 ) , y u ( 0 ) } ⊥ ⁣ ⁣ ⁣ ⁣ ⊥ a u \{\mathbf{y}_{u}(0), \mathbf{y}_{u}(0)\} \perp\!\!\!\! \perp \mathbf{a}_{u} {yu(0),yu(0)}au,其中, y u ( a ) = ( y u 1 ( a ) , y u 2 ( a ) , ⋯ , y u I ( a ) ) \mathbf{y}_{u}(a)=( y_{u1}(a), y_{u2}(a), \cdots, y_{uI}(a) ) yu(a)=(yu1(a),yu2(a),,yuI(a))
a u = ( a u 1 , a u 2 , ⋯ , a u I ) \mathbf{a}_{u} = (a_{u1}, a_{u2}, \cdots, a_{uI}) au=(au1,au2,,auI)

上述要求即保证电影 i i i 是否 曝光给 用户 u u u,用户给出的对应评分都应与用户的观影历史无关。

矩阵分解一类的方法显然是无法做到的。

那么如何去偏呢?作者给出方案,假设我们得到一个针对每个用户的confounder w u \mathbf{w}_u wu,那么就可以满足 { y u ( 0 ) , y u ( 0 ) } ⊥ ⁣ ⁣ ⁣ ⁣ ⊥ a u ∣ w u \{\mathbf{y}_{u}(0), \mathbf{y}_{u}(0)\} \perp\!\!\!\! \perp \mathbf{a}_{u} \mid \mathbf{w}_u {yu(0),yu(0)}auwu。对于预测,则相应改为下式:
y u i ( a ) = θ u ⊤ β i ⋅ a + η ⊤ w u + ϵ u i , ϵ u i N ( 0 , σ 2 ) , (2) y_{ui}(a) = \boldsymbol{\theta}_u^\top \boldsymbol{\beta}_i \cdot a + \boldsymbol{\eta}^{\top}\mathbf{w}_u + \epsilon_{ui}, \quad \epsilon_{ui} ~ \mathcal{N}(0, \sigma^2), \tag{2} yui(a)=θuβia+ηwu+ϵui,ϵui N(0,σ2),(2)

这一过程需要得到所有用户的 confounder w u \mathbf{w}_u wu,这显示是做不到的。

Deconfounded Recommender

由上面的内容,作者提出了 去混淆推荐模型 (Deconfounded Recommender, DCR)。

作者利用 曝光 数据计算 不可观测的 Confounder w u \mathbf{w}_u wu
这一过程被称为 多重因果推理 (multiple causal inference)。假设对于用户 u u u 对 任意物品 i ∈ I i \in I iI 的曝光数据 a u i a_{ui} aui 作为一个 treatment,那么针对一个用户,就包含 I I I 个 treatment。 y u ( 1 ) \mathbf{y}_{u}(1) yu(1) 作为输出,是一个 I I I 维向量,只有部分评分数据能够观测。因此,作者利用 泊松分解(Poisson Factorization, PF)拟合 曝光数据,并填补空白数据,用于去掉bias。具体如下:
a u i ∣ π u , λ i ∼ Poisson ⁡ ( π u ⊤ λ i ) , ∀ u , i , (3) a_{u i} \mid \pi_u, \lambda_i \sim \operatorname{Poisson}\left(\pi_u^{\top} \lambda_i\right), \forall u, i,\tag{3} auiπu,λiPoisson(πuλi),u,i,(3)
其中, π u ∼ i i d Gamma ⁡ ( c 1 , c 2 ) and  λ i ∼ iid  Gamma ⁡ ( c 3 , c 4 ) \pi_u \stackrel{i i d}{\sim} \operatorname{Gamma}\left(c_1, c_2\right) \text { and } \lambda_i \stackrel{\text { iid }}{\sim} \operatorname{Gamma}\left(c_3, c_4\right) πuiidGamma(c1,c2) and λi iid Gamma(c3,c4),即拟合数据得到由 π u \pi_u πu λ i \lambda_i λi 控制的泊松分布曲线。根据曲线,就可以计算得到符合分布的重新计算的曝光矩阵 a ^ \hat{\mathbf{a}} a^,如下所示:
a ^ u i = E P F [ π u ⊤ λ i ∣ a ] . (4) \hat{a}_{u i}=\mathbb{E}_{\mathrm{PF}}\left[\pi_u^{\top} \lambda_i \mid a\right].\tag{4} a^ui=EPF[πuλia].(4)

将补充得到的去偏的评分数据 a ^ \hat{\mathbf{a}} a^ 融入PMF模型,得到新的预测函数如下:
y u i ( a ) = θ u ⊤ β i ⋅ a + γ u ⋅ a ^ u i + ϵ u i , ϵ u i ∼ N ( 0 , σ 2 ) , (5) y_{u i}(a)=\theta_u^{\top} \beta_i \cdot a+\gamma_u \cdot \hat{a}_{u i}+\epsilon_{u i}, \quad \epsilon_{u i} \sim \mathcal{N}\left(0, \sigma^2\right), \tag{5} yui(a)=θuβia+γua^ui+ϵui,ϵuiN(0,σ2),(5)
这里, γ u \gamma_u γu 是 用户 u u u 混淆因子 的 宏参系数。

进一步地,在PMF的基础上,作者重新设计outcome函数如下:
y u i ( a ) ∼ p ( ⋅ ∣ m ( θ u ⊤ β i , a ) , v ( θ u ⊤ β i , a ) ) , y_{u i}(a) \sim p\left(\cdot \mid m\left(\theta_u^{\top} \beta_i, a\right), v\left(\theta_u^{\top} \beta_i, a\right)\right), yui(a)p(m(θuβi,a),v(θuβi,a)),
其中, m ( θ u ⊤ β i , a ) m\left(\theta_u^{\top} \beta_i, a\right) m(θuβi,a)表示均值, v ( θ u ⊤ β i , a ) v\left(\theta_u^{\top} \beta_i, a \right) v(θuβi,a)表示方差。
上式可以改成多种形式,包括概率分布形式,weighted MF,PMF等。

具体地,作者使用下式作为主要的 output 函数:
y u i ( a ) ∼ p ( ⋅ ∣ m ( θ u ⊤ β i , a ) + γ u a ^ u i + β 0 , v ( θ u ⊤ β i , a ) ) . y_{u i}(a) \sim p\left(\cdot \mid m\left(\theta_u^{\top} \beta_i, a\right)+\gamma_u \hat{a}_{u i}+\beta_0, v\left(\theta_u^{\top} \beta_i, a\right)\right) . yui(a)p(m(θuβi,a)+γua^ui+β0,v(θuβi,a)).

函数整体流程如算法所示:
Algorithm

总结

本文从 反事实推理 的角度出发,通过将 exposure 和 rating 进行区分,将推荐系统中基于矩阵分解的 explicit rating 模型进行了优化。

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

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

相关文章

使用Spring Boot自定义注解 + AOP实现基于IP的接口限流和黑白名单

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

IDEA启动jsp项目

1、背景 有个老项目的前端需要修改,整来源码之后发现是比较古老的jsp项目,需要在idea中启动下试试 2、代码配置流程 常规的配置流程网上都有 2.1 首先找到Project Structure 2.2 配置web.xml 注意下方的 web resource directory, web.xml中的写的相对…

Markdown 使用技巧之利用 Mermaid 进行绘制流程图

文章目录 前言一、基础语法1.1 声明图像类型1.2 声明排列方向1.3 声明节点1.4 声明节点形状1.5 声明节点间的连接1.5.1 基本连接线1.5.2 调整链接的长度1.5.3 调整链接的样式二、流程图-进阶使用2.1 自定义节点样式2.2 自定义形状大小2.3 自定义链接样式2.4 视图分组三、使用场…

校园安保巡逻机器人

2023年8月5日,陕西西安一高校实验室起火冒烟,导致学校化学实验室发生火灾。2022年8月3日,一名歹徒持械闯入江西吉安安福县城的一家私立幼儿园,对着无辜的幼儿行凶伤人,造成3死6伤。 像这样的事故有不断地发生&#xf…

161.二叉树:在每个树中找最大值(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

C语言王国——杨氏矩阵

目录 1. 引言 2. 了解杨氏矩阵 3. 思路分析 4. 代码 5. 总结 1. 引言 最近在做二维数组的训练的时候发现了一个很有意思的题: 一看这不是杨氏矩阵嘛,接下来就由姜糖我带大家了解一下这个著名的矩阵。 2. 了解杨氏矩阵 通过查阅百度得知: …

python数据分析——datetime数据类型1

参考资料:活用pandas库 1、python的datetime对象 # 导入datetime对象 from datetime import datetime# 获取当前日期和时间 nowdatetime.now() print(now)# 手动创建datetime t1datetime.now() t2datetime(1970,1,1) # 对datetime做数学运算 difft1-t2 print(diff…

儿童节快乐!探索图形化编程桌面的“童年”成长之路

在这个充满童真与快乐的儿童节,我要向在CSDN平台上努力拼搏的每一位朋友,送上我最热切、最深情的祝福!愿你们心中那份孩童般的纯真与对世界无尽的好奇永不褪色,愿你们的人生道路如同这个美好的节日,流光溢彩、欢乐永恒…

lynis安全漏洞扫描工具

Lynis是一款Unix系统的安全审计以及加固工具,能够进行深层次的安全扫描,其目的是检测潜在的时间并对未来的系统加固提供建议。这款软件会扫描一般系统信息,脆弱软件包以及潜在的错误配置。 安装 方式1 git下载使用git clone https://github…

docker compose完成简单项目部署

1. 项目环境 centos7 docker mysql redis ruoyi项目 ruoyi项目链接:https://gitee.com/y_project/RuoYi-Vue.git 2. 进行项目前后端代码打包 后端打包: 修改mysql连接的相关配置文件 RuoYi-Vue/ruoyi-admin/src/main/resources/application-dru…

浙江零排参加全国水科技大会暨技术装备成果展览会(成都)并作主论坛演讲

2024年5月13日-15日中华环保联合会、福州大学、上海大学等联合举办的2024年全国水科技大会暨技术装备成果展览会在成都顺利举办。浙江零排城乡规划发展有限公司司受邀参加,首日有幸听取徐祖信院士、任洪强院士、汪华林院士等嘉宾的主旨报告。主旨报告后,…

Java过滤特殊空格nbsp;

现象: 用Java处理excel文件中的以下字符串时,想去除此空格,却发现用String.trim()没有直到预期效果: 原因: 在网上找了下,应该是这其实是html中经常使用的一种特殊空格字符  处理&a…

第八十九周周报

学习目标: 论文 学习时间: 2024.05.25-2024.05.31 学习产出: 一、论文 SAN: INDUCING METRIZABILITY OF GAN WITH DISCRIMINATIVE NORMALIZED LINEAR LAYER 将GAN与切片最优输运联系起来,提出满足方向最优性、可分离性和单射…

DBeaver连接Elasticsearch

一、下载DBeaver 二、连接: 1、一定要选择开源的 Open Distro Elasticsearch 2、填写地址: 3、选择“URL”,将https改为http 否则会报SSL错误 4、测试连接

C语言 | Leetcode C语言题解之第123题买卖股票的最佳时机III

题目&#xff1a; 题解&#xff1a; #define max(a, b) ((a) < (b) ? (b) : (a))int maxProfit(int* prices, int pricesSize) {int buy1 -prices[0], sell1 0;int buy2 -prices[0], sell2 0;for (int i 1; i < pricesSize; i) {buy1 max(buy1, -prices[i]);sell…

与牢霍沟通——Linux操作系统原理

硬件层 计算机由何组成&#xff1f; 我们现在手中的计算机&#xff0c;无论配置如何&#xff0c;是笔记本还是台式&#xff0c;都由三部分构成&#xff1a; 输入设备&#xff1a;键盘&#xff0c;鼠标...中央处理器&#xff1a;cpu&#xff0c;显卡&#xff0c;磁盘...输出设…

Vue 框选区域放大(纯JavaScript实现)

需求&#xff1a;长按鼠标左键框选区域&#xff0c;松开后放大该区域&#xff0c;继续框选继续放大&#xff0c;反向框选恢复原始状态 实现思路&#xff1a;根据鼠标的落点&#xff0c;放大要显示的内容&#xff08;内层盒子&#xff09;&#xff0c;然后利用水平偏移和垂直偏…

14-alert\confirm\prompt\自定义弹窗

一、认识alert\confirm\prompt 下图依次是alert、confirm、prompt&#xff0c;先认清楚长什么样子&#xff0c;以后遇到了就知道如何操作了。 二、alert操作 先用driver.switch_to.alert方法切换到alert弹出框上&#xff1b;可以用text方法获取弹出的文本信息&#xff1b;acce…

Spring Cloud | 客户端 “负载均衡器“ : Ribbon

目录: 1. 什么是 "负载均衡" ? ( 通过 "负载均衡" 可以将 "用户请求" "分发" 到 不同的服务器&#xff0c;以此来提高 "性能" 和 "可靠性" )2. "负载均衡" 的 分类 &#xff1f;3. 认识 Ribbon :3.1 R…

【蓝桥杯国赛】动态规划

“动态规划”在蓝桥杯中的出题类型&#xff0c;主要为两种&#xff0c; 要格外注意&#xff0c;每一次 dp 的迭代更新&#xff0c;都是针对于当前位置下的“所有情况”进行的&#xff0c; 应着眼于当前位置的每一种情况。 类型一&#xff1a;一共有多少种情况&#xff1f; 1…