APP下载

增加度量元的迁移学习跨项目软件缺陷预测

2018-07-25娄丰鹏荆晓远

计算机技术与发展 2018年7期
关键词:度量分类器样本

娄丰鹏,吴 迪,荆晓远,吴 飞

(1.南京邮电大学 计算机学院,江苏 南京 210003;2.武汉大学 计算机学院 软件工程国家重点实验室,湖北 武汉 430072;3.南京邮电大学 自动化学院,江苏 南京 210003)

0 引 言

软件缺陷通常导致系统发生故障,进而造成财政和金融损失。软件在正式发布之前,可以通过不同级别的测试来检验和删除这些缺陷。因此,软件缺陷预测是保证系统正常运行的一个至关重要的步骤。

在软件工程领域,软件缺陷预测已经成为一个重大的研究课题,引起了很多学者的高度重视[1-2]。近年来,已经提出了许多有效的软件缺陷预测方法[3-5]。这些方法是通过从软件仓库中挖掘数据集,然后使用机器学习分类器预测一个学习模型[6],通过该模型可以对软件缺陷进行预测[7]。近年来比较流行的机器学习分类器有很多,如决策树(decision tree,DT)、随机森林(random forest,RF)、逻辑回归(logistic regression,LR)、支持向量机模型(support vector machine,SVM)[8-9]等。但是,大多数方法是在项目内部进行评估的,新项目通常没有足够的缺陷数据来构建预测模型。对于一个新项目或者是具有有限训练数据的新项目,最好通过使用现有源项目中足够的训练数据来学习预测模型,然后将模型应用于某些目标项目,称之为跨项目。因此,跨项目缺陷预测是必要的。但是,由于源项目和目标项目之间的特征分布差异,导致跨项目软件缺陷预测的性能通常较差。

针对上述问题,文中采用迁移学习方法(transfer component analysis,TCA)[7]查找源项目与目标项目的相似性,并提出一种通过增加度量元来提高基于迁移学习的跨项目缺陷预测性能的方法(MTCA)。该方法首先使用分类器对数据集进行一次项目内快速预测,将预测结果作为新的度量元加入数据集构成新的数据集。然后,采用迁移学习将源项目中提取的知识转移至目标项目,并使用分类器预测目标项目。最后在AEEEM数据库[10]上进行验证。

1 机器学习算法以及缺陷预测过程

1.1 机器学习分类器算法研究

逻辑回归算法广泛应用于数据挖掘、数据分类,同时也在支持概率类型结果输出的方面得到大量应用。逻辑回归算法是在线性回归的基础上,加入逻辑函数,使用输入变量线性加权实现分类,最终输出概率估计。

支持向量机算法[8-9]是基于核的算法,主要是把输入数据映射到一个高维空间,使输入数据由线性不可分以最大化分类间隔构建最优分割超平面,从而提高学习机的泛化能力。对于分类,支持向量机算法根据空间中的样本计算该空间的决策曲面,由此确定该空间中未知样本的所属类别。

随机森林算法是多个决策树分类器的集成,其输出的类别是由个别决策树输出的类别的众数决定的。随机森林训练和预测速度快,对训练数据的容错能力可以进行有效估计,当数据集中的数据缺失很多时依旧可以保持精度不变,能够在分类过程中生成一个泛化误差较小的内部无偏估计。

近邻算法中,所选择的邻居都是已经得到正确分类的数据。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别,最近邻样本中的大多数属于哪个类别,该样本就属于哪个类别。

1.2 缺陷预测过程

图1是一般的软件缺陷预测过程。

在项目内预测中,训练样本集和测试样本集来自同一个项目。对于跨项目预测,训练样本集来自一个项目(源),测试样本集来自另一个项目(目标)。

图1 软件缺陷预测过程

如图1所示,该过程首先是收集软件并标记每个软件发布后的缺陷数量,如果一个软件存在至少一个缺陷,则表明该软件存在缺陷,否则为无缺陷。通过提取复杂度等度量用于机器模型训练分类器,然后通过分类器预测一个新的样本的缺陷情况。

2 迁移学习与文中算法

2.1 迁移学习以及模型定义

近年来,机器学习和数据挖掘技术引起了越来越多的关注[11]。在训练样本和测试样本具有相同的特征空间和分布时,大多数机器学习方法可以获得良好的性能[11]。当特征空间和分布发生变化时,学习模型需要重建。在这种情况下,有必要重新收集训练数据并再次标记。通常,重建学习模型是昂贵的,并且标注新的训练数据需要相当大的努力。迁移学习通过转移从相关但不同领域提取的知识来解决这些问题,这可以被认为是相关性预测中的源项目,而在目标领域建立精确的预测模型,可以被视为目标项目[12]。

迁移学习的模型定义如下:

设XT为目标样本空间,XS为源样本空间,目标样本空间也即目标空间,就是想要去分类的样本空间。设Y={0,1}为类空间,训练数据也就是:T⊆{(X=XS)×Y}。

2.2 TCA(transfer component analysis)

TCA是一种基于特征的迁移学习方法,使用MMD(maximum mean discrepancy)[13-14]将处于不同数据分布的源空间和目标空间一起映射到一个高维的再生核希尔伯特空间。在该空间中,最小化源数据和目标数据距离,同时最大程度地保留源数据和目标数据各自的内部属性,那么跨空间的差异可能会大大降低。因此,通过这个高维空间中的新表示,可以应用标准的机器学习方法来训练源空间中的分类器或回归模型,以在目标空间中使用。TCA算法描述如下:

输入:源空间训练样本集Ta,目标空间测试样本集Tb,训练数据M,测试数据N。

预处理:对样本集进行预处理(如归一化、降维等)。

(1)构造L矩阵。

(2)构造H矩阵。

(3)构造核函数矩阵K。

根据Ta和Tb,使用常用核函数计算K。

(4)构造矩阵W。

求(KLK+μI)-1KHK的前m个特征值,即为W矩阵。

(5)映射样本数据:W'*T。

输出:源训练样本和目标测试样本的降维数据。

2.3 文中算法流程

在上一节的基础上,得到降维之后的训练样本数据运用传统机器学习方法训练源空间的分类器,并对目标空间的测试数据进行缺陷预测。结合前面介绍的方法,得到文中算法流程,如图2所示。

图2 文中算法流程

图中第一阶段代表第一次工程内预测,将预测结果作为工程的度量元加入数据集,通过数据集预处理得到新数据集作为第二阶段的输入数据[15];第二阶段运用TCA算法,结合复杂的分类模型进行跨工程预测,得到最终的预测结果。算法MTCA第二阶段伪代码描述如下:

输入:源空间训练样本集XS,目标空间测试样本集XT。

预处理:对样本集进行预处理(如归一化、降维等)。

步骤2:使用SVM分类器对每一个测试样本实例进行预测分类。

输出:目标测试样本的预测标记。

3 实 验

3.1 实验数据库

实验是在AEEEM[10]数据库上进行的,该数据库包含5个工程,表1介绍了各个工程的静态代码度量和缺陷数等特征[16]。

表1 AEEEM数据集

3.2 评估度量

通过Precision(精确度)、Recall(召回率)以及F-measure(综合评估)三个指标来全面评估各个方法的性能,这三个指标是评估分类模型最具代表性的度量[17],一个好的预测模型希望实现较高的Recall和Precision值。

根据表2,Precision和Recall可以定义为:

(1)

(2)

表2 四种预测结果

但是,Recall和Precision两个指标之间存在着权衡。因此,需要对召回率和精确度进行综合评估,则F-measure定义为:

(3)

这四种评价指标值都在0~1之间,一个好的缺陷预测模型应该会有较高的Precision、F-measure和Recall值。而且F-measure是综合性评价指标,更加重要。

3.3 实验结果与分析

文中使用一对一的跨工程预测(即仅使用一个源项目预测一个目标项目),使用AEEEM库构建一个跨项目组合,例如:EQ→JDT、EQ→LC、LC→PDE等。实验步骤为:首先是AEEEM库中的5个工程各自做一次工程内缺陷预测,分类器分别是LR、RF、NN,将预测结果作为工程的度量元加入数据集,每个原始数据集加入一个特征,即构成了三组新的数据集,即(EQ_LR、JDT_LR、ML_LR、LC_LR、JDT_LR)为一组新数据集,(EQ_RF、JDT_RF、ML_RF、LC_RF、JDT_RF)为一组新数据集,(EQ_NN、JDT_NN、ML_NN、LC_NN、JDT_NN)为一组新数据集。每组新数据集进行跨项目组合并迁移,然后进行跨工程的软件缺陷再预测,二次预测使用一个鲁棒性更强的分类器,文中使用SVM,这一算法流程简称MTCA。在对比算法TCA时,为了保证实验的可靠性,使用SVM分类器。对TCA方法与MTCA方法做对比,TCA使用的是原始数据集,MTCA使用的是EQ、JDT、LC、ML、PDE三组新数据集,随机进行20次求平均,结果如表3所示。

表3 在AEEEM数据库上的实验结果

分析表3可知,MTCA在各个数据库上的缺陷预测效果普遍好于TCA,尤其是F-measure评价指标,相较其他方法优势明显。F-measure作为综合评价指标,从该值的观测中就能看出算法的总体性能,而MTCA在F-measure上较TCA要高出很多,也说明了该方法的优势。但是,也存在一些结果相比较低的,原因是加入新的度量元时可能引入了过多的错误数据,导致缺陷预测模型向着错误的方向构建。总体上结果还是普遍较好。

4 结束语

针对当前软件缺陷预测模型中机器学习算法对预测模型性能的影响问题,提出了一种通过增加度量元来提高基于迁移学习的跨项目缺陷预测性能的方法。首先使用分类器对数据集进行一次项目内预测,并将预测结果作为新的度量元加入数据集;然后采用迁移学习方法将源项目中提取的知识转移至目标项目,并使用分类器预测目标项目,从而提高了跨项目软件缺陷预测效率。通过对比验证了该方法的有效性。如何合理选择分类器以进一步提高缺陷预测模型的性能指标是下一步研究的问题。

猜你喜欢

度量分类器样本
鲍文慧《度量空间之一》
学贯中西(6):阐述ML分类器的工作流程
用样本估计总体复习点拨
基于朴素Bayes组合的简易集成分类器①
代数群上由模糊(拟)伪度量诱导的拓扑
一种自适应子融合集成多分类器方法
突出知识本质 关注知识结构提升思维能力
度 量
规划·样本
随机微分方程的样本Lyapunov二次型估计