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 具有理论基础, 可以保证生成最佳的特征重要性排名. 近年

