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. 基于社区聚类结果构建超图. 每个社区被压缩成一个带有自环边的超节点, 该自环边的权重为社区内
                 部权重和. 超节点间边的权重为两两社区中节点间的边权重和.
   416   417   418   419   420   421   422   423   424   425   426