Page 295 - 《软件学报》2021年第7期
P. 295
贾修一 等:基于变分自编码器的异构缺陷预测特征表示方法 2213
合的数据集的预测,因此我们没有对数据集具有相同度量集的同一组中的项目进行缺陷预测.总共有来自 4 个
小组的 18 个项目的 240 种可能的预测组合.
对于项目间缺陷预测问题,我们将数据集分为训练集和测试集并在缺陷预测模型中使用两折交叉验证 [23,25] .
具体来说,我们将前半部分用于训练,后半部分用于测试,然后再以相反的方式将后半部分用于训练,前半部分
用于测试.为了解决采样的随机性,我们随机拆分重复 50 次,则每个分类器都有 100 个测试结果.
在我们的实验中,模型由神经网络构成,实现方法基于 Python 以及 Tensorflow 2.0 框架,其中有多项超参
数 、 和 ,这些参数的搜索范围都为{1e2,1e1,1e0,1e+1,1e+2},在实验结果中汇报的值是多个源项目
3
1
2
进行验证后的平均值.其中,每次验证的结果是在最优的参数配置下模型收敛时的平均性能.我们采用的策略
是对于每个目标项目的同一种参数配置,以其能在所有的源项目取得最优平均值的参数组合作为最佳的参
数配置(代码已发布在 https://github.com/NJUST-IDAM/T-VAE).
4.4 实验结果与分析
为了评估基于变分自编码器的异构缺陷预测方法 T-VAE 的有效性,我们研究了以下两个问题.
RQ1:T-VAE 是否可以获得比项目间以及跨项目缺陷预测方法更好的结果?
RQ2:T-VAE 是否比其他异构缺陷预测的方法更好?
RQ1: T-VAE 是否可以获得比项目间以及跨项目缺陷预测方法更好的结果?
为了验证这个问题的结果,我们将 T-VAE 模型与基于逻辑回归和单层神经网络的项目间缺陷预测以及跨
项目缺陷预测方法 TCA+和 VCB-SVM 方法进行了对比实验,实验的结果见表 2.
Table 2 The comparison results between T-VAE and within-project/cross-project defect prediction methods
表 2 T-VAE 与项目间和跨项目缺陷预测方法性能比较
Target WPDP-LR WPDP-NET TCA+ VCB-SVM M-Down T-VAE
CM1 0.653 0.466 0.642 0.614 0.624 0.678
MW1 0.612 0.432 0.685 0.579 0.712 0.721
PC1 0.787 0.649 0.694 0.648 0.826 0.743
PC3 0.794 0.670 0.627 0.587 0.807 0.736
PC4 0.900 0.865 0.687 0.583 0.757 0.814
AR1 0.582 0.481 0.624 0.660 0.527 0.768
AR3 0.574 0.537 0.733 0.660 0.825 0.832
AR4 0.657 0.573 0.751 0.667 0.819 0.798
AR5 0.804 0.497 0.819 0.846 0.941 0.890
AR6 0.654 0.522 0.582 0.598 0.563 0.723
Apache 0.714 0.655 0.697 0.698 0.751 0.745
Safe 0.706 0.651 0.721 0.704 0.833 0.775
ZXing 0.605 0.557 0.617 0.619 0.635 0.635
EQ 0.583 0.694 0.732 0.609 0.793 0.778
JDT 0.795 0.818 0.735 0.665 0.785 0.710
LC 0.575 0.653 0.633 0.639 0.671 0.693
ML 0.734 0.743 0.659 0.620 0.642 0.645
PDE 0.684 0.696 0.655 0.602 0.692 0.660
Mean 0.690 0.620 0.683 0.644 0.733 0.741
p-value 0.006 <0.001 <0.001 <0.001 0.711
Cliff’s 0.358 (M) 0.608 (L) 0.503 (L) 0.747 (L) 0.006(N)
与项目间缺陷预测方法 WPDP-LR 和 WPDP-NET 相比,我们的方法有着巨大的优势,在绝大多数的数据集
上都获得了最佳的效果(14/18),根据 Wilcoxon 符号秩检和 Cliff’s 检验的结果,T-VAE 相对于 WPDP-LR 有中等
的优势,相对于 WPDP-NET 有着大规模尺度的优势.对于这一结果我们推测如下,大部分缺陷数据集中实例的
个数都是比较少的(其中有 14/18 个项目的实例个数小于 1 000),实例个数过少直接导致有监督模型很难学习到
泛化能力很强的分类模型,甚至还受类别不平衡问题以及过拟合问题的严重影响.在这种情况下,学习不同项目
间的分布映射关系并拟合其他项目的缺陷分布情况反而能获得更好的泛化性能.其他相关的异构缺陷预测研
究也有类似的结果,更充分表明了基于异构特征的跨项目软件缺陷具有很强的实用性.
与现有跨项目缺陷预测方法相比,根据 p-value 和 Cliff’s 的检验结果,T-VAE 相对于算法 TCA+和 VCB-