To develop and train defect prediction models, researchers rely on datasets in which a defect is attributed to an artifact, e.g., a class of a given release. However, the creation of such datasets is far from being perfect. It can happen that a defect is discovered several releases after its introduction: this phenomenon has been called "dormant defects". This means that, if we observe today the status of a class in its current version, it can be considered as defect-free while this is not the case. We call "snoring" the noise consisting of such classes, affected by dormant defects only. We conjecture that the presence of snoring negatively impacts the classifiers' accuracy and their evaluation. Moreover, earlier releases likely contain more snoring classes than older releases, thus, removing the most recent releases from a dataset could reduce the snoring effect and improve the accuracy of classifiers. In this paper we investigate the impact of the snoring noise on classifiers' accuracy and their evaluation, and the effectiveness of a possible countermeasure consisting in removing the last releases of data. We analyze the accuracy of 15 machine learning defect prediction classifiers on data from more than 4,000 bugs and 600 releases of 19 open source projects from the Apache ecosystem. Our results show that, on average across projects: (i) the presence of snoring decreases the recall of defect prediction classifiers; (ii) evaluations affected by snoring are likely unable to identify the best classifiers, and (iii) removing data from recent releases helps to significantly improve the accuracy of the classifiers. On summary, this paper provides insights on how to create a software defect dataset by mitigating the effect of snoring.
翻译:开发并培训缺陷预测模型, 研究人员依靠将缺陷归结于工艺品的数据集来开发并培训缺陷预测模型。 但是, 创建这样的数据集远非完美。 但是, 创建这样的数据集远非完美。 在引入该数据集后, 可能会发现一些缺陷: 这种现象被称作“ 陶瓷缺陷 ” 。 这意味着, 如果我们今天观察当前版本中某个类的状态, 它可以被视为无缺陷, 而情况并非如此 。 我们称之为“ 抑制” 由此类类别构成的噪音, 仅受休眠缺陷影响 。 我们推测, 是否存在鼻漏对分类员的准确性及其评价有不利影响。 此外, 早期发布时, 可能会发现缺陷的类别比旧的释放多: 这种现象被称为“ 陶瓷缺陷缺陷缺陷缺陷” 。 这意味着, 如果我们观察当前版本中某个类的状态, 它可以被视为无缺陷, 而这并不是这种情况, 我们称之为“ ” 。 我们称之为“ 抑制” 噪音”, 由这类类别构成噪音的噪音构成的噪音, 以及可能采取的对应措施在删除数据的最后释放中的效果。 我们分析了15个 机的腐蚀变变变的预测 。