S-MBRec学习笔记

1 动机

  • 传统推荐系统一般只考虑购买行为,忽略了放入购物车、浏览行为;
  • 本文将购买、放入购物车、浏览三个行为一起考虑;
  • 考虑购买和放入购物车行为的差异,进行对比学习;
  • 考虑购买和浏览行为的差异,进行对比学习。
    在这里插入图片描述

2 相关工作

主要有图神经网络(GNN)和多行为推荐(Multi-behavior recommendation)两个方面。

2.1 图神经网络(GNN)

  • NGCF [Wang et al., 2019]:在推荐中提出了一种空间 GNN (spatial GNN);
  • LightGCN [He et al., 2020]:学习用户和商品的编码;

2.2 多行为推荐

  • [Chen et al., 2020a; Wang et al., 2021]:增加了辅助行为;
  • [Jin et al., 2020]:基于异质网络heterogeneous graph;
  • MB-GMN [Xia et al., 2021b]:赋予用户-项目交互学习以发现依赖于类型的行为表示的能力,从而自动提取行为异质性和交互多样性以进行推荐。

总结现有的多行为推荐方法,没有考虑捕捉多行为的共性,数据稀疏的问题依然存在。

3 主要算法

在这里插入图片描述

算法主要分为三个部分:

  • (1) 利用GCN对三个行为进行编码;
  • (2) 对用户和商品分别进行编码;
  • (3) 利用对比学习(Contrastive Learning)来建立购买和放入购物车行为之间的差异、购买和浏览行为之间的差异。

3.1 GCN编码三个行为

在这里插入图片描述
数据说明:

  • GGG:包含购买、放入购物车、浏览三个行为的原始数据集;
  • G1G_1G1:用户和购买关系图;
  • G2G_2G2:用户和放入购物车关系图;
  • G3G_3G3:用户和浏览关系图。
    算法流程:
  • 通过LightGCN对三个行为进行初始化编码。

3.2 用户和商品编码

在这里插入图片描述

对用户进行编码:

  • 利用用户uuu的购买、放入购物车、浏览三个行为的编码,对用户uuu进行编码:
    eu=σ{W(∑k=1Kauk∗xuk)+b}(1)\boldsymbol{e}_{\boldsymbol{u}}=\sigma\left\{\boldsymbol{W}\left(\sum_{k=1}^{K} a_{u k} * \boldsymbol{x}_{\boldsymbol{u} \boldsymbol{k}}\right)+\boldsymbol{b}\right\} \tag1 eu=σ{W(k=1Kaukxuk)+b}(1)
    auka_{u k}auk:用户uuu的行为kkk对应的权重;
    xuk\boldsymbol{x}_{\boldsymbol{u} \boldsymbol{k}}xuk:用户uuu在行为kkk下的编码,来源于XU1,XU2,XU3X_{U1}, X_{U2}, X_{U3}XU1,XU2,XU3
    W\boldsymbol{W}Wb\boldsymbol{b}b:神经网络的权重和偏置;
  • 计算auka_{u k}auk:分子为单个行为,分母为三个行为的加权累加和。
    auk=exp⁡(wk∗nuk)∑m=1Kexp⁡(wm∗num)(2)a_{u k}=\frac{\exp \left(w_{k} * n_{u k}\right)}{\sum_{m=1}^{K} \exp \left(w_{m} * n_{u m}\right)} \tag2 auk=m=1Kexp(wmnum)exp(wknuk)(2)
    wkw_{k}wk:行为kkk的下标,作者用的是一个全局的变量,所用用户采用的同一个值,比如购买是0.5,放入购物车是0.3,浏览是0.2;
    nukn_{u k}nuk:用户uuu在行为kkk下的物品个数,比如张三购买了2个商品,将3个商品放入购物车,浏览了5个商品;

对商品进行编码:利用多层感知机将第iii个商品在行为kkk下的编码拼接起来。
ei=g{Cat⁡(xik)}(3)\boldsymbol{e}_{\boldsymbol{i}}=g\left\{\operatorname{Cat}\left(\boldsymbol{x}_{\boldsymbol{i k}}\right)\right\} \tag3 ei=g{Cat(xik)}(3)

3.3 对比学习(Contrastive Learning)

在这里插入图片描述

  • 计算用户购买和放入购物车之间的差异、用户购买和浏览之间的差异:
    Lsst−k′user=∑u∈U−log⁡∑u+∈Uexp⁡{(xu1)Txu+k′/τ)}∑u−∈Uexp⁡{(xu1)Txu−k′/τ}(4)\mathcal{L}_{s s t-k^{\prime}}^{u s e r}=\sum_{u \in U}-\log \frac{\left.\sum_{u^{+} \in U} \exp \left\{\left(\boldsymbol{x}_{\boldsymbol{u} \boldsymbol{1}}\right)^{T} \boldsymbol{x}_{\boldsymbol{u}^+\boldsymbol{k}^{\prime}} / \tau\right)\right\}}{\sum_{u^{-} \in U} \exp \left\{\left(\boldsymbol{x}_{\boldsymbol{u} \boldsymbol{1}}\right)^{T} \boldsymbol{x}_{\boldsymbol{u}^{-} \boldsymbol{k}^{\prime}} / \tau\right\}} \tag4 Lsstkuser=uUloguUexp{(xu1)Txuk/τ}u+Uexp{(xu1)Txu+k/τ)}(4)
    k′k^{\prime}k:有两个取值,分别为2和3,2代表放入购物车,3代表浏览;
    u+u^{+}u+u−u^{-}u:以用户uuu为基础,找到用户uuu的正用户集和负用户集,PMIP M IPMI值大于某个阈值为正,小于某个阈值为负,计算方法如下:
    PMI(u,u′)=log⁡p(u,u′)p(u)p(u′)p(u)=∣I(u)∣∣I∣p(u,u′)=∣I(u)∩I(u′)∣∣I∣(5)\begin{array}{c} P M I\left(u, u^{\prime}\right)=\log \frac{p\left(u, u^{\prime}\right)}{p(u) p\left(u^{\prime}\right)} \\ p(u)=\frac{|I(u)|}{|I|} \\ p\left(u, u^{\prime}\right)=\frac{\left|I(u) \cap I\left(u^{\prime}\right)\right|}{|I|} \end{array} \tag5 PMI(u,u)=logp(u)p(u)p(u,u)p(u)=II(u)p(u,u)=II(u)I(u)(5)
    τ\tauτ:温度参数,作者取的是1。
  • 计算商品被购买和放入购物车之间的差异、商品被购买和浏览之间的差异,计算方法与用户类似。

3.4 损失函数

总的损失函数如下:
L=Lst+λLsst+μ∥Θ∥22(6)\mathcal{L}=\mathcal{L}_{s t}+\lambda \mathcal{L}_{s s t}+\mu\|\Theta\|_{2}^{2} \tag6 L=Lst+λLsst+μ∥Θ22(6)
第一项为BPR Loss:
Lst=∑(u,i,j)∈O−log⁡{σ(euTei−euTej)}(7)\mathcal{L}_{s t}=\sum_{(u, i, j) \in O}-\log \left\{\sigma\left(e_{u}^{T} e_{i}-e_{u}^{T} e_{j}\right)\right\} \tag7 Lst=(u,i,j)Olog{σ(euTeieuTej)}(7)

  • eue_ueu:用户uuu的编码;
  • eie_iei:用户uuu购买过、或放入购物车、或浏览过的商品编码;
  • eje_jej:用户uuu未购买过、或未放入购物车、或未浏览过的商品编码,作者在代码里面选的64个未产生过行为的商品

第二项为对比学习产生的Loss:
Lsst=∑k′=2K(Lsst−k′user+Lsst−k′item)(8)\mathcal{L}_{s s t}=\sum_{k^{\prime}=2}^{K}\left(\mathcal{L}_{s s t-k^{\prime}}^{u s e r}+\mathcal{L}_{s s t{-k^{\prime}}}^{i t e m}\right) \tag8 Lsst=k=2K(Lsstkuser+Lsstkitem)(8)

  • Lsst−k′user\mathcal{L}_{s s t-k^{\prime}}^{u s e r}Lsstkuser:同公式(4);
  • Lsst−k′item\mathcal{L}_{s s t{-k^{\prime}}}^{i t e m}Lsstkitem:商品的Loss。

参考文献

[1] Self-supervised Graph Neural Networks for Multi-behavior Recommendation
[2] 源代码:https://github.com/GuShuyun/MBRec

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

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

相关文章

小米5点位图_最新!地铁5号线、6号线部分车站文化墙设计出炉!你选哪个?

情忆汉长安、惊鸿游龙、星辰大海……这些绝美的名字属于地铁文化墙近日西安地铁5号线和6号线一期工程的6座车站文化墙设计方案新鲜出炉邀请广大市民乘客对文化墙设计进行投票并提出宝贵建议西安地铁“一站一景”一直以来,西安地铁因其“一站一景”的独立logo设计、精…

python import io_Python——python3的io读写

前言:python2中的StringIO经常被用来作字符串的缓存,尤其是处理图片验证码的处理,近期牵扯tornado项目升级python3,简单学习了下python3中的io操作;因为StringIO的一些接口和文件操作是一致的,也就是说同样…

python 编辑距离_最小编辑距离python

1 什么是编辑距离 在计算文本的相似性时,经常会用到编辑距离(Levenshtein距离),其指两个字符串之间,由一个字符串转成另一个所需的最少编辑操作次数。在字符串形式上来说,编辑距离越小,那么两个…

php 清空一个数组_php如何删除一个数组

php如何删除一个数组2020-07-10 01:16:35php删除一个数组的方法:1、使用unset函数删除一个数组元素,且保持原有索引不变;2、使用“array_splice”函数删除一个数组元素,不保持索引;3、使用“array_diff”函数&#xff…

asp多表查询并显示_MySQL多表查询与事务

回顾1. DQL单表高级查询条件 where比较运算逻辑运算符in关键字between关键字if null关键字like关键字% 多个任意字符_ 单个任意字符排序 order byascdesc聚合函数count(*) 统计行,包括null值maxminavgsum分组 group by 分组字段 having 分组后条件过滤分页 limit 开…

pyqt按钮关闭窗口_PyQt5按钮单击事件,退出程序

1.注意项:当使用QPushButton.clicked.connect(lambda:self.信号槽方法)。connect方法传参数时,需要加上“lambda:”2.步骤:添加一个按钮 self.button1 QPushButton(按钮上的文本)。创建水平布局对象QHBoxLayout,并使用setWidget方…

Bias and Debias in Recommender System: A Survey and Future Directions学习笔记

1 引言 2006-2020发表的有关推荐系统去偏的论文统计: 2 推荐系统的偏差 偏差发生在推荐系统的不同阶段: 用户交互到生成数据的阶段: – 选择偏差: – 一致性偏差(从众偏差): – 曝光偏差&a…

卡扇区数据教程_分享一款硬盘分区和数据恢复软件

最近有朋友留言,自己的硬盘被格式化了,没法恢复。今天给大家介绍一款解决硬盘恢复软件--DiskGenius,文末附下载地址,觉得有用点个在看吧。DiskGenius是一款功能非常强大的硬盘分区及数据恢复软件,算法精湛、功能强大&a…

名图1.8智能隐藏功能_7年后再度回归 全新一代名图“大”不同_搜狐汽车

本文车型速览除了文章作者的主观观点外,我们正尝试基于全网可查的客观数据,为您提供中立、客观的参考依据:本文部分车型速览:畅销车型质量排行top10展开微信扫码,直接一次看完附近所有城市低价(附近城市均有经销商可售…

文本图像增强及opencv应用实例

1 文本图像增强简介 文本图像增强应用场景:扫描电子图像、图像去背景、去噪点、文字增强等;传统图像处理的方法:滤波锐化、形态学处理等,利用opencv就可以操作;基于深度学习的方法:风格迁移、超分重构等。2 基于opencv的文本图像增强算法之一 利用传统图像处理方式对文本…

3 vue 线条箭头_线条眉要如何处理才能更自然?

更多纹绣内容关注公众号:法米索半永久学堂。眉头的操作确实不是一件容易的事,都说万事开头难,很多纹绣师把握不好眉头的操作技巧,一不小心就会把眉头做的方了、圆了,总之就是非常不自然。但只要我们把眉头做好了&#…

文本图像增强文献调研

1 角度矫正 https://blog.csdn.net/weixin_39133209/article/details/127754001 https://zhuanlan.zhihu.com/p/370145715 https://blog.csdn.net/m_buddy/article/details/81463234 https://blog.csdn.net/weixin_42869334/article/details/123348328 https://www.codenong.c…

Jenkins Job 迁移小妙招【jenkins-cli】

文章目录 jenkins-cli 入门jenkins-cli 使用方法 1:使用 ssh 访问 jenkins第 1 步:认证第 2 步:查看支持的命令第 3 步:构建 job 案例方法 2:使用 cli 客户端 访问 jenkins第 1 步:下载 jar第 2 步:使用 cli 客户端查看所有选项客户端连接模式两种方式的对比迁移案例【基…

git rebase用法_Git:Clone别人的代码之后push到自己码云上失败的解决办法

最近也是刚开始使用gitee,比较生疏。场景是这样的:clone了朋友的一份代码到自己的本地,然后自己想把它保存到自己的gitee 私有仓库上,就在gitee上面创建了一个私有的仓库,然后多次push都失败了,实践了网上提…

fpga板子怎么和电脑连_windows7台式电脑怎么连接路由器?台式win7电脑连路由器步骤...

相信还有许多在使用windows7系统,尽管使用很长一段时间了,不过对win7系统的一些功能还是不太了解。大家家里应该都有路由器,那么windows7台式电脑怎么连接路由器,下面我们就一起来看看台式win7电脑连接路由器步骤。win7台式电脑连…

文本检测及识别小组周报

1 Huang L的工作 https://blog.csdn.net/qq_44950283/article/details/127739829 OCR小组会议纪要 2022/11/12 任意形状文本检测 1、特征提取:输入图片通过共享卷积得到共享特征Fs 2、边界建议模型使用Fs,得到先验特征Fp(包括分类图、距离场图、方向场…

python回车换行怎么不行_使用Python编写换行符时避免写入回车'\r'

如果考虑到carriage return \r和line feed \nPython 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>…

英特尔核显自定义分辨率_让免费的核显更好用!英特尔酷睿集成的GPU如何优化?...

点击上方电脑爱好者关注我们在笔记本领域,无论是英特尔酷睿还是AMD锐龙,都采取了“买一赠一”的策略,即都在处理器内集成了性能还不赖的核显,虽然它们无法驾驭3A游戏大作,但应对《英雄联盟》级别的游戏还是不成问题的。…

TextBPN:Adaptive Boundary Proposal Network for Arbitrary Shape Text Detection学习笔记

1 动机 领域:任意形状的文本检测目的:不需要后处理,直接学习到任意形状文本的边界。 2 相关工作 3 算法分析 算法分为两个部分: 边界建议模型(a boundary proposal model):我的理解是这个部分先给出一个大致的边界…