论文部分内容阅读
由于机器学习在软件缺陷预测(SDP)中的突出表现,基于机器学习的缺陷判定方法已经成为软件缺陷预测的主流方法。然而,随着跨项目缺陷预测(CPDP)的提出,传统有监督式学习方法的表现无法满足这一问题的要求。这是因为,在该领域中研究人员需要构建通用模型,并使用源项目数据来预测目标项目的缺陷,而训练数据和预测数据间分布的差异将对分类器的性能产生影响。在跨项目软件缺陷预测中,数据分布的预处理和可迁移分类器的训练是两个关键问题,能否从源项目和目标项目的数据中寻找合适的特征空间并训练优秀的迁移模型直接决定了最终预测的效果。然而,大部分研究者要么只关注于减小数据分布的差异性来寻找一个合适的特征空间,要么只关注于如何使分类器具有迁移的能力来增强其在训练数据和测试数据不同的情况下预测缺陷的能力。但是,他们都忽略了另一种方法对于最终预测结果的有效提升。此外,传统的机器学习算法使用的模型相对简单,属于浅层次学习,这类算法对复杂函数建模时表达能力受限,泛化能力较差。为了解决基于机器学习的跨软件缺陷预测中存在的问题,本文总结现有的研究方法,从以下几个方面进行了研究和实验:(1)本文提出了一种基于距离的基线变换法(BT)。为了减小源项目和目标项目中数据分布的差异性问题,该方法首先计算无缺陷样本之间的距离,然后从每个数据集中找出一个无缺陷样本作为该数据集的基线,最后使用Rank函数对数据进行转换。实验结果表明,经过基线变换法预处理的数据可以有效进行跨项目缺陷预测,并达到项目内缺陷预测的水平。另外,在与同类型预处理方法的比较中,基线变换法在跨项目缺陷预测上具有明显的优势。(2)本文提出了一种基于预处理和分类器迁移的综合预测模型(BTHYDRA+),分别用以构建更优的分类空间以及增强分类器的性能。该模型首先采用基线变换法进行数据的预处理,然后选择遗传算法(GA)作为迁移成分,以不同分类器的分类效果作为适应度,逐步演化在源项目和目标项目中有效的判别表征。最后以集成学习(EL)解决了特征单一和分类器表现力有限的问题。实验结果表明,综合预测模型有效地提升了分类器的预测水平,并且能够有效地结合不同的分类器以及适用于不同量级的数据集。在与其他跨项目缺陷预测方法的比较中,综合预测模型在准确率和F值上普遍占优。(3)本文提出了在目标项目上寻找基线的方式以及基线变换基于特征的实现形式。首先根据无缺陷样本的数量和特性,以聚类算法和基线加权平均法来解决目标项目中样本标记可能未知的情况。然后分析了基线变换法的粒度,使用特征层面的基线变换进一步减小了在不同项目间数据分布的差异。实验结果表明,聚类算法和基线加权平均法可以近似替代目标项目中样本标记已知时所计算出的基线。使用基于特征的基线变换法实现了在不同分类器(SVM、NB、CART)上性能的提升。