关键词:
软件缺陷预测
WCP-SMOTE
混合特征选择
集成学习
粒度决策熵
E_RHFS
摘要:
在当今信息化时代,应用软件随处可见,软件质量问题也随之而来。软件缺陷是软件质量的对立面,使得软件的安全性和可靠性面临着严重威胁。因此,如何准确而高效对软件模块进行缺陷预测成为一个亟需解决的问题。软件缺陷预测是软件质量保证的重要途径之一,近年来已成为软件工程中一个非常重要的研究课题。然而,借助机器学习的方法进行软件缺陷预测在实际中还面临以下问题:数据类别不平衡、预测精度低等。如何有效解决上述问题已成为目前相关领域的研究热点。本文从数据采样与集成学习的视角来系统研究软件缺陷预测中不平衡数据处理的问题。首先,我们对传统的SMOTE算法进行改进,得到一种基于加权复杂度的SMOTE算法WCP-SMOTE,并将其应用于软件缺陷预测;其次,我们提出一种新的基于加权复杂度的欠采样算法WCP-Under Sampler,将WCP-Under Sampler算法与经典的采样方法进行实验对比,研究了WCP-Under Sampler算法对软件缺陷预测模型性能的影响;最后,将数据采样技术与集成学习方法结合在一起,为了增加基分类器之间的多样性,提出一种基于自助抽样与混合特征选择的集成学习算法E_RHFS,并将其应用于软件缺陷预测。本文的主要工作可归纳如下:(1)基于加权复杂度的SMOTE算法及其在软件缺陷预测中的应用针对软件缺陷预测中数据的类别不平衡问题,对传统的SMOTE算法进行改进,并提出基于加权复杂度的SMOTE算法WCP-SMOTE。该算法利用样本复杂度来辅助合成新样本,从而为类别不平衡问题的处理提供有效方案。将WCP-SMOTE算法与传统的过采样方法进行对比,在多个Promise数据集上的实验表明:利用WCP-SMOTE来处理不平衡数据能够获得更好的缺陷预测性能。(2)基于加权复杂度的欠采样算法及其在软件缺陷预测中的应用针对软件缺陷预测中数据的类别不平衡问题,提出一种新的基于加权复杂度的欠采样算法(即WCP-Under Sampler算法),避免了在欠采样过程中删除一些对模型预测有价值的的样本,为类别不平衡问题的处理提供有效方案。将WCP-Under Sampler算法与传统的采样方法进行对比,在多个Promise数据集上的实验表明:WCP-Under Sampler算法在KNN和CART分类器上均能获得更好的软件缺陷预测性能。(3)基于自助抽样与混合特征选择的集成学习算法及其在软件缺陷预测中的应用集成学习被广泛应用于软件缺陷预测,但已有方法还存在以下问题:基分类器之间的多样性难以保证、预测精度低。针对上述问题,提出一种基于自助抽样与混合特征选择的集成学习算法E_RHFS,并利用其来预测软件缺陷。为了处理数据类别不平衡问题,在执行E_RHFS算法之前,利用采样技术对数据进行平衡化处理。在平衡的数据集上,E_RHFS算法首先利用自助抽样技术生成多个抽样集,并利用粒度决策熵与随机子空间技术来对每个抽样集进行混合特征选择;第二,在每个经过混合特征选择的抽样集上构建一个基分类器;最后,通过投票的方式将所有基分类器集成在一起,从而得到最终用于软件缺陷预测的集成分类器。在多个Promise数据集上的实验表明:将数据采样算法与E_RHFS算法相结合来进行软件缺陷预测可以获得更好的缺陷预测性能。