Page 172 - 《软件学报》2025年第10期
P. 172

李志强 等: SZZ  误标变更对移动      APP  即时缺陷预测性能和解释的影响                                    4569


                    (3) 将所有变更按照提交时间排序, 划分训练集和测试集.
                    (4) 根据  4  种  SZZ  算法标注的训练集, 使用随机森林、朴素贝叶斯与逻辑回归分类器分别构建即时缺陷预测
                 模型.
                    (5) 对测试集中每个变更       (即实例) 预测其是否引入了新的缺陷.
                    (6) 如本文第   2.4  节所述, 将  RA-SZZ  标注的数据集作为真实数据集.
                    (7) 对即时缺陷预测模型进行性能评估, 并计算评价指标.
                    (8) 最后使用   SKESD  和  SHAP  算法分别对预测结果进行排序与解释.
                  3.1   数据预处理
                    Tantithamthavorn  等人  [72] 发现相关性较强的度量元会影响即时缺陷预测模型的性能与解释. 因此, 直接使用
                 这  14  个度量元可能会影响模型的性能表现或引起错误的模型解释. 基于先前的研究                       [9] , 在构建即时缺陷预测模型
                 前需要对数据集进行预处理, 预处理工作分为两步.
                    数据偏斜: 由于数据集中大部分度量值存在偏斜且较为分散, 因此需要对数据进行归一化处理. 为保持数据间
                 的相对关系, 使得数据的分布更加均匀, 与先前研究一样                 [5] , 本文采用  ln(x+1) 对数变换. 因为  Fix  是一个二进制度
                 量元, 因此不对其进行处理.
                    度量元相关性: 先前的研究表明相关度量元会对缺陷预测模型产生影响                         [72] . 此外, 度量元的相关程度在不同
                 项目上可能具有差异性. 因此, 本文对每个数据集的所有度量元进行相关性处理. 具体地, 采用                              R  语言提供的
                 AutoSpearman  算法包  [73] 分别对每个项目进行  Spearman  相关性分析和方差分析, 以选取度量元.
                  3.2   数据集划分
                    对于即时缺陷预测中数据集的划分, 已有的研究表明                 [65,74] , 代码变更遵循时间顺序, 而使用交叉验证随机划分
                 数据集的方式并不符合实际情况. 例如, 用            2023  年提交的变更来预测     2021  年的变更是否引入了缺陷, 这并不符合
                 常理. 此外, 还会导致模型准确度虚高. 为此, Yang         等人  [34] 提出了一种基于时间感知的数据集划分方法.
                    根据  Yang  等人  [34] 的时间序列划分方法, 对于每个项目, 本文将所有变更根据提交日期进行排序, 并将同一个
                 月中的所有变更分为一组. 假设一个项目的所有变更被分为                    n  组, 则训练集为第   i 和第  i+1  组, 测试集为第  i+4  和
                 第  i+5  组  (1 ⩽ i ⩽ n−5), 从而保证每个训练集和测试集包含两个月的变更数据. 这样划分的理由如下: (1) 大多数项
                 目的开发周期为      2  个月. (2) 每个训练集和测试集具有两个月的间隔, 确保开发人员有足够多的时间修复更多缺
                 陷. (3) 确保训练集和测试集有足够的实例. (4) 使用与预测变更日期相近的变更数据确保实验的有效性.
                  3.3   模型构建
                    参考  Fan  等人  [5] 的研究工作, 本文使用随机森林、朴素贝叶斯和逻辑回归               3  种分类器进行模型构建, 在传统
                 分类和工作量感知排序两种情况下分别构建即时缺陷预测模型. 特别地, 本文采用基于                            CBS+  [37] 的工作量感知即
                 时缺陷预测技术, 该模型目前被证明具有较优的性能. 在本文实验中, 随机森林、朴素贝叶斯和逻辑回归的实现使
                 用  R  语言中的  randomForest 包  [75] , naivebayes 包  [76] 以及  glm  函数.
                  3.4   性能评价指标
                    为评估缺陷预测模型的性能, 本文使用             AUC、MCC  和  G-mean  这  3  个非工作量感知的评估指标, 其已被证明
                 在类不平衡场景下能够保持稳定           [77] . 此外, 使用  F-measure@20%  和  IFA  两个工作量感知的评估指标  [37] .
                    AUC (area under curve), 即曲线下的面积, 其指受试者工作曲线       (receiver operating characteristic, ROC), ROC  曲
                 线绘制了在所有阈值下真阳性率            (true positive rate, TPR) 关于假阳性率  (false positive rate, FPR) 的函数曲线. AUC
                 的取值范围为     [0, 1], 若  AUC  得分越高, 则该模型表现越好, 若     AUC  得分小于或等于     0.5, 则说明该模型的预测没
                 有优于随机预测. 目前, AUC      已广泛应用于缺陷预测研究          [6,9,78] . 由于缺陷数据普遍具有类不平衡的特点, 而         AUC
                 不受类别分布以及数据的类不平衡影响, 因此其常作为类不平衡场景下的评价指标.
                                                                [4]
                    在二分类场景中, MCC (Matthews correlation coefficient) 用于计算预测值和真实值之间的关系, 其取值范围
   167   168   169   170   171   172   173   174   175   176   177