《Graph Neural Networks for Social Recommendation》
1、问题和任务描述
给出两种图结构:
- user-item交互图:一般推荐任务都会给,已经有很多模型给出了建模方案,例如LightGCN
- user-user关系图:一般是从社交网络中提取,可以给出朋友关系/亲密度
问题:假设朋友之间会有相似的喜好,通过user-user关系图中的朋友关系来强化当前user的embedding。
任务:预测缺失的用户评分(rating prediction)。
2、GraphRec
2.0 数据结构
- user-item交互图:和之前的不同之处在于,行是user,列是item,边权重为用户对item的评分:整型值rating「1,2,3,4,5」;0表示没有进行评分。
- user-user关系图:1代表边有连接关系,0表示没有。
- 表示原始user embedding, 表示原始item embedding,表示rating embedding。
2.1 item -->(aggr) user
类似一般user-item图中,user对邻居item进行聚合的操作,得到。不同之处是加入了rating embedding的GAT。
表示用户和商品的交互表示,为rating embedding,可以视为边的表示:
(MLP)
表示(邻居)商品对用户的注意力权重:
user聚合邻居item得到表示:
| 问题 | 解释 |
|---|---|
| 为什么先算出 然后再计算注意力系数的时候才和 拼接?而不是直接在计算注意力系数的时候拼接 ? | 把item的表示和rating的表示看做一个整体,user聚合的是“物品的评分”的表示。 |
2.2 user -->(aggr) user (关键)
user-user图中,根据2.1中生成的,user对邻居user的进行聚合,得到。
和concat后过一个MLP得到。
| 问题 | 解释 |
|---|---|
| 为什么计算注意力系数的时候把 和 拼接?而不是把 和 拼接?或者把 和 拼接? | 表示当前user(目标节点)的原始表示,表示邻居user在2.1中聚合item后生成的表示(代表邻居user o的潜在兴趣);在计算注意力系数的过程中,希望既能保留user本身的表示,又能用到邻居user的潜在兴趣。 |
2.3 user -->(aggr) item
和2.1一样,就是item和user颠倒了一下,换了一下字母。。得到item的表示。
2.4 predict
和concat后过一个MLP得到最终的预测分数。
2.5 loss
MSE loss:
符号表:
3、实验
3.1 数据集
社交推荐数据集:和一般的推荐数据集相比,有rating和social connection。
3.2 评估指标
评分推荐指标:
- MAE:平均绝对误差,数值越小越好
- RMSE:均方根误差,数值越小越好
3.3 baseline
未用到social recommend:(协同过滤)
- PMF
- NeuMF
- ...
用到social recommend:
- DeepSoR
- GCMC+SN:用node2vec生成原始的user embedding。GNN方法
3.4 实验结果
和baseline的比较:
消融实验:
- GraphRec-SN:去掉user-user社交网络那一部分,性能降低
- GraphRec-Opinion:去掉评分embedding(),性能降低很多