中文

验证项目内缺陷分类器时保留数据顺序的必要性

软件工程 2020-08-03 v2

摘要

[背景] 缺陷预测模型(如分类器)可利用同一项目以往版本的数据来预测哪些软件组件可能存在缺陷,从而支持测试资源分配。一种验证技术(以下简称技术)定义了将可用数据划分为训练集与测试集以衡量分类器准确率的特定方式。时间序列技术具有保留数据时间顺序的独特能力,即防止测试集包含早于训练集的数据。[目的] 本文的目的有两点:首先,我们检验时间序列与非时间序列技术所测得的分类器准确率是否存在差异;随后,我们检验造成该差异的可能原因,即项目的各版本间缺陷率是否发生变化。[方法] 我们的方法包括使用三种验证技术(即交叉验证、bootstrap 和 walk-forward,其中仅 walk-forward 为时间序列技术)在 13 个开源项目和 2 个闭源项目上测量 10 个分类器的准确率(AUC)。[结果] 我们发现,同一分类器在同一项目上由 10 折交叉验证测得的 AUC 与由 walk-forward 测得的相比,差异范围为 [-0.20, 0.22],且在 45% 的情况下统计显著不同。类似地,由 bootstrap 测得的 AUC 与由 walk-forward 测得的相比,差异范围为 [-0.17, 0.43],且在 56% 的情况下统计显著不同。[结论] 我们建议根据待得出的结论、可用数据集的性质以及分类器使用场景的真实程度,谨慎选择所用技术。

关键词

引用

@article{arxiv.1809.01510,
  title  = {On the Need of Preserving Order of Data When Validating Within-Project Defect Classifiers},
  author = {Davide Falessi and Jacky Huang and Likhita Narayana and Jennifer Fong Thai and Burak Turhan},
  journal= {arXiv preprint arXiv:1809.01510},
  year   = {2020}
}