Page 425 - 《软件学报》2025年第9期
P. 425

4336                                                       软件学报  2025  年第  36  卷第  9  期



                 13. End For
                 14. For  c ∈ C // 更新社区集并计算模块度
                            ∑      ∑ 2
                               in    tot  
                               c     c  
                 15.   Q ← Q+   −       ;
                                       
                             2m     2m  
                 16.   C ← C ∪{c};
                       ′
                           ′
                 17. End For
                 18. Print  C  and Q; // 输出社区集和模块度
                         ′
                 19. For  u ∈ c // 重构相似度矩阵, 见公式  (6)
                 20.  For  v ∈ c∩v , u
                                ∑
                 21.    w = w uv +β  (w uk +w vk ),(k , u∩v)∩(w uk ∩w vk );
                        ′
                        uv
                                   k∈c
                 22.  End For
                 23. End For
                 /* 多层循环  GCN  模块 */
                 24. For  u ∈ U,i ∈ I // 分别聚合用户/项目节点与相应邻居节点
                                1
                               − 2 ˆ
                                    1
                                      (k)
                                         (k)
                                   − 2
                 25.    X (k+1)  = ϖ(D WD X F ); // 生成节点嵌入, 见公式  (7)
                                              
                             < x (k+1) × F 1 , x (k+1)  × F 2 > 
                            
                 26.   a (k+1)  = σ    u    i   ; // 生成用户-项目偏好权重, 见公式  (8)
                                               
                            
                                               
                      ui      (k+1)   (k+1)  
                            
                              x u  × F 1 |x  × F 2 |
                                       i
                 27.   θ ui (k) = αa (k−1)  +(1−α)θ ui (k −1) // 阈值动态调整, 见公式  (9)
                             ui
                        (k)
                 28.  If  a < θ ui (k) then // 对偏好权重进行动态剪枝, 见公式  (10)
                        ui
                        (k)
                 29.    a = 0;
                        ui
                 30.  End If
                 31. End For
                              (k)
                       (0)
                 32.  x = x ∥ ... ∥ x ∥ ... ∥ x (K−1) ; // 聚合节点的  K  层嵌入, 见公式  (11)
                                        [
                                  )
                                            (
                        (
                                 S
                                              O O
                                                          S
                                S
                                                    S
                                     O
                    S
                          O O
                 33.  z = σ V x +V x ⊙ x + 1−σ V x +V x S  )]  ⊙ x ;
                                        [
                                  )
                                            (
                        (
                    T
                                 T
                 34.  z = σ V x +V x ⊙ x + 1−σ V x +V x T  )] ⊙ x ;
                                     O
                                              O O
                                                          T
                                                    T
                          O O
                                T
                 //生成源域/目标域节点组合特征, 见公式          (12)
                 /* 模型预测模块 */
                         (L)
                                             (L)
                             (L)
                                    (L)
                 35.  φ (L)  = ϖ (G φ (L−1) +h ), ˆy = f(φ ); // 获得源域/目标域的预测得分概率, 见公式  (13)、(14)
                                        ui
                 36. Output   ˆ y ; // 输出源域/目标域的最终预测得分概率
                          ui
                 End
                    在算法   1  中, 第  1–23  行是伪重叠判定机制模块, 通过伪重叠判定机制对用户聚类得到社区集和模块度, 并以
                 此重新构建相似度矩阵; 第        24–34  行是多层循环   GCN  模块, 其中第   24–32  行利用多层动态    GCN  获得域特有和域
                 共享节点嵌入, 第     32–34  行通过  4  个门控神经单元聚合得到源域和目标域的用户、项目组合特征向量; 第                      35–36
                 行是模型预测模块, 使用       MLP  得到不同域用户的最终预测项目得分概率.
                    源域和目标域损失函数被定义为预测得分和实际得分的交叉熵, 如公式                        (15) 所示.

                                               ∑        (       (    )  (    ))
                                                         S
                                                                    S
                                                              S
                                          L S = −        y log ˆy + 1−y log 1− ˆy S  ,
                                                  (u,i)∈Ω + ∪Ω −  ui  ui  ui  ui
                                               ∑        (       (    )  (    ))                      (15)
                                                                    T
                                                              T
                                                         T
                                          L T = −        y log ˆy + 1−y log 1− ˆy T
                                                  (u,i)∈Ω + ∪Ω −  ui  ui  ui  ui
                 其中,   y  /  y  是已知的用户-项目交互,  Ω  是观察到的交互集,      Ω  是从未观察到的交互集中随机抽样的一定数量负
                         T
                      S
                                               +
                                                                 −
                      ui  ui
                 实例, 以防止过拟合.
                    为进一步提高两域的推荐性能, 我们将前文中提出的损失函数相结合, 得到联合优化的总损失函数, 如公
   420   421   422   423   424   425   426   427   428   429   430