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

4570                                                      软件学报  2025  年第  36  卷第  10  期


                 为  [−1, 1]. 当值为−1  时, 该模型的预测值与实际值完全不同; 当值为           0  时, 该模型的预测值不如随机预测; 当值为
                 1  时, 则认为该模型的预测结果与实际情况完全一致. 由此可见, MCC                 越接近   1  则模型表现越好. 由于     MCC  指标
                 考虑到了混淆矩阵的所有结果, 即          TP、TN、FP   和  FN, 所以该指标是一个较为均衡的评价指标, 计算公式如下:

                                                        TP×TN − FP× FN
                                         MCC = √                                                      (1)
                                                 (TP+ FP)(TP+ FN)(TN + FP)(TN + FN)
                          [4]
                    G-mean 是一种衡量正类和负类性能之间平衡的指标, 适用于类不平衡的数据分类中. 它综合考虑了模型在
                 不同类别上的表现, 通过计算几何平均值来评估模型的性能. G-mean                  的取值范围为     [0, 1], 其值越高表示模型在不
                 同类别上的表现越好. 当存在类别不平衡时, G-mean            能够平衡少数类和多数类的分类性能, 计算公式如下:

                                                          √
                                                  G-mean =  Recall×(1− Pf)                            (2)
                 其中, Recall 表示被正确预测为缺陷的变更占实际缺陷变更的比率, Pf 表示无缺陷的变更被预测为缺陷的变更占
                 实际无缺陷变更的比率.
                    F-measure@20% [37] 是一种基于工作量感知的评价指标, 指使用           20%  的总代码行   (lines of code, LOC) 来衡量
                 开发人员审查代码的工作量, 为          Precision@20%  和  Recall@20%  的调和平均数. 此前的研究指出, 在大多数情况下,
                 缺陷出现在    20%  的文件或代码行中      [15] , 因此本文使用  F-measure@20%  指标来评估基于工作量感知的即时缺陷预
                 测模型. 具体计算公式如下:

                                                       2×Precision@20%×Recall@20%
                                        F-measure@20% =                                               (3)
                                                        Precision@20%+Recall@20%
                 其中, Precision@20%  指在使用  20%  的总代码行下被正确预测为缺陷的变更占预测为缺陷变更的比率. Recall@20%
                 指在使用   20%  的总代码行下被正确预测为缺陷的变更占实际缺陷变更的比率. F-measure@20%                     综合考虑了在工
                 作量感知情况下模型的精确率和召回率.
                    IFA [37] 是指在缺陷检测过程中, 在发现第一个实际缺陷之前遭遇的误报数量, 用于评估缺陷预测的准确性和效
                 率, 较低的初始误报数量表示缺陷检测机制或流程更准确, 产生较少的误报. 假设预测模型所推荐的前                               k 个变更都
                 是误报, 开发人员会感到沮丧, 不太可能继续审查其他变更. IFA                计算如下:

                                                          IFA = k                                     (4)
                  3.5   统计测试
                    为了检验不同      SZZ  标注算法之间的性能差异是否具有统计学意义, 本文使用                  SKESD (Scott-Knott effect size
                 difference) [79] 算法进行统计显著性测试. SKESD  是一种均值比较算法, 它结合了          Cohen’s delta 效应大小和层次聚
                 类分析技术, 用于将一组均值划分为在统计学上具有显著差异的不同组                       (α<0.05). 与先前的缺陷预测工作一样      [78−80] ,
                 本文执行两轮     SKESD  测试. 首先, 对每种   SZZ  标注算法在每个项目上多次运行结果的均值进行                 SKESD  测试, 得
                 到每种   SZZ  算法的等级排序列表. 基于此, 再执行第          2  轮  SKESD  测试, 得到每种  SZZ  算法在所有项目上的等级
                 排名, 排名越高则标注性能越好. 通过执行两轮              SKESD  测试, 可得到每种    SZZ  算法在所有项目上的排名, 这样可
                 以综合考虑不同项目中的性能表现. 这种方法能够全面比较和评估各种                      SZZ  算法, 考虑到不同项目中的变化和差异.
                  3.6   可加性解释模型  SHAP
                    SHAP (Shapley additive explanations) 是一种与模型无关的解释方法  [81] , 它基于博弈论中的   Shapley  值概念, 可
                 适用于对黑盒模型的全局解释或局部解释. 其值提供了一种解释模型预测结果的方法, 可以帮助人们理解模型是
                 如何利用每个特征来进行预测的. 它可以揭示特征对于预测结果的贡献程度, 以及特征值的变化对于预测的影响.
                 这样的解释有助于人们理解模型的决策过程, 解释模型的预测结果, 并帮助做出可信的决策. 本文使用                               SHAP  方法
                 的原因如下: (1) SHAP   一种比较强大的模型无关解释方法, 既可以对缺陷预测模型进行全局解释, 也可以对单个
                 预测结果进行局部解释. 通过全局解释, 可以得出哪些度量元对模型的预测最重要, 哪些度量元对模型的预测影响
                 较小, 有助于了解模型的整体性能和特征的相对重要性. 通过局部解释, 揭示模型为什么对某个变更做出了特定的
                 预测, 有助于发现模型的行为是否符合预期. (2) SHAP            具有理论基础, 可以保证生成最佳的特征重要性排名. 近年
   168   169   170   171   172   173   174   175   176   177   178