(TKDE 2023)GDSRec: Graph-Based Decentralized Collaborative Filtering for Social Recommendation

GDSRec: Graph-Based Decentralized Collaborative Filtering for Social Recommendation

(TKDE 2023)

采用数据集:

在这里插入图片描述

源码:https://github.com/MEICRS/GDSRec

一、提出问题

​ 现有的基于图的推荐算法没有考虑到用户或者物品的评分偏好,比如说,一个挑剔的用户给一个物品较低的评分并仅仅是因为这个用户不喜欢这个物品,而是因为这个用户喜欢给物品打低分。而且,用户之间的社交关系应该随着用户相似度的不同而有着不同的强弱属性,因此更相似的用户在图卷积中的相互影响更大。

二、解决方案

​ 首先根据静态的数据信息计算出每个用户对每个物品的偏置评分,然后赋予这个偏置评分一个embedding向量,将其与用户或者物品embedding融合后再进行训练。对于用户之间的社交连接,给了一个简单但是有效的评判其强弱的方式,提出了模型GDSRec。

三、具体过程

在这里插入图片描述

1. 社交边强弱评定

​ 对于每一条社交边,根据其连接用户评分的相似度来判定该社交边的强弱,公式如下:
T i j = 1 + ∑ v k ∈ { R ( u i ) ∩ R ( u j ) } I ( ∣ r i k − r j k ∣ ≤ δ ) T_{ij}=1+\sum_{v_k\in\{R(u_i)\cap R(u_j)\}}I(|r_{ik}-r_{jk}|\leq \delta) Tij=1+vk{R(ui)R(uj)}I(rikrjkδ)
​ 其中, R u i R_{u_i} Rui R u j R_{u_j} Ruj表示用户 u i u_i ui u j u_j uj交互过的物品, r i k r_{ik} rik r j k r_{jk} rjk表示用户对物品 k k k的评分, δ \delta δ为阈值,评分差小于该阈值认定是相似的,后续试验证明当 δ \delta δ取1时效果最好, I ( x ) = 1 I(x)=1 I(x)=1表示当x满足条件,反之为0。

2. 用户model

​ 为了考虑到用户的评分偏好,将评分偏好表示为一个向量,首先计算出用户对物品的评分差异:
r ‾ i j = ⌈ ∣ r i j − E ( v j ) ∣ ⌉ \overline{r}_{ij}=\lceil|r_{ij}-E(v_j)|\rceil rij=rijE(vj)
E ( v j ) E(v_j) E(vj)表示物品 v j v_j vj的平均评分,采用了一个查找表,一个评分差异对应一个embedding表示为 s r ‾ i j \mathbf{s}_{\overline{r}_{ij}} srij,采用了向上取整是因为采用小数不方便(小数是无尽的),为了得到用户最终的向量,采用了如下公式:
h u i = T a n h ( W ⋅ G I ( { x i l , ∀ v l ∈ R ( u i ) } ) + b ) \mathbf{h}_{u_i}=\mathrm{Tanh}(\mathbf{W}\cdot G_I(\{\mathbf{x}_{il},\forall v_l\in R(u_i)\})+\mathbf{b}) hui=Tanh(WGI({xil,vlR(ui)})+b)

x i l = L U ( [ q v l ⊕ s r ‾ i j ] ) \mathbf{x}_{il}=L_U([\mathbf{q}_{v_l}\oplus \mathbf{s}_{\overline{r}_{ij}}]) xil=LU([qvlsrij])

​ 其中, x i l \mathbf{x}_{il} xil表示用户交互过的物品向量与用户的偏置评分向量的融合, L U L_U LU表示多层感知机, G I G_I GI表示物品的聚合操作:
G I ( { x i l , ∀ v l ∈ R ( u i ) } ) = ∑ v l ∈ R ( u i ) η i l x i l G_I(\{\mathbf{x}_{il},\forall v_l\in R(u_i)\})=\sum_{v_l\in R(u_i)}\eta_{il}\mathbf{x}_{il} GI({xil,vlR(ui)})=vlR(ui)ηilxil
η i l \eta_{il} ηil为注意力网络产生的权重参数。

3. 注意力网络

​ 注意力网络采用一个两层的神经网络:
η ⋅ i l = W 2 T ⋅ R e L U ( W 1 ⋅ [ x i l ⊕ p u i ] + b 1 ) + b 2 \overset{\cdot}{\eta}_{il}=\mathbf{W}_2^T\cdot \mathrm{ReLU}(\mathbf{W}_1\cdot[\mathbf{x}_{il}\oplus\mathbf{p}_{u_i}]+\mathbf{b}_1)+\mathbf{b}_2 ηil=W2TReLU(W1[xilpui]+b1)+b2
​ 归一化:
η i l = e x p ( η ⋅ i l ) ∑ v l ∈ R ( u i ) e x p ( η ⋅ i l ) \eta_{il}=\frac{exp(\overset{\cdot}{\eta}_{il})}{\sum_{v_l\in R(u_i)}exp(\overset{\cdot}{\eta}_{il})} ηil=vlR(ui)exp(ηil)exp(ηil)

4. 物品model

​ 对于物品 v j v_j vj的表示,根据每个对该物品交互过的用户,对应的也有一个评分偏置:
r ‾ i j = ⌈ ∣ r i j − E ( u i ) ∣ ⌉ \overline{r}_{ij}=\lceil|r_{ij}-E(u_i)|\rceil rij=rijE(ui)
​ 然后将该评分偏置对应的embedding与对应的用户embedding通过一个多层感知机结合:
y j k = L I ( [ p u k ⊕ s r ‾ k j ] ) \mathbf{y}_{jk}=L_I([\mathbf{p}_{u_k}\oplus \mathbf{s}_{\overline{r}_{kj}}]) yjk=LI([puksrkj])
​ 因此最终的物品向量表示为:
h v j = T a n h ( W ⋅ G U ( { y j k , ∀ u k ∈ R ( v j ) } ) + b ) \mathbf{h}_{v_j}=\mathrm{Tanh}(\mathbf{W}\cdot G_U(\{\mathbf{y}_{jk},\forall u_k\in R(v_j)\})+\mathbf{b}) hvj=Tanh(WGU({yjk,ukR(vj)})+b)

G U ( { y j k , ∀ u k ∈ R ( v j ) } ) = ∑ u k ∈ R ( v j ) ϵ j k y j k G_U(\{\mathbf{y}_{jk},\forall u_k\in R(v_j)\})=\sum_{u_k\in R(v_j)}\epsilon_{jk}\mathbf{y}_{jk} GU({yjk,ukR(vj)})=ukR(vj)ϵjkyjk

​ 采用注意力机制:
ϵ ⋅ j k = W 2 T ⋅ R e L U ( W 1 ⋅ [ y j k ⊕ q v j ] + b 1 ) + b 2 \overset{\cdot}{\epsilon}_{jk}=\mathbf{W}_2^T\cdot \mathrm{ReLU}(\mathbf{W}_1\cdot[\mathbf{y}_{jk}\oplus\mathbf{q}_{v_j}]+\mathbf{b}_1)+\mathbf{b}_2 ϵjk=W2TReLU(W1[yjkqvj]+b1)+b2

5. 社交model

​ 这个模块与用户model的过程相似,主要作用是帮助用户做后续的评分预测用。

6. 评分预测

​ 预测评分表示为:
r ^ i j = 1 2 [ E ( u i ) + E ( v j ) ] + f ( u i , v j ) \hat{r}_ {ij}=\frac{1}{2}[E(u_i)+E(v_j)]+f(u_i,v_j) r^ij=21[E(ui)+E(vj)]+f(ui,vj)
E ( u i ) E(u_i) E(ui) E ( v j ) E(v_j) E(vj)表示用户 u i u_i ui和物品 v j v_j vj的平均评分, f ( u i , v j ) f(u_i,v_j) f(ui,vj)表示如下。采用了与用户相邻的用户对物品的评分做辅助:
f ( u i , v j ) = 1 2 ( r i j p + ∑ u k ∈ N ( u i ) λ i k r k j p ) f(u_i,v_j)=\frac{1}{2}(r_{ij}^p+\sum_{u_k\in N(u_i)}\lambda_{ik}r^p_{kj}) f(ui,vj)=21(rijp+ukN(ui)λikrkjp)
​ 其中
λ i k = T i k ∑ u k ∈ N ( u i ) T i k \lambda_{ik}=\frac{T_{ik}}{\sum_{u_k\in N(u_i)}T_{ik}} λik=ukN(ui)TikTik
​ 为了计算用户与物品之间的评分,采用三层神经网络:
z 1 = T a n h ( W 1 ⋅ [ h u i ⊕ h v j ] + b 2 ) \mathbf{z}_1=\mathrm{Tanh}(\mathbf{W}_1\cdot[\mathbf{h}_{u_i}\oplus \mathbf{h}_{v_j}]+\mathbf{b}_2) z1=Tanh(W1[huihvj]+b2)

z 2 = T a n h ( W 2 ⋅ z 1 + b 2 ) \mathbf{z}_2=\mathrm{Tanh}(\mathbf{W}_2\cdot \mathbf{z}_1+\mathbf{b}_2) z2=Tanh(W2z1+b2)

r i j p = w T ⋅ z 2 r^p_{ij}=\mathbf{w}^T\cdot\mathbf{z}_2 rijp=wTz2

四、实验结果

在这里插入图片描述

​ 60%指训练集、验证集和测试集比例为6:2:2,80%指训练集、验证集和测试集比例为8:1:1。

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值