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 编辑距离_最小编辑距离python

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

python脚本式编程_Python编程入门(一)

Python编程入门(一)概述:编程语言 1.脚本编程语言★脚本编程语言如php,perl,python,java等为脚本编程语言,通常需要通过解释器解释运行。 ★python(java)程序的执行过程s…

for循环里面有异步操作_JS 线程与异步的那些事

已知,JavaScript 是单线程的,天生异步,适合 IO 密集型,不适合 CPU 密集型,但是,为什么是异步的喃,异步由何而来的喃,我们将在这里逐渐讨论实现。一、进程与线程1. 浏览器是多进程的它…

FDRNet: Fourier Document Restoration for Robust Document Dewarping and Recognition学习笔记

1 广告 这篇工作由字节跳动商业化技术团队与新加坡南洋理工大学合作完成。 话不都说,先看效果: FDRNet的效果看上去有点好,可惜没有源代码提供。 2 相关工作 2.1 几何形变恢复方法Geometric Document Restoration 由相机传感器捕获的文档…

通讯可以并联吗_工业控制知识:吃透RS485通讯的连接方式,接485总线就简单多了...

RS485被广泛使用,可以支持ModBus协议。由于其简单、价优、可靠和成熟,因此,被广泛应用于工业控制、智能仪器和电力通信。我们来看看RS485的一个典型组网结构:理论上,RS485总线的传输距离可以达到1200米。然而&#xff…

python编程a的x次方_「Python 面试」第四次更新

阅读本文大约需要 5 分钟。 15.说一说 GIL 前面有提到由于 Python 基于 C 语言编写的解释器中设置了一个 GIL 全局变量锁,该锁使得 Python 的多线程在处理 CPU 计算密集型任务时,同一时刻只能有一个线程在运行,这也是为什么说 Python 的多线程…

Exploiting Vector Fields for Geometric Rectification of Distorted Document Images学习笔记

1 广告 [1] Exploiting Vector Fields for Geometric Rectification of Distorted Document Images 利用矢量场对变形文档图像进行几何校正。 2018年发表在ECCV会议上的一篇非深度学习的文档去扭曲。 本文提出了一种对手持相机捕获的扭曲文档图像进行几何校正的无分段方法。…

java 单元测试_在springboot中写单元测试解决依赖注入和执行后事务回滚问题

往期文章「Java并发编程」谈谈Java中的内存模型JMM面试官:说说你知道多少种线程池拒绝策略为什么不要在MySQL中使用UTF-8编码方式前言很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标&…

java编译_解析 Java 即时编译器原理。

↑ 点击上面 “时代Java”关注我们,关注新技术,学习新知识!一、导读常见的编译型语言如C,通常会把代码直接编译成CPU所能理解的机器码来运行。而Java为了实现“一次编译,处处运行”的特性,把编译的过程分成…

ios nsstring根据ascii码大小排序_iOS(NSPredicate) 谓词的使用

参考iOS-谓词的使用详解NSPredicate 谓词NSPredicateA definition of logical conditions used to constrain a search either for a fetch or for in-memory filtering.一种逻辑条件的定义,可以根据定义的模糊查询条件,对内存对象进行过滤搜索。1.比较运…

恒位油杯故障原因_抽油烟机常见故障及处理方法

您知道抽油烟机常见故障及处理方法是什么吗?抽油烟机通电后不能启动,可能是因为电源线断路或接头脱焊,仔细查出断路点或脱焊点,重新焊牢。通断开关断路或触点接触不良,检查断路器处是否焊好,若触点接触不良…