● 摘要
近年来有许多针对软件仓库的缺陷预测方法的研究,此类研究不可避免地需要相应的软件仓库中的缺陷数据作为数据集以验证不同缺陷定位方法的效率、准确性、召回率等。这类数据集多由软件仓库中的更改历史或历史缺陷数据中挖掘得出。而如此自动挖掘出的缺陷数据集很容易由于开发人员的疏忽或流程不规范等,在原始数据中引入噪音。
本文首先测量了缺陷数据集中的噪音对于经典缺陷预测模型的性能影响。结果表明,随着噪音比率的增加,各个预测模型、机器学习方法和数据集均会产生预测性能的下降,其中,单独的FN噪音主要通过召回率对预测结果产生影响,单独的FP噪音主要通过准确率对预测结果产生影响,20%是大多数数据集与算法可以接受的一个噪音拐点,有很多结果在噪音比例超过20%之后产生了性能的急剧下降。这说明从数据集中识别并消除噪音是有意义的。
针对一个现有的在缺陷数据集中识别噪音的方法,本文给出了一个改进,主要由两个部分组成。首先是考虑到不同的特征对于识别噪音的贡献有差别,本文引入了结构化机器学习来找出在此过程中应当强调与不应当强调的特征,并给出了数据实例、目标函数与损失函数的构造等使结构化机器学习适用的方法。其次是考察特征空间中近邻的距离,给予更近的近邻更高的投票权重。本文通过实验验证了给出的噪音识别方法的效果,以及其对缺陷预测模型性能的影响,结果表明该算法可以在合理的精度下检出数据集中的噪音,噪音消除的结果变好,而在处理后的缺陷数据集上应用缺陷预测模型时,尤其是在噪音比率超过20%的情况下,性能有所提高。
为了支持上述相关研究,本文设计并实现了一个实验平台系统,其中包含了完整的后端系统与前端系统,可用于方便的实验设计与定制、实验项目管理、运行情况分析、实验结果展示与分析等。