论文部分内容阅读
软件缺陷预测技术是依靠机器学习算法来挖掘和分析软件历史数据,从而发现软件产品中存在的高风险模块,将有限的测试资源分配到高风险模块中。然而实际软件开发中,新启动项目或项目开发的初期缺少历史数据使得传统的缺陷预测技术性能较差。随着大量开源项目数据集的公开,跨项目缺陷预测技术应用而生,逐渐成为软件工程领域的研究热点之一。不同项目数据之间存在较大的差异性,迁移学习通过放宽训练数据和被测数据必须满足同分布的假设,实现知识从源域迁移到目标域。因此,基于迁移学习的跨项目缺陷预测引发了学业界和工业界的广泛关注。本文研究了跨项目缺陷预测中的最先进的方法技术,发现现有的跨项目缺陷预测仍然存在着类不平衡、条件分布及边缘概率分布差异性、特征异构、类重叠等关键问题。基于此基础,本文皆在研究基于迁移学习的跨项目缺陷预测方法,提出了创新的实用技术,提升模型的预测性能。具体研究内容如下:(1)基于改进的Tr Ada Boost的混合同构缺陷预测方法。考虑混合同构缺陷预测中类不平衡问题,通过改进Tr Ada Boost的误分实例和弱分类器权重调整方法,提出了改进的Tr Ada Boost(ITr Ada Boost)混合同构缺陷预测方法。首先,改进Tr Ada Boost中误分类实例权重的调整准则,不仅依据是否被误分,同时考虑被误分的实例的类别,对有缺陷实例误分和无缺陷实例误分设置不同权重。其次,改进弱分类器权重的设置,取代精确度,采用马修斯相关系数(MCC)作为弱分类器权重设置依据。对四个数据集中的18个开源项目的大量实验表明,ITr Ada Boost方法不仅优于其他的CPDP方法,而且可以达到项目内类不平衡预测模型的性能。(2)结合分层与最近邻的严格同构缺陷预测方法。考虑项目之间数据分布的差异性,提出了依据条件分布缩小项目差异的严格同构缺陷预测方法,是一个迭代改进的过程。首先通过对之前迭代过程中的预测结果采用投票法(Voting)得到当前被测项目模块的伪标签,然后根据伪标签以及相应类中实例个数,从源域中获取相应的近邻实例,最后根据得到的近邻实例训练分类器,以此类推。实验结果表明,与其他方法比较,该方法具有较高的AUC、Recall和可比较的pf及F-measure值。(3)基于条件对抗领域适应方法的混合异构缺陷预测方法。考虑源域项目和被测项目少量实例的标签信息,同时实现源域向目标域的迁移及分类器训练过程,提出了条件对抗领域适应CDAA(Conditional Domain Adversarial Adaptation)方法。CDAA方法由生成器、辨别器和分类器三部分组成。生成器主要实现源域向目标域项目的迁移,并且迁移中学习标签信息。辨别器主要用于辨别目标域与生成数据。分类器主要用于学习标签信息。大量实验结果表明CDAA方法能够充分利用标签信息,实现源域到目标项目的迁移,从而提高异构缺陷预测模型的性能。(4)基于无监督深度领域适应的严格异构缺陷预测方法。考虑无任何标签数据的被测项目与源域项目的异构问题,引入深度迁移学习的强大学习能力,提出了无监督深度领域适应的异构缺陷预测方法。该方法将源项目和被测项目映射到统一的度量表示(Unified Metric Representation,UMR),以此作为深度网络的输入。在网络训练中,使用最大平均差异(MMD)距离衡量源项目和被测项目之间的分布差异,使用交叉熵损失函数衡量分类误差。大量实验结果表明该方法能有效地解决源域项目和目标项目的度量元异构问题,提高严格异构缺陷预测模型的性能。(5)类重叠对跨项目缺陷预测模型性能的影响分析。为了探究类重叠问题对跨项目缺陷预测模型性能的影响程度,以28个开源项目为实验对象,实证研究了近邻清理方法(Neighbor CLeaning,NCL),K-Means聚类清理方法(K-Means Cluster Cleaning Approach,KMCCA)以及提出的改进的K-Means聚类清除方法(IKMCCA)是否可以改进先进的跨项目缺陷预测模型的性能。实验结果表明在移除了类重叠实例后,预测模型在bal,Recall和AUC性能上得到了很大提升,而且同时考虑类不平衡和类重叠问题更有助于模型性能的提升。该论文有图68幅,表32个,参考文献152篇。