论文部分内容阅读
在受资源限制的软件质量维护场景下,软件质量维护团队需要使用预测模型来预测不同的模块是否可能出现缺陷,以便更好分配工作量。通常用于预测模块缺陷的模型被称为缺陷预测模型。缺陷预测模型的构建和评估受到多个因素的影响,例如不平衡数据处理、建模技术参数调优、模型评价方法选取等。其中,不平衡数据处理针对缺陷预测数据中广泛存在的不平衡性进行调整以满足建模技术的假设,从而提升模型表现。建模技术参数调优通过选取最优参数而非使用默认参数,从而对不同的数据集建立更合适的模型。模型评估方式的选取则是利用更合理的评价方式对于预测结果进行分析,合理的模型评估方式更有利于研究结论的复现。然而,当前的研究中,缺乏相关工作在统一的且更贴近真实开发环境的数据集上探讨上述关键因素,尤其对于模型评估方式对模型评价的影响,罕有工作进行探讨。同时对于某些因素的研究,不同的研究者得出不同甚至相反的结论。为解决上述问题,本文在统一的数据上,探究影响软件缺陷预测模型构建和评价的关键影响因素。本文主要贡献如下:(1)探究不平衡处理的影响:在选中的数据集上,对比使用SMOTE不平衡处理技术模型和未进行不平衡处理的模型间的预测结果。实验结果表明,针对随机森林和逻辑回归等模型,在阈值无关的评价指标AUC下,使用不平衡处理技术的模型表现显著优于未进行不平衡处理的模型表现。同样,对于阈值相关的4种评价指标F-score、G-measure、Balance和MCC,经过胜/平/负分析,发现这4个评价指标下,结论与AUC的一致。但是,针对另外一些建模技术(例如朴素贝叶斯等),不平衡处理带来的提升并不显著,同时对于假警报率pf等指标,不平衡处理可能带来反效果,因此在实际使用中,需要根据具体场景和选择的具体技术仔细考虑是否进行不平衡处理。(2)探究参数调优的影响:在选中的数据集,以及多种建模技术上和评价指标上,对比参数调优模型和使用默认参数模型的预测表现和模型稳定性。实验结果表明,在实践应用中,选定某种特定的建模技术后,使用者应该仔细的考虑参数调优的使用(依技术而定)。例如,对神经网络技术,参数调优带来显著的结果提升,但是对于朴素贝叶斯等技术,参数调优技术几乎不带来显著改变。同时实验结果还表明,使用参数调优模型的模型在稳定性上至少和默认参数模型相当,因此引入自动参数调优进行建模并不会造成模型不稳定。同时实验结果也发现,其他缺陷预测模型构建影响因子(例如不平衡处理)对于参数调优的结果同样带来影响。(3)探究模型评估方法的影响:在选中的数据集上,对于15种建模技术,分别利用基于全局的模型评价方式(CD图评价、Scott-KnottESD评价和算法图评价),以及基于局部的模型评价方式(胜/平/负分析),分析了不同建模技术间预测表现的好坏。实验结果表明,CD图与Scott-KnottESD评价方式得出的结论虽然不存在冲突,但也仅有不足半数完全一致(同时在两种评价方式下,建模技术A都优于建模技术B,则为一致)。算法图评价方式分别与二者结论一致数目远超于半数,也未存在冲突。因此在一个研究工作中,若要与多个前人研究对比(不同研究者使用评价方式不同),使用算法图方式做为基于全局的评价方式将更利于不同研究者间研究结论的比较。同时实验发现以算法图为代表的全局模型评价方式和以胜/平/负分析为代表的局部模型评价方式二者相似度较大,并无较大差异。最后,在15种建模技术上,对比算法图评价得出的结论和前人的结论,发现二者确实较为相似。因此在复现前人的工作,或者需要同前人工作做对比的场景下,推荐使用算法图为最终的结果评价方式。