论文部分内容阅读
近年来,软件缺陷预测在软件工程领域引起了研究者的广泛关注,基于机器学习的缺陷预测技术成为了研究的热点。软件缺陷预测主要是基于软件项目中的历史缺陷数据构建出预测模型,以识别出被测项目中潜在的缺陷,从而达到优化测试资源配置和提高软件产品质量的目的。最近,研究者提出了异质软件缺陷预测,是指利用其它项目(即源项目)中的数据来预测目标项目中的缺陷,解决了源与目标项目数据之间的度量不一致(即度量的类型不同或数目不同)问题。虽然现有的异质缺陷预测方法取得了不错的效果,但在实际应用中仍然存在着一些亟待解决的问题。本文主要研究基于机器学习的新技术、新方法用于处理异质软件缺陷预测中的一些问题。(1)缺陷数据通常包含不同类型的软件度量,不同的度量具有不同的物理意义及分布,这些事实表明了缺陷数据常位于非线性的特征空间中,具有线性不可分的特性,存在着线性不可分的问题。(2)缺陷数据通常是类不平衡的,即一个项目中所包含无缺陷模块的数量远远多于缺陷模块的数量,呈现出类不平衡的分布。不平衡的数据分布会使得预测模型给缺陷类带来不同程度的误分,进而会影响预测模型的性能。(3)由于目标项目内的数据与源项目中的数据具有不同的软件度量,它们之间通常是异构的。如何使用混合项目数据(即组合少量标记的目标数据和源数据)用于异质缺陷预测并没有得到研究。(4)现有的异质缺陷预测方法都是基于单个数据源来预测目标项目,通常情况下,多个数据源比单个源包含有更多的有用信息。直观上讲,采用多个数据源来预测目标项目可能会带来更好的性能。因此,如何合理有效地使用多个数据源用于异质缺陷预测是一项非常有意义的研究工作。(5)执行跨项目缺陷预测的一个先决条件是这些数据源可以从其它公司中获得。在实际应用中,由于数据的隐私问题,大多数的数据拥有者并不愿意共享他们的项目数据。因此,为了促使数据共享,在数据拥有者发布他们的数据之前,如何保护公司中数据的隐私问题是一项非常重要并亟待解决的研究工作。本文针对目前异质软件缺陷预测中的线性不可分、类不平衡、混合项目数据、多源以及隐私保护问题进行了研究,并取得了一些创新性的研究成果:(1)针对线性不可分问题与类不平衡问题,提出了一种基于代价敏感迁移核典型相关分析的异质软件缺陷预测方法。具体地,为了处理线性不可分问题,该方法首先采用迁移核典型相关分析技术把源数据和目标数据分别映射到高维非线性核空间,然后再把它们投影到一个公共的子空间中。在这个公共子空间里,源与目标项目之间的数据分布变得更相似,不同类别之间的可分离性变得更好。为了处理类不平衡问题,该方法在迁移学习过程中有效地集成了代价敏感学习技术,为源数据中的缺陷与无缺陷类分别赋予不同的代价权重。通过有效地组合迁移核典型相关分析与代价敏感学习技术,该方法可以提高异质缺陷预测模型的性能。在28个项目上进行广泛实验,结果表明了 CTKCCA方法的有效性。(2)针对混合项目数据问题与类不平衡问题,提出了一种基于代价敏感标签与结构一致性单向投影的异质软件缺陷预测方法。具体地,为了能够有效地使用源项目中的数据和目标项目中少量的标记数据,该方法采用基于标签与结构一致性单向投影的域自适应学习技术把源数据变换到目标数据子空间,来更好地匹配它们之间的数据分布,同时保留源数据的结构信息。为了缓解类不平衡分布带来的影响,该方法在域自适应学习过程中有效地结合了代价敏感学习技术,并同时为源和目标数据中的缺陷与无缺陷类分别赋予不同的代价权重。在30个项目上进行广泛实验,结果表明了 CLSUP方法的有效性。(3)针对隐私保护问题与多源问题,提出了一种基于多源与隐私保护的异质软件缺陷预测框架。具体地,为了有效地对源数据进行加密保护,设计了一种基于稀疏表示的双混淆算法。该算法采用基于稀疏表示的近邻选择器为待加密的模块分别选取一个缺陷和一个无缺陷模块来进行两次混淆。为了能够有效地使用多个数据源,基于混淆后的数据,设计了一种基于多源选择的流形鉴别对齐算法。对于一个给定的目标项目,此算法递增地选取与其数据分布相似的源项目。最后,基于精选的项目进行多源异质缺陷预测。在28个项目上进行广泛实验,结果表明了隐私保护算法SRDO与多源异质缺陷预测方法MSMDA的有效性。