Social Recommendation with Strong and Weak Ties 学习笔记

本文探讨了在线社交网络中强弱联系对推荐系统的重要性,提出了一种基于BPR模型的TBPR模型,区分强弱联系以提高推荐准确性。通过Jaccard系数估计联系强度,并使用EM算法学习用户和物品的潜在特征向量。实验结果显示,这种方法在预测准确率上优于现有模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


困惑1:对joint物品的排序顺序,为什么在最前面?

摘要

随着在线社交网络的爆炸式增长,人们已经广泛的意识到社交信息对推荐系统是非常有用的。社交推荐方法能够很好的应对冷启动问题,因此可以大幅度提升预测准确性。凭借直觉,我们还可以得知,在社交关系的影响下,用户很容易和他们朋友消费过的东西建立联系。尽管已经有很多人研究社交推荐,但是很少有人把注意力放在强联系和弱联系上,这两个是社交科学中被充分证明的两个概念。在这篇文章中,我们判别社交推荐中强弱联系的影响,我们使用邻居重复数去估计联系的强度,并且结合BPR模型去判别联系的强弱。我们提出了一种基于EM模型的判别社交网络中的强弱联系算法根据最优推荐准确率去学习用户和物品的潜在特征向量。我们在真实数据集上进行实验,并且发现我们提出的方法比现有模型在准确性上有了显著的提升。

介绍

首先介绍了一些常用的社交推荐方法,比如显式反馈中使用CF协同过滤算法,在隐式反馈中pariwise排序算法效果更好。这种算法主要学习用户喜好中物品的排序。BPR(Bayesian Personalized Ranking)框架结构是一种非常基础的pairwise排序方法。一言以蔽之,算法的核心思想就是根据用户比起没有观察结果的物品更喜欢有观察结果的物品这个基本假设然后去学习一个个性化排序。这里,一个被观察的物品代表着用户消费了这个物品,所以我们在文中交替使用这两个词,在论文1中作者证明了很多评分方法都可以融入BPR模型去学习排序方法,包括矩阵分解。
推荐系统中一个经常需要面对的问题就是数据稀疏,因为物品很多,但是用户通常只会消费很少的一部分。一个更困难的问题就是当新用户加入系统时,因为没有历史信息所以要面临冷启动问题。其中zhao等人剔除出了Social BPR(SBPR)模型,去假设在所有没有观察数据的物品中,用户更喜欢和他们有社交联系的人消费过的物品。Q&A场景中社交联系的强弱,但是据我们所知,还没有人在推荐系统中研究社交联系的强弱,但是社交联系的强弱会严重影响推荐质量。在 Granovetter 非常有影响力的一篇文章2中,他介绍了不同的社交联系,强联系、弱联系、缺失联系,并且得出弱联系是新信息在社交网络传播的主要原因的结论。在接下来的访查[^22]中他又发现很多人找到工作的信息其实来源于他的弱联系而不是强联系。
这些现象让我们想去探究在社交推荐中区分强弱联系是不是能对推荐结果进行改善。但是我们面临着两个主要问题:1、怎么在给定的社交网络中去区别强弱联系。社交领域中有这么一个双值定义:强联系是仅仅由两个人之间的交互关系决定,和剩余网络部分无关,比如Granovetter用联系的频率去区分强弱联系,这是简单又符合直觉的,但是这个需要用户的活跃数据,但是因为安全和因素保护的问题,这个数据很难在在线社交网络中获取。 2、假定我们分类正确,我们怎么把这个关系融入现有的排序方法中去改善推荐准确性。
本文中我们直面这些困难,我们首先采用了一个网络拓扑结构中固有的一个特征Jaccard系数来计算连接强度。直觉的,Jaccard系数捕捉了用户朋友圈中的重合度。我们的选择被一个大型移动电话图同意,我们认为当联系大于一个判决门限时就是强联系,否则就是弱联系。
接下来我们拓展了BPR模型,并且提出了一个统一的学习框架结果,最终完成了两个任务(1)根据最优推荐准确性分类强弱联系(2)利用强弱联系建立了一个排序模型。我们采用Expectation-Maximization algorithm(EM算法)去学习社交联系和其他参数模型包括用户和物品的隐藏特征向量。我们在是个真实数据集上的实验证明了我们的方法的优越性。
总体来说,我们做了以下贡献:

  • 我们意识到强弱联系在社交领域的作用,并且提出应该把这个重要概念融入社交推荐中。

  • 根据强弱联系我们在BPR模型中提出了一个更细粒度的分类方法。

  • 我们使用EM算法去学习最优判决门限和其余参数在我们的扩展的BPR模型中。

  • 我们在实际数据集中验证了我们的方法,在预测准确率和召回率上都优于其他模型。

在我们的认知中,这是第一篇在社交推荐中明显区别了强弱联系并把他们融进去提升推荐结果的文章。
我们先来定义一下本文研究的问题,在一个推荐系统中,用户集合 U U U,物品集合 I I I,并且有一个用户之间的社交网络,是一个无向图 G = ( u , e ) G = (u,e) G=(u,e),其中 u ∈ U u \in U uU代表每个独立的用户,边 ( u , v ) ∈ e (u,v) \in e (u,v)e代表了用户 u u u和用户 v v v之间的连接,我们知道每个用户 u u u的消费的物品的集合,我们的任务就是去生成一个个性化推荐列表(是所有物品的排序之和)。

2 相关工作

社交媒体中的社交联系
在社交科学中社交联系已经被广泛研究了。上述研究中没有人把社交联系引入推荐系统,换句话说,已存的社交推荐中,并没有人考虑了不同的社交联系。
社交推荐
简言之,社交推荐的目的就是应用信任和影响去解决冷启动问题,新用户因为没有反馈数据所以没有办法采用传统CF模型进行推荐的原因。Jamali 等人发现在Epinions数据集中,大约50%的数据都是冷启动用户(评分物品少于5个)。但是大多数方法都是针对显式反馈系统,但是收效甚微。
最近,Zhao等人扩展了BPR模型3,通过假定对于所有未观察过的物品,相对于其它物品一个用户会更喜欢和他有社交联系的人消费过的物品(在后文中我们称之为社交物品)。在他们的SBPR模型中,对于每一个用户 u u u,对于每一个自己消费过的物品 i i i和社交物品 j j j之间的相对喜好是被消费商品 j j j的用户 u u u的链接数量衰减的。也就是说,越多联系消费了 j j j商品,在用户 u u u的眼里,商品 i i i j j j之间的差别越小。他们同样讨论了替代情况,相反的假设是社交商品比起非社交商品能够收到更多负面信息。他们的实验证明这种替代的SBPR模型和前一种SBPR模型相比,效果并不是那么好。我们和SBPR模型不同的是我们通过添加正交的社交意识进入BPR模型。特别的,我们意识到区分强弱联系的重要性,并且通过引入这种区分扩展了BPR模型。主要的不同点在于对于社交物品的排序上。在SBPR模型中,社交物品是通过消费的人的数量进行排序的,但是在我们的模型中,排序是给予联系种类的。我们的实验结果表明我们的新模型比SBPR模型和vanilla BPR模型在预测准确率上更好。

3 强弱联系

强弱联系的理论第一次被Granovetter2提出,在人际交往中,强联系意味着亲密的朋友之间会有更高频率的交互行为,但是弱联系就意味着泛泛之交。在网络结构中,强联系通常会在一个密集的子图中聚集(比如图1之中的 ( u , v , w ) (u,v,w) (u,v,w) ( x , y , z ) (x,y,z) (x,y,z)),弱联系通常是连接两个不同部分的桥(比如图1中的(u,x))。
在这里插入图片描述
首先,我们认为节点 u u u如果不违背以下条件:用户 u u u有两个强联系 v v v w w w,但是 v v v w w w之间没有边连接,则满足强三元闭包性质。进而,如果一个节点 u u u满足这个性质并且有至少两个强联系,那么本地桥一定是个弱连接。【本地桥定义:如果删除 ( u , v ) (u,v) (u,v)这条边回导致 u , v u,v u,v之间的路径距离一定大于等于3.】
因为弱联系不属于同一个社交圈是非常容易理解的,因为他们有不同的信息源,因此信息交互回包含更多的信息。把这个观点应用到社交推荐中,我们的观点就是被弱联系朋友消费的物品对这个用户会更有吸引力。比如,一个研究用很难从他亲密的合作伙伴中发现新的有趣的论文,因为他们通常专注于同样的话题,并且会看差不多类型的论文。相反的他会从更少合作的伙伴中引用的论文中发现更有趣的东西。
为了把强弱联系应用到社交推荐中,我们首先需要定义怎么去计算联系的强度,然后去分类联系。这里存在很多的可能性,首先就像第一部分提到的,社会学家使用动态评估法比如交互的频率,但是由于我们缺乏必要的数据,这个方法没办法实施。
我们从社区发现中寻找到了可替代的方法。首先先采用社区发现算法去把网络图 G = ( u , e ) G = (u,e) G=(u,e)划分成不同的子图。然后对于每一个边 ( u , v ) ∈ e (u,v)\in e (u,v)e,如果 u u u v v v属于同一个子图,这个连接就被定义为强连接,否则就定义为一个弱连接。但是还是存在一个关键性问题,尽管已经有了很多社区发现算法,但是并没有一个公认的黄金准则。也就是说,如果这个划分是一个不好的,社交系统很难判断这是一个不好的输入,也就是说推荐质量会依赖于一个外来的社区发现算法,并且这个算法推荐系统没办法控制,所以说这种方法是不受欢迎的。
考虑到上述所有事实,我们求助于节点相似矩阵,衡量两个节点在网络中邻居的重叠数。Onnela等人的研究4用实验证明了这个基本假设是正确的。他们发现(1)本地网络结构在一定程度上决定了联系的强度。(2)两个用户的联系越强,他们共同的朋友越多。此外,和交互交互不同,节点相似性是网络结构固有属性,不需要其它数据去计算。此外,和基于社交发现的算法不同的是,我们仍然可以选择对推荐系统最有用的联系分类方法。
更具体的说,我们采用了Jaccard系数,一种简单的评估方法,有效的捕捉了用户之间的重叠性。用 s t r e n g t h ( u , v ) strength(u,v) strength(u,v)代表每一个 ( u , v ) ∈ e (u,v)\in e (u,v)e的链接强度,我们有
(1) s t r e n g t h ( u , v ) = ∣ N u ∩ N v ∣ ∣ N u ∪ N v ∣ ( J a c c a r d ) strength(u,v)= \frac{|N_u\cap N_v|}{|N_u\cup N_v|}(Jaccard) \tag 1 strength(u,v)=NuNvNuNv<

### 图注意力网络在社交推荐系统中的应用 #### 高阶邻居信息传播的重要性 为了提高社交推荐系统的准确性,利用图结构数据来捕捉用户之间的复杂交互至关重要。高阶邻居信息传播能够帮助模型更好地理解用户的兴趣偏好及其在网络中的位置[^1]。 #### 基于GAT的高阶邻居信息传播机制 Graph Attention Networks (GAT) 使用自注意机制来聚合来自不同距离邻居的信息。具体来说,在每一层中,节点不仅会考虑其直接连接的一阶邻居,还会通过多跳传播获取更远层次上的二阶甚至更高阶邻居的影响。这种设计允许模型自动学习哪些级别的邻接关系最为重要,并赋予相应的权重[^2]。 ```python import torch import torch.nn.functional as F from torch_geometric.nn import GATConv class HighOrderGAT(torch.nn.Module): def __init__(self, in_channels, out_channels): super(HighOrderGAT, self).__init__() self.gat_conv_1 = GATConv(in_channels, 8, heads=8, dropout=0.6) self.gat_conv_2 = GATConv(8 * 8, out_channels, concat=False, dropout=0.6) def forward(self, data): x, edge_index = data.x, data.edge_index # First layer captures first-order neighbors' features. x = F.dropout(x, p=0.6, training=self.training) x = F.elu(self.gat_conv_1(x, edge_index)) # Second layer aggregates higher order neighborhood info. x = F.dropout(x, p=0.6, training=self.training) x = self.gat_conv_2(x, edge_index) return F.log_softmax(x, dim=1) ``` 此代码片段展示了如何构建一个多层GAT架构用于处理社交网络中的节点特征。通过堆叠多个`GATConv`层,可以实现对高阶邻居的有效信息传递和融合[^3]。 #### 应用场景实例分析 在一个典型的社交平台环境中,假设存在大量用户以及他们之间形成的互动链接构成的社会图谱。当某位新加入的朋友发布了新的动态后,其他好友可能会受到不同程度的关注度变化;而这些影响又可能进一步扩散到他们的朋友那里。借助GAT的强大表达能力,算法可以在训练过程中逐渐掌握此类模式并作出精准预测,从而优化个性化内容推送服务体验[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值