传统结合行为,基础属性,高级属性等等的side Information的方法会分连续型或离散型嵌入,然后当作一个分factor输入到推荐系统其他的部分中用于加强推荐的效果,最近看到SIGIR20’有两篇针对行为和属性的方法,且都用了Graph来做为解决方案,效果不错。主要是Graph的方法,涉及到图的更新和嵌入知识博主以往的文章已经更新过了,不做赘述。


Multi-behavior Recommendation with Graph Convolutional Networks
这篇文章主要是针对多行为对推荐的重要性。开篇作者就指出:传统的推荐模型仅仅利用一种用户-物品的交互数据,如购买行为,但是在这种单一的购买行为中,一个新用户可能没有任何购买行为的发生,就会产生严重的数据稀疏和冷启动的问题,这时平台可以收集用户的其他容易发生的行为,如浏览、点击和收藏等,这些行为总会有反映用户兴趣的。换句话说,推荐系统应该有能力利用其他类型的行为、辅助行为来帮助预测用户对目标行为的未来交互,即多行为推荐。

研究多行为推荐主要需要克服两点:

  • 多行为的重要性差别。1放入购物车肯定比点击某商品信号要强,所以多行为的重要性不一样。2辅助行为并不比目标行为弱,意思是虽然预测的是点击,但其他行为与其的关系肯定是能增强的。
  • 行为数据中隐含语义之间的关联。某些商品是相似的,某些商品是互补的,用户的行为下是能够发掘的(比如需要买互补的,或者比较类似的)。特别是当没有项目的侧信息如类别或品牌时,项目与项目的关系可以作为揭示协作推荐任务语义的解决方案。

所以作者提出了一个异构图的MBGCN(Multi-Behavior Graph Convolutional Network),模型图如开篇上图,其中的异构是指边表示不同的行为,这些不同的行为连接这user和item。分为4个部分:

  • User Embedding Propagation,用户嵌入特征的学习由产生过不同行为的items聚合。
  • Item Embedding Propagation,项目嵌入特征的学习由产生过不同行为的users聚合。
  • Item-Relevance Aware Item-Item propagation,学习同一行为下特定的items之间的关系。
  • Joint Prediction。得到多层传播后的表示。


User Embedding Propagation。 用户embedding由不同行为对用户的影响决定,先算不同行为对用户的相应权重:
αut=wt⋅nut∑m∈Nrwm⋅num\alpha_{ut}=\frac{w_t \cdot n_{ut}}{\sum_{m \in N_r}w_m \cdot n_{um}}αut=mNrwmnumwtnut其中nutn_{ut}nut是用户u和行为t的行为总数,NrN_rNr是行为种类数,不同行为的权重wtw_twt是自适应学习的(值得注意的是,这个行为的权重是固有关系,博主的理解是不同行为之间的权重是固定的)。然后利用这个权重,对有过交互的item进行聚合:pu,tl=aggregate(qil∣i∈Nt(u))p_{u,t}^l=aggregate(q_i^{l}|i\in N_t(u))pu,tl=aggregate(qiliNt(u))pul+1=W(l)⋅(∑t∈Nrαutpu,tl)p_{u}^{l+1}=W^{(l)} \cdot (\sum_{t \in N_r} \alpha_{ut}p_{u,t}^l)pul+1=W(l)(tNrαutpu,tl)具体过程看上面的图就能很快明白了,不同行为的item先分组聚合,然后按行为权重加权了之后进一步聚合得到用户embedding p。

上图的下班部分是item embedding,它与user不同的是,item应该是静态的,不受用户行为的影响,所以直接mean聚合:
qil+1=W(l)⋅aggregate(pjl∣j∈N(i))q_{i}^{l+1}=W^{(l)} \cdot aggregate(p_j^{l}|j\in N(i))qil+1=W(l)aggregate(pjljN(i))


Item-Relevance Aware Item-Item propagation。 但是前面提到了,需要解决的第二个问题是捕捉items之间的关系,所以item还需要进行一次传播,得到额外的一个在不同行为下的item表示。即被同一个用户都交互了的物品之间存在有特殊的连接。然后同样根据行为的不同重要性,分别计算每个行为下的相关embedding::
sit(l+1)=Wt(l)⋅aggregate(sjt(l)∣j∈NtI(i))s_{it}^{(l+1)}=W^{(l)}_t \cdot aggregate(s_{jt}^{(l)}|j\in N^I_t(i))sit(l+1)=Wt(l)aggregate(sjt(l)jNtI(i))这个操作也可以参考上图,即t1行为之间进行聚合,t2行为之间进行聚合就行。

Joint Prediction。 得到各层的表示直接拼接就行:Pu∗=pu(0)∣∣...∣∣pu(L)P^*_u=p_u^{(0)}||...||p_u^{(L)}Pu=pu(0)∣∣...∣∣pu(L)qi∗=qi(0)∣∣...∣∣qi(L)q^*_i=q_i^{(0)}||...||q_i^{(L)}qi=qi(0)∣∣...∣∣qi(L)sit∗=sit(0)∣∣...∣∣sit(L),t∈Nrs^*_{it}=s_{it}^{(0)}||...||s_{it}^{(L)},t \in N_rsit=sit(0)∣∣...∣∣sit(L),tNr

然后可以做两个预测任务User-based CF Scoring和Item-based CF Scoring。

  • User-based CF Scoring,根据所得到的用户和物品的embedding,做简单的内积。y1(u,i)=pu∗T⋅qi∗y_1(u,i)=p^{*T}_u \cdot q_i^*y1(u,i)=puTqi
  • Item-based CF Scoring,计算与用户u交互的所有物品们与目标物品i的相关性分数(两个item之间被某用户有相同的行为如都购买了会影响到分数)。y2(u,i)=∑t∈NR∑j∈Nt(u)sjt∗T⋅Mt⋅sit∗T∣Nt(u)∣y_2(u,i)=\sum_{t \in N_R} \sum_{j \in N_t(u)} \frac{s^{*T}_{jt}\cdot M_t \cdot s^{*T}_{it}}{|N_t(u)|}y2(u,i)=tNRjNt(u)Nt(u)sjtTMtsitT

最后两者一起作为预测分数:
y(u,i)=λ⋅y1(u,i)+(1−λ)⋅y2(u,i)y_(u,i)=\lambda \cdot y_1(u,i)+ (1-\lambda) \cdot y_2(u,i)y(u,i)=λy1(u,i)+(1λ)y2(u,i)

所以其实对应开头的两个问题,模型要做的事情就是user-item传播层学习行为影响力度,item-item传播层去捕获行为语义,然后两者一起结合预测分数,果然很有何老师写作风格。

Joint Item Recommendation and Attribute Inference: An Adaptive Graph Convolutional Network Approach
接下来的这一篇是联合推荐和属性推理的自适应图卷积网络。

  • 项目冷启动,需要属性的结合。同时用户对项目的行为可以很好地反映用户和项目属性。
  • 属性值往往是不完整的,大多数属性增强推荐算法将推断的属性值作为项目推荐的输入。

由于两者都很稀疏,所以联合建模可以相互增强。接下来我们看看作者是怎么做相互增强的。

Embedding Fusion Layer。 该层主要是融合自由嵌入矩阵(捕获用户or项目的协作潜在表示)+属性嵌入(会循环更新),直接拼接就好:ual,0=[pa,xal×Wu]u^{l,0}_a=[p_a,x_a^l \times W_u]ual,0=[pa,xal×Wu]vil,0=[qi,yil×Wv]v^{l,0}_i=[q_i,y_i^l \times W_v]vil,0=[qi,yil×Wv]

Embedding Propagation Layers。 然后开始传播,直接使用GCN以捕获用户和项目之间的高阶邻近性。值得注意的是User-item是一起传播的(把u和i拼成对角其他为0的大矩阵,然后一起GCN)
A=[R0N×M0M×NRT]A=\left[ \begin{matrix} R & 0^{N \times M} \\ 0^{M \times N} & R^T \end{matrix} \right]A=[R0M×N0N×MRT]
利用这个A一起GCN就行,不做赘述。

Attribute Update Part。 传播完再补充属性,如模型图中的红色部分,先得到预测值用于评分xa′=softmax(ua⋅Wx)x'_a=softmax(u_a \cdot W_x)xa=softmax(uaWx)yi′=softmax(vi⋅Wy)y'_i=softmax(v_i \cdot W_y)yi=softmax(viWy)然后更新属性向量,即用推断的结果自适应地更新缺失的属性值,可用的属性值将保持不变:Xl+1=Xl⋅AX+X′⋅(IX−AX)X^{l+1}=X^l \cdot A^X + X' \cdot (I^X-A^X)Xl+1=XlAX+X(IXAX)Yl+1=Yl⋅AY+Y′⋅(IY−AY)Y^{l+1}=Y^l \cdot A^Y + Y' \cdot (I^Y-A^Y)Yl+1=YlAY+Y(IYAY)


Contrastive Meta Learning with Behavior Multiplicity for Recommendation
补一篇WSDM22的best paper候选,多行为+对比+元学习的一份工作。作者的motivation主要来自:

  • 当前大部分推荐模型往往专注于对 user 和 item 间单一的交互行为进行建模,从而忽略了推荐场景中多行为的交互数据。
  • 但多行为推荐场景中,数据更为稀疏,因此如何有效地迁移辅助行为中有用的信息到目标行为的预测中比较重要。
  • 此外,多行为的交互模式也因人而异的,如何学习不同的用户的基于不同行为的偏好也很重要。

因此作者提出CML推荐模型,其由三个模块组成:

  • i)behavior-aware 消息传递的 GNN。即在同一行为类型下,每个节点都通过 sum pooling 的方式直接从异质节点获取信息(LightGCN)。euk,(l+1)=∑eik,(l);eik,(l+1)=∑euk,(l)e^{k,(l+1)}_u=\sum e^{k,(l)}_i; e^{k,(l+1)}_i=\sum e^{k,(l)}_ueuk,(l+1)=eik,(l);eik,(l+1)=euk,(l)
  • ii)通过多行为建立不同视图,并通过自监督信号使辅助行为帮助稀疏的目标行为的对比学习。即将不同的用户行为作为对比学习中不同的视图。
  • iii)为了有效地建模个性化的多行为关联性,提出一个元对比编码器(meta contrastive encoder)和元学习(meta learning) 训练框架。即将基于元学习的编码器引入到对比学习框架中,从而实现用户个性化的多行为信息聚合。

paper:https://arxiv.org/pdf/2202.08523.pdf
code:https://github.com/weiwei1206/CML.git
website:https://sites.google.com/view/chaoh

用户行为和属性用于推荐系统问题(MBGCN,AGCN,CML)相关推荐

  1. ICML 2019 | 强化学习用于推荐系统,蚂蚁金服提出生成对抗用户模型(附论文下载链接)...

    选自arXiv 作者:Xinshi Chen.Shuang Li.Hui Li.Shaohua Jiang.Yuan Qi.Le Song 机器之心编译 参与:李诗萌.shooting 将强化学习用于 ...

  2. 图神经网络用于推荐系统问题(PinSage,EGES,SR-GNN)

    针对推荐系统的稀疏性问题,图方法还真的很适合. 推荐系统中存在很多的图结构,如二部图,序列图,社交关系图,知识语义图等 GNN比传统的随机游走等有更好的表现 PinSage和EGES都是很好的落地实践 ...

  3. Chat-REC、InstructRec(LLM大模型用于推荐系统)

    当众多chat-xxx和xxxGPT喷涌而出的时候,博主就在等它被做到推荐系统的这一天.本篇博文将简要看看一些文章的具体做法. Chat-REC: Towards Interactive and Ex ...

  4. 知识图谱用于推荐系统问题(MKR,KTUP,KGAT)

    前一篇文章介绍了知识图谱用于推荐系统问题(CKE,RippleNet),这一篇博文目整理对KG和RC融合的更加深入的两篇文章MKR,KTUP.MKR利用一个Cross单元使两者融合,KTUP则是相互补 ...

  5. 乔治亚理工提出基于GAN的强化学习算法用于推荐系统

    Generative Adversarial User Model for Reinforcement Learning Based Recommendation System Xinshi Chen ...

  6. 一文综述用于推荐系统的所有深度学习方法

    在信息泛滥的时代,如何快速高效地萃取出有价值信息成为了人们的当务之急,传统的推荐系统由此应运而生:而在诸多领域硕果累累的深度学习也被应用于推荐系统,为后者注入新的动力.机器之心编译的这篇论文,对于深度 ...

  7. 获取AD用户和OU属性字段名称

    网上找的貌似不全 其它可用字段,我试了一下,见下表(不全): 用户帐户属性 字符名"常规"标签 说明 姓 Sn 名 Givename 英文缩写 Initials 显示名称 disp ...

  8. 除了数据属性,Vue 实例还提供了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。

    实例 <div id="vue_det"> <h1>site : {{site}}</h1> <h1>url : {{url}}&l ...

  9. 如何批量修改AD用户的Email属性

    一朋友咨询我如何批量修改AD用户的Email属性, 写了个批处理来实现. 大致分为两步:  1. 导出要设置Email属性的用户  2. 设置Email属性 先把脚本内容贴一下: 1 2 3 4 5 ...

最新文章

  1. 模型(Model)– ASP.NET MVC 4 系列
  2. shell脚本 8种字符串截取的方法
  3. 解决ifconfig命令未找到
  4. 【分布式】分布式事务解决方案概述
  5. if condition 大于_小函数,大用处!巧用AND函数,避开IF函数嵌套
  6. 三星S7 android操作系统耗电,2K屏手机玩游戏耗电大、性能渣?三星S7:呵呵
  7. mysql实习报告总结_MySQL上机实习报告(一)
  8. 基于jquery的tab切换
  9. LVS负载均衡集群服务搭建详解(一)
  10. 新道电子沙盘系统_电子沙盘系统在房地产开发与销售过程中的优势
  11. how to send blogs to wordpress through the windows live writer
  12. python判断字符类型例题_Python面试题:字符类型的考察
  13. Shell子程序结构,函数
  14. 网络编程+Socket+UDP+TCP+三次握手四次挥手
  15. 神经网络加速器的兴起
  16. git 分支关系图谱讲解
  17. JIRA Service Desk获得 ITIL 认证
  18. Galaxian 小蜜蜂
  19. Innovation - Face++ - 当人脸识别遇上互联网
  20. 关于SpringCloud,Spring容器重复初始化的问题

热门文章

  1. IaaS、PaaS和SaaS通俗易懂版
  2. 典型的微型计算机系统总线组成,第13章 总线与微型计算机系统的结构.ppt
  3. 重生之我是计算机网络
  4. 在计算机应用领域中cam的中文含义是什么,[单选] CAM是计算机应用领域中的一种,其含义是()...
  5. 使用vb6.0编写的随机生成双色球中奖号码(预测)
  6. Excel如何在混合文本中提取数字
  7. 《自然语言处理实战入门》 第三章 :中文分词原理及相关组件简介 ---- 语言学与分词技术简介
  8. 几何画板如何用描点法画二次函数
  9. python 量化投资【1】技术指标择时macd、ATR、RSI、KDJ等
  10. re.compile()示例