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

2922                                                       软件学报  2026  年第  37  卷第  7  期


                    (4) Recall (召回率)

                                                               TP
                                                      Recall =                                       (18)
                                                             TP+FN
                    (5) F1-score (F1  值)

                                                   2×Precision×Recall   2TP
                                          F1-score =              =                                  (19)
                                                    Precision+Recall  2TP+FP+FN
                    (6) Specificity (特异性)

                                                                TN
                                                     Specificity =                                    (20)
                                                              TN +FP
                    (7) G-mean (几何均值)

                                                                 √
                                                √                    TP     TN
                                        G-mean =  Recall×Specificity =    ×                           (21)
                                                                   TP+FN TN +FP
                    (8) Balance (平衡准确率)

                                                Recall+Specificity  1  (  TP  TN  )
                                        Balance =             =          +                           (22)
                                                      2         2 TP+FN   TN +FP
                  4.3   基线方法
                    对于跨项目缺陷预测, 本文采用          LR、RF、eCPDP、CodeBERT-PT、MNAFM       等方法作为基线模型; 基线模
                 型涉及传统机器学习方法、集成学习方法、联邦学习方法、跨项目软件缺陷预测的                              state-of-the-art (SOTA) 方法
                 及预训练模型.
                       [55]
                    LR   : 一种经典的线性分类模型. 它通过学习输入特征与缺陷概率之间的逻辑函数关系来进行预测.
                    DPDF [56] : 一种深度森林模型. 该模型充分利用集成学习和深度学习, 通过使用新的级联策略来识别更重要的
                 缺陷特征, 该策略将随机森林分类器转换为逐层结构.
                    eCPDP [57] : 一种跨项目缺陷预测技术. 它利用奇异值分解           (SVD) 进行迁移学习, 旨在无需完整的历史目标数
                 据即可在单元测试阶段对缺陷进行预测.
                    CodeBERT-PT [58] : 一种基于预训练语言模型     CodeBERT  的方法. 它通过在原始代码上进行微调来学习代码的
                 深层语义特征, 并直接预测代码模块是否包含缺陷.
                    MNAFM   [59] : 一种异构缺陷预测方法. 它将软件度量转化为图像, 并利用基于注意力机制的元网络                         (meta-
                 network) 来匹配源项目和目标项目的特征, 从而进行缺陷预测.
                    AC-GAN [60] : 一种基于生成式对抗网络的跨项目缺陷预测方法, 通过              GAN  网络的对抗训练来缩小源项目和目
                 标项目之间的数据分布差异, 从而提升跨项目缺陷预测的性能.
                    ALMITY [45] : 一种改进聚合策略的联邦学习方法. 它在联邦学习框架下仅共享模型更新与数据分布信息、不
                 传原始数据, 并在参数聚合时联合考虑“数据规模-数据平衡度-少数类可学习性”这                        3  个属性, 以提升类不平衡数据
                 上的模型性能.
                    Fed-OLF [61] : 一种联邦过采样学习框架. 它结合基于扩散模型的本地数据过采样方法 (TabDiT) 和基于局部信
                 息熵的加权聚合策略 (LEW), 在保护数据隐私的同时, 解决多方协作下的软件缺陷数据不平衡问题并提升模型预
                 测性能.
                  4.4   实验方法
                    本文使用来自      MDP、GitHub-Python、ReLink、PROMISE、AEEEM     和  Enterprise 的  30  个项目作为实验数
                 据集. 跨项目缺陷预测实验采用留一 (leave-one-out) 法策略, 模拟真实的跨组织数据协作场景. 在该实验中, 数据
                 集组内的每个项目轮流作为测试集, 其余项目作为训练客户端参与联邦学习. 具体而言, 对于包含                             n  个项目的数据
                 集组, 实验将进行    n 轮, 第  i 轮中项目  i 作为测试集, 项目   1 至  i−1 和  i+1 至  n 作为训练客户端. 实验环境配置为: 华为
                 Ascend 910B GPU, EulerOS 2.0  操作系统, PyTorch 1.11.0  深度学习框架, 结合  torch-npu  加速库和  CANN-6.3.RC2
   232   233   234   235   236   237   238   239   240   241   242