论文部分内容阅读
在有限的测试资源条件下,对大量的软件模块进行测试评估是一项耗时且代价较大的工作。此外,传统的测试方法在软件开发过程中只采用有限的路径,其质量难以得到保障。因此,一种用于软件开发早期的软件缺陷预测(Software Defect Prediction,SDP)自动技术被广泛采用。该技术通过优选和优化测试来提高资源利用率和软件质量。此外,机器学习技术被应用到SDP中,在获得高精度预测结果的同时也对数据质量提出了更高的要求,但在实际SDP中通常面对的是含有杂质的数据集。软件缺陷预测大多采用已标注的实例来构建模型去预测新的未标记实例。如果用于训练的数据集被污染,则会对学习过程和模型结果产生负面影响,最终导致模型精度较低。因此,一种可行的解决方案是通过清理数据集来提升模型预测准确率,并找出可能存在的缺陷予以修复。通过回顾与SDP相关的已有文献发现,该问题与分类密切相关。在一些特定情况下,附加的信息在解决数据质量方面起到关键作用。由于缺陷数据集中存在不重要的软件度量、不平衡类、类噪声和无用实例等,面临的诸多挑战使得分类准确率大受影响,最终导致较差的推理能力和低效的资源管理。因此,为正确的预测软件缺陷,如何确定数据质量和相关软件度量指标仍然是一个开放问题,而本文的主要目的就是去开发一种新的方法来提升SDP方法的效率。首先,提出了一种新的基于最大似然逻辑回归(MLLR)的特征选择(FS)方法。为选择更多相关特征,本方法在MLLR之前使用不平衡处理及噪声过滤等技术对数据进行预处理,主要包括三个步骤:1)迭代分区过滤(IPF),主要是在多次迭代中用于处理缺陷数据集中的类噪声;2)合成少数簇类过采样(SMOTE),主要是在类不平衡时,在潜在缺陷实例及其最近邻实例之间通过随机线性插值生成新的潜在缺陷实例;3)最大似然逻辑回归(MLLR),主要是在指定的置信区间中对每个特征的估计参数,通过Wald测验进行统计显著性检验以识别重要特征。在六个软件缺陷数据集中,将所提出的方法与卡方、信息增益、增益比、相关特征和对称不确定(SU)等一些已知的特征选择方法进行了对比实验,基于三个不同分类器的软件缺陷预测结果验证了所提出的方法相较于这些方法的优势。然后,提出了一种新的过采样方法——SMOTE-FRNF。该方法主要用于解决类不平衡问题以及软件缺陷数据中存在的噪声和边界样本问题。该方法通过集成模糊粗实例选择方法(FRIS)、基于融合分类器(INFFC)和SMOTE过采样的迭代噪声过滤器来处理数据不平衡问题及噪声实例。在运用SMOTE方法过程中,该算法在随机选择的潜在缺陷(DP)k-NN实例之间进行线性插值生成新的实例,再使用FRIS方法移除了模糊正域中隶属度较小的合成少数实例以及原始多数实例,并使用INFFC方法清理整个数据集。在真实数据集和加入不同水平噪音的人工数据集上,与其他在不同预处理方法得到的分类器进行了对比测试,结果表明所提出的SDP方法几乎在所有的对比指标上均优于已有的方法,且Wilcoxon符号秩检验结果进一步验证了所提方法的统计显著性。最后,提出了一个新的融合不同特征选择方法、数据平衡方法及噪声过滤方法的集成预处理框架来处理影响SDP学习效率的因素。该方案使用特征选择方法来处理冗余特征和不相关特征,并通过增加少数类实例解决类不平衡问题并过滤噪声。多个性能指标的对比实验结果显示,所提方法在增强模型性能等方面均要优于现有文献的一些方法。