文摘

计算智能的典型的应用程序在软件工程中,跨项目缺陷预测(CPDP)使用带安全标签的数据时从其他项目(源代码项目)为构建模型预测的缺陷在当前项目(目标项目),帮助测试人员快速定位缺陷模块。但类不同项目之间数据分布不平衡,使CPDP一个具有挑战性的话题。解决上述两个问题,我们提出一个两阶段特性重要性摘要放大(TFIA) CPDP模型可以解决这两个问题从域适应阶段和分类阶段。在域的适应阶段,项目之间数据分布的差异减少过滤源和目标项目,和correlation-based特征选择与贪婪的最佳优先搜索放大功能的重要性,并有很强的feature-class相关性。在分类阶段,是随机森林分类器进一步放大特性高度相关的重要性和建立模型高度相关的敏感特性。我们进行了烧蚀实验和对比实验广泛使用AEEEM数据库。实验结果表明,TFIA可以在CPDP产量显著提高。和性能的TFIA CPDP模型实验是稳定的和高效的,它奠定了坚实的基础为其进一步在实际工程中的应用。

1。介绍

软件缺陷的应用程序中可能会导致意想不到的灾难场景,威胁的安全软件,甚至人们的生活(1]。在整个生命周期的软件缺陷,在后期的成本将高于那些在早期修复。测试人员应该及时发现缺陷,帮助开发人员尽快修复它们[2]。但关注所有模块的软件将花费大量的时间和人力,这违背了我们的初衷,让preidentification潜在缺陷模块的一个紧迫的问题3,4]。

软件缺陷预测(SDP)是一种方法,可以帮助测试人员快速识别潜在缺陷模块(5),以减少测试人员在故障诊断时间和节省测试成本(4]。典型的SDP通常使用软件的历史数据建立预测模型的缺陷模式识别新版本的模块项目(3,6,7]。作为全新的项目缺乏历史数据,特别是历史数据与缺陷或清洁标签,SDP无法很好地工作。为了解决这个问题,研究人员提出一个称为跨项目的软件缺陷预测的方法(CPDP)。CPDP构建预测模型与历史数据从其他项目(源代码项目)和预测当前项目(目标项目)8,9]。

尽管CPDP关注历史数据缺乏的问题,仍然存在两个主要问题需要解决。由于各种各样的因素,如项目功能和开发人员的习惯,从项目数据分布有很大的差异。项目之间数据分布差异明显,即使使用了相同的标准来评估项目(10),这使得CPDP模型建立在源码项目无效的目标项目(11]。因此,如何减少源和目标之间的数据分布差异项目CPDP模型的性能是很重要的(12,13]。另一方面,模块的缺陷的数量往往比这小得多的模块没有缺陷,叫做类不平衡问题14]。类不平衡问题也会影响CPDP模型的性能,因为他们可能倾向于多数当分类(15,16]。

为了解决上述问题,在本文中,我们提出一个两阶段特性放大(TFIA) CPDP模型的重要性。具体来说,TFIA CPDP分为两个阶段。在域的适应阶段,TFIA减少数据分布在源和目标项目的差异。添加一定比例的样本之后目标项目源项目,correlation-based特征选择方法与贪婪的最佳优先搜索策略,提出了增强与高feature-class相关特性的重要性。最后选定项的子集由用于筛选源和目标项目的目的是消除冗余特征以及干扰项,降低数据的维数。在分类阶段,是在源项目的数据上进行重新取样做清洁和有缺陷的样本的数量平衡。和一个集成学习方法,采用随机森林,构建预测模型。采用随机森林的原因是,集成学习方法已经显示他们的优势解决类不平衡问题17]。在我们的例子中,选择的随机森林采用随机抽样方法;因此,训练模型方差小,泛化能力高,可以有效地改善和解决类不平衡问题。随机森林评估在训练过程中特性和类之间的关系(18),导致排名feature-class相关性(19),进一步放大功能的重要性,并有很强的feature-class相关缺陷识别。

总之,我们的贡献在于两个方面。(1)我们提出一个两阶段特性重要性放大CPDP模型(TFIA)。TFIA减少数据分布的影响和类不平衡问题域的适应阶段和分类阶段。(2)我们在AEEEM数据库上进行实验,验证该方法的有效性。此外,我们执行的烧蚀实验,仔细分析和解剖的详细的组件的方法。我们也与其他方法进行了对比实验比较TFIA。

CPDP通常包括两个阶段,称为域适应和分类。领域适应气候变化主要是由数据处理方法,如数据迁移和特征选择。分类主要是由机器学习分类器(20.]。研究领域适应地址数据分布在源和目标之间的差异的项目,而研究分类方法改善预测性能从算法的角度。还有一些研究者认为混合方法。

2.1。领域适应阶段

Turhan et al。21]提出Burak滤波器基于k - means聚类方法。Burak滤波器计算所有样本之间的欧氏距离源项目中的数据集。对目标项目中的每个样本数据集,他们选择了k样本的最小欧氏距离作为训练样本。最后,朴素贝叶斯方法被用来预测数据集处理。Burak滤波器性能的改善CPDP模型通过过滤的样本源项目基于目标项目的数据集的数据集。Peters等人。22彼得斯)提出的滤波器基于源码项目数据集。源项目中的样本数据集,是最接近的样品在目标项目数据集通过比较选择欧几里得距离。然后他们标记的样本。源项目的样本数据集的最亲密的距离标记的训练数据样本被选为预测过程。锅等。23提出了柠檬酸,映射的源和目标项目的特点使他们最相似的潜在空间,减少数据分布差异的影响。最后,使用逻辑回归预测。他等。24TDSelector)简化了训练集的方法,然后通过逻辑回归分类。太阳et al。25)提出了一个在一些源码项目选择协同过滤(cfp)方法来过滤源项,有好的结果使用SMO和随机森林分类器。Alsawalqah et al。26)提出了一个SMOTE-ensemble方法优化类不平衡问题在数据级和算法级。

2.2。混合法

元等。27]TrAdaBoost用于确定样本的权重根据Burak滤波和加权支持向量机用于构建模型来提高CPDP模型。曹国伟et al。28)提出了一种两阶段称为TPTL CPDP方法,使用源工程预决算选择源项目类似的数据分布作为目标项目和使用两个改进的柠檬酸+构建预测模型。丛(29日)提出了一个DA-KTSVMO方法使用内核双子支持向量机来提高数据分布和利用量子粒子群优化算法来优化预测的方法。张等人研究了7个组合算法;他们认为复合算法可以提高CPDP模型的性能(30.]。陈等人提出的方法结合了数据引力方法和TrAdaBoost减少源项目中的类不平衡的影响31日]。许等人提出了一种多源TrAdaBoost算法。该方法使用semisupervised high-density-based集群和少量的标记目标项目数据获取大量的标记项数据来源。当使用TrAdaBoost集成,只有基分类器训练从源项数据到目标最相关项被选中。在培训的过程中,这个方法可以确保知识转移是最相关的目标项目,但忽略了影响其他源项目数据在目标项目缺陷预测模型(32]。

3所示。方法

在本节中,我们首先介绍TFIA我们提出的框架方法。然后我们展示重要的步骤在我们提出的方法的细节。

3.1。TFIA框架

1是TFIA的流程图。TFIA添加一定比例的目标项目的标记样本数据集源项目数据集,使用correlation-based特征选择方法,并使用启发式搜索功能的一个子集贪婪的最佳优先搜索策略。然后TFIA过滤器源和目标项目的特性、样品来源项目和重采样数据集,使用随机森林源项目数据集上训练,最后预测目标项目的数据集。

TFIA减少了源和目标之间的数据分布差异项目从功能的角度来看,样本的角度来看,分别。TFIA增强特性的重要性与强劲class-feature相关性模型的训练。重新取样的方法用于处理类不平衡问题,减少类不平衡问题所产生的影响。TFIA使用随机森林分类器训练模型与小方差和较强的泛化能力改善CPDP模型识别的准确性有缺陷的模块。

在TFIA,我们使用 评估的相关性feature-feature TFIA feature-class。 (33)是一个特征加权算法敏感特性交互。 的特征f可以制定 是概率, 是类变量, , 是样品的某些价值的特性 , 是另一个属性质量测量,可以计算吗

我们使用 计算相关feature-feature和feature-class部分3.2和部分3.3

3.2。领域适应阶段

为了放大功能的作用,并有很强的feature-class相关性强的分类器和使不重要特性feature-feature相关性,我们决定选择功能。在特征选择阶段,我们使用过滤方法称为correlation-based特征选择(CFS) (34]。本文使用的启发式搜索策略CFS是贪婪的最佳优先搜索(35]。CFS评估的价值特性的一个子集通过考虑各个预测能力的特性和它们之间的冗余度36]。

如图2,CFS首先计算feature-class和feature-feature从源码项目数据集关联矩阵,然后搜索空间使用贪婪的最佳优先搜索特征子集。

防止最佳优先搜索探索整个搜索空间特征子集,我们遵循的设置34实施终止准则。搜索将终止如果连续5完全展开子集没有改进当前的最佳子集。CFS过滤特性的特征子集评价函数,打算找到一个满足条件的特征子集的低feature-feature相关性和feature-class相关性强,因此筛选冗余特性(37]。特征子集评价函数值可以计算的优点 的值是特征子集的价值 选择功能。 平均feature-class相关性和吗 平均feature-feature相关性。 3.1

算法描述如下。

(我) 输入: ,特性集和 特性和类;
(2) 输出: ,的子集选择特性,
1 , , ,。,
2 计算的优点 , ,。, 由(3)
3 把功能的最大优点 ,和删除它
4 计算的优点
5 把新功能的最大价值 ,计算 ,
6 如果 然后
7 删除的新特性
8 其他的
9 更新 ,删除的新特性 ,
10 如果
11 重复步骤5步骤7,直到 没有一定次数的变化
12 返回
3.3。分类阶段

随机森林是一个集成的学习模式识别方法(19,38]。它已经证明了随机森林具有良好性能CPDP [27,39,40)由于其高公差异常值和噪声。随机森林也不易装配特征(18]。

3显示了随机森林的过程。随机森林使用引导方法随机刮多个样本原始样本,每个样本集的决策树建模。然后我们给出一个全面的结论从所有决策树的结果。随机森林的投票决策过程显示

表示分类模型相结合, 决策树表示单一主题, 是标签的集合类, 是指示性的功能。

从源码项目数据集有一个偷袭得手 加工领域适应阶段获得一个随机选择的子集 作为训练集,训练数据集的样本大小是一样的原始数据。

这种抽样方法的随机森林确保训练集的变化。为了简单的解释,我们假设 样本数据集 每个样本的概率被选中 重复它 次,所以每一个样本的概率 不选是 作为 趋于无穷时, 我们可以假设样本的37% 不会出现,保证训练集的可变性。 功能是随机选择从源项目数据集构建决策树,和每个节点基于(2)。

在一个决策树, 为每个属性和度量计算变量的最小值 指标选择将当前节点。决策树由递归直到到达停止准则。

算法描述如下。

(我) 输入: ,源项目的数据集; ,从源代码示例项目的数据集
输出: =的分类
(1)
(2) 使用引导 训练数据集
(3) 使用 生成一个树 没有修剪
(4) 随机选择 功能从 的特性
(5) 计算 度量的基础上(2)每个节点选择基于所选择的最优特性 特性
(6) 分裂,直到树长到最大
(7) 结束了
(8) 返回

4所示。实验设计

TFIA为我们的方法,在本节中,我们提出四个研究问题和建立实验讨论和分析每个问题。

4.1。研究问题

RQ1:特性过滤方法提出了对模型的性能有什么影响?

在TFIA,我们使用过滤来减少数据分布差异由CFS在源和目标项目的数据集。因此我们打算分析过滤方法的作用在整个CPDP模型。

RQ2:在分类阶段,分类器的选择影响总体性能吗?

在TFIA feature-class相关性也放大在分类阶段我们用随机森林分类器。在不同类型的数据分类器表现多样化,所以我们想调查其他分类器如何执行我们的模型,如线性分类器逻辑回归和支持向量分类、贝叶斯公式朴素贝叶斯分类器,和基于树的决策树分类器。

RQ3:当传输特性在样本层面,转移的比例会影响结果吗?

在域TFIA的适应阶段,一定比例的样本标记目标项目是必需的。我们要分析有不同比例的样本标记目标项目在项目影响预测的整体性能。

RQ4:与经典的方法和最新的研究相比,本文方法的改进CPDP模型的性能?

各种方法CPDP)的研究人员已经提出的问题,如柠檬酸的经典方法(23],彼得斯过滤方法[22],Burak过滤方法[21),新方法是(27]。我们寻求分析TFIA不同于这些方法获得的性能如何。

4.2。数据集

在本文中,我们使用AEEEM数据库,一种广泛使用的数据集领域的软件缺陷预测的研究。AEEEM数据库收集和编制的D 'Ambros et al。41]。表1显示AEEEM数据库的详细信息,包括项目名称、项目类型、数量的模块,有缺陷的模块,数字和比例有缺陷的模块。

4.3。实验环境

我们所有的代码都写在Python3.7。用于实验的GPU是NVIDIA泰坦V和中央处理器是英特尔19 - 9920 x。分类是通过WEKA [42使用默认参数。

4.4。性能测量

混淆矩阵用于存储正确的和不正确的决策由预测模型。我们的缺陷预测的目的是测试缺陷数据。在本文中,我们认为一个示例本身是有缺陷的,和分类器也认为它有缺陷,称为真阳性(TP)。分类是假阴性(FN)如果分类器认为它是干净的。同样,如果样品没有缺陷,分类器分类缺陷,称为假阳性(FP);缺陷的分类器分类是免费的,称为真阴性(TN)。

4.5。F1-Measure

F1-measure,也称为f值,加权求和平均精度和召回。精确的比例是正确预测缺陷模块对所有模块预测缺陷,计算如图所示

回忆正确预测缺陷的比例是所有真正的有缺陷的模块,模块计算中所示

F1-measure常被用来评估分类模型的性能。F1-measure可以计算

4.6。ROC曲线下的面积

ROC曲线下面积(AUC)是用来评估模型获得的歧视的程度。AUC范围的值在[0,1]。随机预测AUC是0.5。AUC是AUC的优点是对决策阈值精度和召回等。AUC越高,预测就越好。

4.7。马修斯相关系数

马修斯相关系数(MCC)是用于机器学习作为衡量二进制(2-category)质量分类,介绍了从生物化学布莱恩•马修斯(george w . bush)在1975年(43]。

MCC考虑真假,阳性和阴性,通常被认为是一个平衡的措施,可以使用即使非常不同大小的类44]。MCC本质上是一个观察和预测二元分类之间的相关系数。它会返回一个- 1和+ 1之间的值。MCC = + 1表示一个完美的预测,MCC = 0表示模型并不比一个随机预测,和MCC = 1表示一个完整的预测和观察之间的矛盾。

MCC的公式所示

5。结果与讨论

在本节中,我们给出了该系统的实验结果并给出答案的问题部分3

5.1。答案RQ1

回答RQ1,我们设计了两组实验AEEEM数据库,我们成立了一个共有20源-目标项目对五个项目,包括情商,JDT, ML, LC, PDE。第一组实验进行不过滤这些20对源-目标项目。和第二组实验过滤CFS基于贪婪的最佳优先搜索策略在本文提出。两组实验使用随机森林分类器。两组实验随机添加40%的目标项目数据到源数据集和源项目数据被处理通过重新取样。

2显示的结果评价指标获得20日源-目标项目对不(模式1)和模型(2)本文提出的滤波方法。

从表2,它可以观察到,整体效果的预测模型的训练数据处理的过滤方法显著提高(粗体)的数据,平均F1-measure提高约156.54%,AUC提高约45.74%,和MCC提高约173.46%。数值,在这些20源-目标项目对模型与过滤所有的工作比那些没有过滤。

4F1-measure的箱线图,AUC, MCC模型没有过滤过滤(模式1)和模型(模型2)基于数据表2。从图可以看出4的预测模型的训练数据处理的过滤相比有更高的整体分布的数值区间数据没有过滤。盒子的大小和endline长度、模型的整体性能和过滤处理后也变得不那么稳定,性能更稳定。因此,我们可以得出结论,过滤方法提出了有效提高CPDP模型对这些数据集的性能。

5.2。答案RQ2

回答RQ2, 20从AEEEM数据库源-目标项目训练和验证使用朴素贝叶斯(NB),逻辑回归(LR),决策树(DT),支持向量分类(SVC)和随机森林分类器(RF)。分别所有的数据集都处理的过滤方法。每组实验随机40%样本目标项目数据集添加到源数据集和源项目数据被处理通过重新取样。

3显示了F1-measure, AUC, MCC模型有不同的分类,包括朴素贝叶斯(NB),逻辑回归(LR),决策树(DT),支持向量分类(SVC)和随机森林(RF)。以粗体显示的数据分类与每组实验的最佳性能。F1-measure显示的价值,我们所处理的数据过滤方法在这篇文章中,射频有最好的结果,决策树是第二个最好的,和LR, NB, SVC更相似,不同于射频和DT。情况是相同的AUC和MCC。这种现象可能造成的想法,在第一阶段,我们的过滤方法放大的比例特性,有很强的相关性与类。所以它有更好的性能在DT和决策树射频集成方法。其他三个数据集分类器相对不敏感的放大功能,所以结果比DT和射频。

5是F1-measure的箱线图,AUC, MCC模型与不同的分类,包括朴素贝叶斯(NB),逻辑回归(LR),决策树(DT),支持向量分类(SVC)和随机森林(RF)。从图5可以看出,用随机森林预测模型构建和决策树分类器实现更高的性能指标和总体收入波动。这表明,分类器的选择影响的性能预测模型。在数据处理的过滤方法,分类器更敏感特性的重要性将有更好的结果。

5.3。答案RQ3

分析样本的比例的影响项目目标数据集添加到源代码项目数据集上的预测结果,我们添加了不同比例的标记目标项目源码项目数据集的样本与TFIA步骤和训练的10%跌至0%。每个源项目数据被处理通过重新取样。

4显示了平均F1-measure, AUC, MCC值模型的目标项目的样本添加到源代码项目在项目源-目标20日不同比例对。

然后我们平滑值绘制图表如图6的变换,从中我们可以看到,这三个措施开始变得非常小的在70%左右,表明模型的性能达到最好在70%左右。但对于实际预测环境的考虑,这不是可行的手动标签样本在70%的目标项目,所以我们只考虑指标的增长率。可以看出,AUC开始平整40%左右,和改进F1-measure和MCC开始变得更小,所以我们认为,添加标签样本的40%目标项目源码项目会有更好的结果在这些20对源-目标项目。

5.4。答案RQ4

回答RQ4,我们使用柠檬酸,Burak过滤器,彼得斯过滤器,和20日是源-目标项目对AEEEM数据库中的预测和与我们提出的方法相比,分别。确保实验条件的一致性,数据集被随机的源项目目标项目样本数据集添加到40%,和源码项目数据集处理通过重新取样。

5显示了F1-measure, AUC, MCC是(模式1),柠檬酸(模型2),彼得斯过滤器(模式3),Burak过滤器(模式4),TFIA(5)模型。

从表中的数据可以看出5与其他方法相比,该方法在本文中显示F1-measure得到显著提升,AUC, MCC。作为一个例子,F1-measure的价值提高了约126.62%柠檬酸、98.64% Burak过滤器,彼得斯在过滤86.46%,31.12%是。

7F1-measure的箱线图,AUC, MCC是(模式1)、柠檬酸(模型2),彼得斯过滤器(模式3),Burak过滤器(模式4),和TFIA(5)模型。从图吗7本文,我们可以看到,该方法有小盒和短endline长度相对于其他方法,表明TFIA对数据集执行更加一致。虽然是执行比柠檬酸,Burak过滤器,和彼得斯过滤器平均F1-measure,是更大的波动。因此,我们可以得出结论,本文提出的方法具有良好的稳定性和预测影响AEEEM数据库相比,这些方法。

5.5。威胁的有效性

摘要威胁有效性主要分为内部和外部效度。

内部效度来自于分类器参数的设置。在本文中,我们设置了默认的参数引用以及WEKA的工具,这可能会导致一些不同的分类结果。减轻这种差异,我们使用相同的默认参数提供的WEKA分类阶段我们的方法。

外部效度主要来自所使用的数据集。我们用五个项目从公开AEEEM数据库数据集和结合20源-目标项目对我们的实验。如果选择其他数据源,特别是那些来自现实世界的工程数据集,可以获得不同的实验结果。尝试更多的场景将会包含在我们的未来的研究计划。

6。结论和未来的工作

解决问题的类不平衡,不同项目之间数据分布在跨项目缺陷预测(CcrossPDP)模式识别的典型应用,我们提出一个模型基于两阶段特征重要性放大(TFIA)。域中的适应阶段,TFIA减少源和目标之间的数据分布差异项目通过添加一定比例的样本源项目的目标项目。同时,correlation-based特征选择(CFS)与一个贪婪的最佳优先搜索策略对特征选择是利用获得的特征子集feature-feature相关性弱和强feature-class相关性。项目源和目标数据集过滤通过输入下面这个功能子集分类阶段。树分类器的敏感特性feature-class相关性高、随机森林,基于决策树的综合方法对模式识别、函数在分类阶段。多个决策树可以放大特性和互相帮助的重要性,提高整体的性能预测模型。

20日我们进行了四个实验来验证TFIA项目广泛采用的双AEEEM数据集。第一个实验表明,我们设计的领域适应气候变化的方法是有效的,显著改善模型的整体性能。第二个实验表明,随机森林优于其他分类器数据处理领域适应气候变化的方法。的第三个实验分析了影响样本的比例添加目标项目的模型中。实验证明,添加40%的目标项目数据使得巨大的改善模型性能考虑到实际应用场景。在第四个实验中,我们比较TFIA和其他四个经典研究方法,和实验结果证明TFIA提供更好和更稳定的性能。

在本文中,我们的方法已经被证明对CPDP有改善作用,但仍有一些地方需要进一步研究。我们将跟随在我们未来的研究两个方面。第一个是验证TFIA其他数据集的有效性和使它具有更强的可伸缩性和健壮的因为我们的实验使用同一根项目的子项目。其次,由于本文中使用的参数是违约,这对预测模型有很大影响,我们将寻求找到调整参数对模型性能的影响。我们也会寻找最合适的参数和方法,可以自动调节参数根据实际的应用场景。

数据可用性

公开的数据集用于这项研究(AEEEM)。

的利益冲突

作者宣称没有利益冲突。

确认

这项工作是由中国国家自然科学基金(没有。61702044)。