Page 238 - 《软件学报》2026年第7期
P. 238

刘子扬 等: 基于个性化联邦学习的跨项目软件缺陷预测方法                                                    2923


                 计算架构进行模型训练和推理. 网络结构参数方面, Transformer 模型维度设置为                   32, 多头注意力机制采用      2  个注
                 意力头, Transformer 层数设为   1  层. 训练参数配置中, 客户端数量设定为          5  个, 本地训练步数为    3  步, 批次大小为
                 32, 全局训练轮数为     50  轮, 学习率采用  1E−3, 并使用  AdamW  优化器. 差分隐私参数设置中, 跨项目实验的隐私预
                 算  ε  设为  5.0, 隐私失败概率  δ 设为  1E−5, 噪声乘数为  0.8, 梯度裁剪范数阈值为      1.0, 采用高斯噪声机制保护客户
                 端隐私. 联邦学习参数包括个性化系数            β  设为  0.3, 模型性能权重  α  设为  0.8, 客户端选择比例为   0.6. 损失函数参数
                 方面, 采用   Focal Loss 处理类别不平衡问题, 其中, α = 0.25, γ = 2.0; 正则化参数中, dropout 率在不同层设置为
                 0.1–0.2, 以防止过拟合. 本文的框架开源至: https://anonymous.4open.science/r/PRIDE-SDP-4FE/.
                  5   结果分析与讨论

                    为评估   PRIDE-SDP  方法的有效性, 我们研究了以下        5  个问题.
                    ● RQ1: PRIDE-SDP  相较于其他跨项目缺陷预测方法是否更好?
                    为全面评估     PRIDE-SDP  框架的有效性, 本文选择了       8  种具有代表性的跨项目缺陷预测方法作为基线进行对
                 比实验. 这些方法涵盖了该领域的主要技术路径: 传统机器学习方法 (LR)、深度学习方法 (DPDF)、迁移学习方
                 法 (eCPDP)、预训练模型方法 (CodeBERT-PT)、基于注意力机制的异构预测方法 (MNAFM)、生成对抗网络方法
                 (AC-GAN) 以及联邦学习方法 (ALMITY、Fed-OLF). 选择这些基线方法的主要考虑因素包括: (1) 技术路径的多
                 样性和代表性; (2) 方法的先进性和在相关领域的影响力; (3) 实现的可获得性以确保实验结果的可重复性. 实验结
                 果表明, 在大多数情况下, PRIDE-SDP       框架的综合性能显著优于其他           8  种跨项目缺陷预测基线方法. 如表         2  所示,
                 PRIDE-SDP  在  5  个不同的数据集组上, 尤其在     AUC、F1-score 和  G-mean  这  3  个关键评估指标上, 展现出了强大
                 的竞争力和优越性, 证明了其在处理项目异构性方面的有效性.

                                     表 2 各个跨项目缺陷基线方法在全部数据集组的对比结果

                   数据集组      评估指标 PRIDE-SDP    LR   DPDF eCPDP CodeBERT-PT MNAFM AC-GAN Fed-OLF ALMITY
                              AUC     0.758 4  0.585  0.636 5 0.532 4  0.567 4  0.570 5  0.713 4  0.724 5  0.644 3
                             Accuracy  0.678 5  0.591 2 0.560 9 0.406 7  0.576 7  0.578 2  0.644 5  0.654 2  0.625 8
                             Precision  0.724 3  0.653 0 0.695 5 0.431 5  0.623 4  0.604 3  0.688 9  0.698 7  0.603
                              Recall  0.585 5  0.379 3 0.283 1 0.574 2  0.501 2  0.577 1  0.563 4  0.563 4  0.570 6
                     MDP
                             F1-score  0.630 2  0.476 3 0.347 3 0.490 9  0.555 7  0.567 1  0.619 8  0.623 4  0.586 3
                             Specificity  0.771 5  0.802 6 0.838 8 0.239 2  0.658 9  0.579 3  0.723 4  0.745 1  0.741 3
                             G-mean   0.657 7  0.547 5 0.465 9 0.358 2  0.574 7  0.513 1  0.638 4  0.647 8  0.650 3
                             Balance  0.678 5  0.591 2 0.560 9 0.406 7  0.580 1  0.671 2  0.643 4  0.654 2  0.655 9
                              AUC     0.672 2  0.656 9  0.602  0.518 0  0.575 6  0.727 8  0.623 4  0.644 5  0.666 3
                             Accuracy  0.623 1  0.646 7 0.643 7 0.507 0  0.568 5  0.677 2  0.608 9  0.608 9  0.639 4
                             Precision  0.618  0.650 5 0.637 1 0.502 9  0.598 7  0.659 9  0.615 6  0.623 4  0.618 5
                              Recall  0.525 5  0.485 9 0.530 8 0.533 4  0.498 5  0.601 2  0.502 3  0.498 7  0.579 2
                 GitHub-Python
                             F1-score  0.542 8  0.556 1 0.574 8 0.465 9  0.544 0  0.628 9  0.553 3  0.553 4  0.598 2
                             Specificity  0.793 3  0.779 4 0.744 1 0.515 0  0.642 3  0.741 2  0.704 5  0.712 3  0.738
                             G-mean   0.588 7  0.614 8 0.626 6  0.422  0.565 9  0.667 5  0.594 9  0.595 6  0.653 8
                             Balance  0.659 4  0.632 6 0.637 4 0.524 2  0.570 4  0.601 2  0.603 4  0.605 5  0.658 6
                              AUC      0.711  0.668 8 0.647 2 0.703 1  0.618 4  0.700 6  0.692 3  0.683 4  0.650 9
                             Accuracy  0.661 4  0.665 3 0.666 9 0.658 6  0.606 5  0.659 1  0.653 4  0.644 5  0.626 2
                             Precision  0.645 3  0.703 1 0.685 6 0.662 1  0.612 3  0.622 6  0.678 9  0.656 7  0.629 7
                              Recall  0.624 2  0.498 1 0.552 0 0.562 5  0.598 7  0.596 9  0.583 4  0.597 8  0.594 9
                    ReLink
                             F1-score  0.624 5  0.581 9 0.606 9 0.601 2  0.605 4  0.612 0  0.627 6  0.625 6  0.611 8
                             Specificity  0.670 1  0.808 5 0.767 5 0.754 0  0.623 4  0.626 0  0.713 4  0.688 9  0.738 3
                             G-mean   0.631 3  0.634 1 0.649 8 0.647 9  0.610 9  0.659 9  0.645 1  0.642 5  0.662 7
                             Balance  0.647 2  0.653 3 0.659 7 0.658 2  0.611 1  0.611 5  0.648 4  0.643 4  0.666 6
   233   234   235   236   237   238   239   240   241   242   243