论文部分内容阅读
软件缺陷预测技术是利用软件度量来构建软件缺陷预测模型,并预测软件系统中潜在缺陷的技术,它能够帮助我们定位缺陷位置,有利于合理分配资源,节省时间,提高软件开发的效率。本文基于正则化m×2交叉验证,在软件缺陷个数预测建模中,给出一种基于最大信息系数的特征选择方法;在缺陷倾向性预测建模中,给出了一种采用投票的集成分类器,并通过实验验证了方法的有效性。在缺陷个数预测中,由静态代码提取的类层面度量元(特征)以及由方法聚合(sum,avg,max,min)到类的特征往往较多,使用传统的特征选择方法(如AIC、BIC)通常先要确定了模型,不同的模型选出的特征集差异较大,且模型的可解释性差。最大信息系数MIC(Maximal Information Coefficient)是David等人提出的度量两个连续变量之间相互依赖程度的一个指标,且有基于观测数据的计算办法。本文基于软件缺陷个数与各特征的MIC度量先选择特征,再对所选特征进行了适当的幂次变换,最后使用主成分泊松和负二项回归建模。本文实验基于NASA的KC1的类层面数据集,采用了m?2交叉验证的序贯t-检验来对两模型的性能差异的显著性进行检验,模型性能评价指标采用FPA、AAE、ARE。实验结果表明:1)基于MIC选出的特征主要是sum、avg、max三种聚合模式特征,与AIC、BIC方法有明显的差异;2)对特征做适当的幂次变换在多数模型下可以改善其性能;3)对特征做幂次变换后,做主成分分析与因子分析可以得到两个明显的因子,其一个因子正好对应avg与max聚合模式的特征集,另一个因子正好对应sum的聚合模式特征集,使得模型具有较好的可解释性。综合实验的各项指标可以得出,sum、avg、max三种聚合模式对软件缺陷预测有显著作用,且基于MIC所选特征而构造的模型是有优势的。在缺陷倾向性预测中,对给定的分类器和数据集,本文基于正则化m×2交叉验证对数据切分,在训练时结合使用随机下采样(random undersampling)策略,以m个混淆矩阵的结果采用多数投票法(majority vote)构建了一个集成的分类器;为了验证其性能,我们在NASA的4个分类数据集,7种分类器上进行了实验,以P,R,F1值,AUC为性能评价指标;实验结果表明,随着m的增大,这种集成分类器的性能逐渐趋于稳定,并可以显著提高预测的性能;特别是当分类器为决策树时,其性能提高尤其明显。