Page 421 - 《软件学报》2025年第9期
P. 421
4332 软件学报 2025 年第 36 卷第 9 期
∑
(r u,i − ¯r u )·(r v,i − ¯r v )
i∈I uv
(2)
w uv = √ √
∑ ∑
( ) 2 ( ) 2
r u,i − ¯r u r v,i − ¯r v
i∈I uv i∈I uv
其中, w u 表示用户 u 和用户 v 的相似度, r u, 是用户 u 对项目 i 的评分, r v, 是用户 v 对项目 i 的评分, ¯ r u 和 ¯ r v 分别
i
i
v
为用户 u、v 交互项目的平均评分, I u 表示用户 u、v 均交互的项目集. 可利用同样方法获取项目间的相似度.
v
在跨域推荐场景中, 需考虑不同域间的关系, 为更好地整合不同域间的信息, 本文引入并改进 Louvain 算法,
以获取不同域间的用户关系和项目关系, 从而实现域间社区聚类. 模块度作为相似度社区划分的度量方法, 取值范
围为 [−0.5, 1], 其计算如公式 (3) 所示.
∑ ∑ 2
in
tot
∑
c c
Q = − (3)
c∈C 2m 2m
∑ ∑
其中, Q 表示模块度, C 表示社区集, m 是社区网络所有边权重和, in 表示社区 c 内部边权重和, tot 表示与社
c c
区 c 中节点相连边的权重和.
在聚类过程中, Louvain 算法采用模块度增益来动态调整聚类结果, 通过将节点移入使模块度增益达到最大的
邻居社区, 此时总体社区网络模块度达到最大, 相似度社区划分也呈现最佳效果, 如公式 (4) 所示.
∑ ∑ ∑ 2 ∑ ∑ 2 ∑ ∑
in tot in tot tot
+ (
w uv +w u ) 2 w uv ∗w u
c c c c c
v∈c w u v∈c
= (4)
∆Q u→c = − − − −
−
2m
2
2m 2m 2m 2m 2m
2m
∑
其中, w uv 表示社区 c 内部与节点 u 关联边的权重和, w u 表示所有与 u 关联边的权重和, 即 u 的权重.
v∈c
然而, Louvain 算法无法很好地适应不同域间的聚类, 我们考虑使用重叠用户作为联合域的桥梁, 对该算法加
以改进. 为充分利用域间关系并发挥重叠用户的作用, 本文提出伪重叠判定机制, 其原理是通过相似度判断机制扩
大重叠用户面积. 例如, 假设用户 u 为重叠用户, 而非重叠用户 v 与之存在高度相似性, 则可认为 v 也近似为重叠
用户, 以此方式扩大重叠用户面积, 最终使得重叠用户面积最大化, 如公式 (5) 所示.
∑
∑
tot
w uv ∑
c ∗w u
v∈c o
− +λ w uv , v ∈ U
2
2m 2m v∈c
(5)
∆Q u→c = ∑
∑
tot
w uv ∗w u
c
v∈c o
, v < U
−
2m 2m 2
o
其中, U 表示重叠用户集, λ 为重叠用户权重.
通过公式 (5), 形成重叠面积最大化的伪重叠用户社区, 充分利用更新后的伪重叠用户信息, 使得面向单个网
络的 Louvain 算法可通过伪重叠用户社区连接双域网络. 基于伪重叠判定机制的聚类方法具体实施如下.
在初始阶段, 每个用户被视为一个社区. 先随机选择初始节点, 然后对每个节点分别进行如下操作, 并多次
迭代.
步骤 1. 计算所有节点模块度增益. 对于节点 u, 计算将 u 从目前所在社区移入每个邻居节点所在社区 c 所产
生模块度增益 ∆Q. 首先, 源域、目标域中的用户向量被随机初始化为同一维度, 将这些域中的用户向量视为用户
联合域 ST ∈ R d∗(|S |+|T|) , 并将其作为 Louvain 算法的输入; 其次, 利用域间用户相似度并结合 Louvain 聚类算法获得
初步社区结果; 最后, 由于社区聚类涉及多个数据域, 信息量过大, 为减少聚类偏差, 采用模块度增益来动态调整聚
类结果.
在对 u 的所有邻居节点计算完成后, 将 u 移入能获得最大 ∆Q 的社区, 若 ∆Q 不为正, 则节点 u 保留在原社
区中.
步骤 2. 基于社区聚类结果构建超图. 每个社区被压缩成一个带有自环边的超节点, 该自环边的权重为社区内
部权重和. 超节点间边的权重为两两社区中节点间的边权重和.

