Page 296 - 《软件学报》2021年第7期
P. 296

2214                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                 SVM 具有显著的差异和大规模尺度的优势.T-VAE 和 M-Down 的性能之间并无显著区别,但需要注意以下几点.
                 M-Down 是一种只利用了目标项目度量排序信息的无监督模型,其对度量元中缺陷分布信息的利用极其有限,
                 且不引入额外假设时性能没有任何提升空间.T-VAE 所汇报的是在同一参数配置下,综合多个源项目取得最优
                 平均值的结果,仅只需对源项目进行简单筛选并调节参数即可获得更优的性能.同时,T-VAE 还是一种表示学习
                 方法,可以根据特定目标学习与缺陷更具相关性的特征表示,充分提取数据集度量元之间的信息.
                    综上,T-VAE 显著优于简单的项目间缺陷预测方法,并相对于现有的跨项目缺陷预测方法更具有实用价值.
                    RQ2: T-VAE 是否比其他 HDP 的方法更好?
                    为了回答该问题,我们将所提方法与现有的异构缺陷预测方法的性能进行了比较,其中,对比算法包括
                 HDP-KS、CCA+、CTKCCA 和 SNN,它们都是在与本文相同实现配置下进行的比较,实验结果见表 3.从结果可
                 以看出,所对比的异构缺陷预测方法也有着令人印象深刻的性能,但总体而言,我们所提方法更优一些.从均值
                 上看,对应于算法 HDP-KS、CCA+、CTKCCA、SNN,T-VAE 方法分别提升了 2.6%、42.7%、2.06%、6.16%.
                 根据 Wilcoxon 符号秩检 T-VAE 与 CCA+、SNN 有着显著区别,其中相对于算法 HDP-KS、CCA+以及 SNN 都
                 有着不可忽视的优势.算法 CTKCCA 与 T-VAE 有着相近的性能,但是我们的方法有着更高的平均得分,且在
                 10/18 个数据集上比它有更优的结果.同时,CTKCCA 利用核映射来处理线性不可分问题,其不仅需要专家知识
                 设计有效的核函数,且难以处理大规模数据集.T-VAE 是一种基于神经网络的迁移学习方法,其不仅可以自动拟
                 合复杂的数据分布,并且可以通过进一步增加数据规模以提升性能.同时,该方法还可以分析缺陷在隐式特征空
                 间中的情况,提取两者之间的共性用于学习.
                    因此,综合而言,T-VAE 相对于大多数异构缺陷预测方法有较大优势,并更具有指导意义和实践价值.

                         Table 3    The comparison results between T-VAE and heterogenous defect prediction methods
                                           表 3   T-VAE 与异构缺陷预测方法性能比较
                          Target     HDP-KS         CCA+          CTKCCA          SNN         T-VAE
                          CM1         0.689          0.480          0.941         0.641       0.678
                          MW1         0.709          0.532          0.904         0.692       0.721
                          PC1         0.728          0.499          0.923         0.668       0.743
                          PC3         0.728          0.502          0.742         0.678       0.736
                          PC4         0.690          0.511          0.680         0.677       0.814
                          AR1         0.687          0.518          0.683         0.686       0.768
                          AR3         0.843          0.518          0.543         0.805       0.832
                          AR4         0.782          0.514          0.683         0.756       0.798
                          AR5         0.919          0.565          0.496         0.843       0.890
                          AR6         0.660          0.503          0.651         0.659       0.723
                         Apache       0.748          0.639          0.790         0.695       0.745
                          Safe        0.775          0.496          0.596         0.722       0.775
                          ZXing       0.630          0.463          0.781         0.591       0.635
                           EQ         0.726          0.536          0.745         0.729       0.778
                          JDT         0.712          0.540          0.654         0.726       0.710
                           LC         0.659          0.512          0.956         0.720       0.693
                          ML          0.650          0.494          0.646         0.620       0.645
                          PDE         0.668          0.528          0.652         0.659       0.660
                          Mean        0.722          0.519          0.726         0.698       0.741
                         p-value      0.072         <0.001          0.711         <0.001        
                         Cliff’s    0.204 (S)     0.994 (L)       0.135(N)      0.386 (M)      

                 4.5   参数影响分析
                    为了充分探讨在不同情况下,我们的算法受模型参数的影响状况,分别设置了两种场景用于分析不同参数
                 权重对性能带来的影响.分别验证了在源项目数据规模较大和较小时,它对目标项目进行映射学习后的性能.具
                 体而言,我们展示了分别以 PDE 和 AR6 为源项目时,在目标项目 PC4 上随着损失项各个参数的不同,其性能的
                 变化趋势.
                    图 6~图 8 分别展示了不同损失项在不同权重下的性能表现.从图中可以看出,即使是相同的数据集,不同的
                 损失权重也会导致有很大的差异,因此选择一个合适的参数对于获得有效的最终分类性能而言是非常重要的,
   291   292   293   294   295   296   297   298   299   300   301