[Paper] 当数据质量问题相互碰撞:软件缺陷预测中共现数据质量问题的大规模实证研究

发布: (2025年12月19日 GMT+8 19:21)
9 min read
原文: arXiv

Source: arXiv - 2512.17460v1

概述

软件缺陷预测(SDP)模型承诺在代码发布前标记出有缺陷的代码,但其成功取决于用于训练的数据质量。本文首次对五种常在 SDP 数据集中共同出现的数据质量问题进行大规模、联合调查,分析它们之间的相互作用以及对数百个真实项目模型性能的影响。

关键贡献

  • 全面的实证范围: 分析了374个SDP数据集,覆盖广泛的领域并使用了五种流行的分类器。
  • 多问题关注: 同时检验了类别不平衡、类别重叠、无关特征、属性噪声和异常值——首次将这些问题视为共存而非孤立研究。
  • 可解释提升机器(EBM)+交互分析: 利用可解释的机器学习模型量化每个问题的直接影响以及问题共同出现时的条件影响。
  • 阈值(“临界点”)发现: 确定了稳定的质量指标阈值(例如,重叠≈0.20,不平衡≈0.65–0.70,无关≈0.94),超过该阈值大多数分类器性能开始下降。
  • 反直觉洞见: 表明在数据集无关特征较少时,异常值可以提升预测准确率,凸显了上下文感知预处理的必要性。
  • 性能‑鲁棒性权衡: 证明没有单一学习器能在所有质量问题组合中占优,鼓励进行自适应模型选择。

方法论

  1. 数据集收集 – 收集了 374 个公开可用的缺陷预测数据集(例如来自 PROMISE、NASA 和 GitHub),这些数据集已经包含了典型的软件度量(代码行数、圈复杂度等)。
  2. 质量问题量化 – 对每个数据集计算五个数值指标:
    • 不平衡:缺陷模块与干净模块的比例。
    • 重叠:通过类条件特征分布的 Hellinger 距离衡量。
    • 无关性:与目标变量互信息接近零的特征比例。
    • 属性噪声:通过标签翻转模拟进行估计。
    • 离群点:由局部离群因子(Local Outlier Factor)标记的实例比例。
  3. 模型训练 – 使用 默认超参数 训练五种广泛使用的分类器(Random Forest、Logistic Regression、SVM、Naïve Bayes 和 Gradient Boosting),以反映典型实践者的使用方式。
  4. 可解释提升机器(Explainable Boosting Machines) – 将 EBMs 作为元模型,依据这五个质量指标预测每个分类器的性能(例如 AUC),从而实现效果的透明归因。
  5. 分层交互分析 – 按照某一质量指标(如重叠)对数据进行分层,并检查另一指标(如离群点)在每个层中的影响如何变化,揭示条件关系。
  6. 统计验证 – 采用自助抽样(bootstrapping)和非参数检验,确保观察到的模式在异构数据集集合中具有稳健性。

结果与发现

质量问题出现率(≥ 一定程度)对性能的直接影响显著交互
类别不平衡~98 % 的数据集当不平衡度 > 0.65–0.70 时降低 AUC放大重叠的危害
类别重叠~95 %最一致的有害因素;重叠约为 0.20 后出现急剧下降当不相关特征率低时,离群点可抵消重叠的影响
不相关特征~99 %当不相关度≈0.94 时性能几乎崩溃与噪声的交互作用较小
属性噪声~93 %(总是共现)直接影响小,但在高重叠时会加剧
离群点~90 %通常中性,但在不相关特征率 < 0.30 时提升性能与低不相关度时呈正向协同作用
  • 共现是常态:即使是最稀有的问题(属性噪声),也在 > 93 % 的数据集中与至少一个其他问题共现。
  • 临界点阈值 在不同分类器之间异常稳定,表明它们可用作模型训练前的快速合理性检查。
  • 没有通用的最佳模型:随机森林和梯度提升在“干净”数据集上表现最佳,而逻辑回归和朴素贝叶斯在极端不平衡情况下更具韧性。

实际意义

  1. 预训练健康检查 – 开发者可以计算三个关键阈值(overlap 0.20,imbalance 0.65,irrelevance 0.94)作为轻量诊断。超过阈值表明数据集在 SDP 建模前需要进行修复。
  2. 有针对性的预处理
    • 如果 overlap 较高,考虑特征工程或实例层面的重采样(例如 SMOTE‑ENN)。
    • imbalance 占主导时,使用代价敏感学习或平衡 bagging,而不是通用的过采样。
    • 对于 irrelevant features,采用积极的特征选择(互信息、L1 正则化)可立即提升效果。
  3. 自适应模型选择 – 研究的交互图可以编码为一个简单的基于规则的选择器,例如:“如果 imbalance > 0.70 且 overlap > 0.20 → 使用带类权重的 Logistic Regression”。
  4. 工具集成 – 作者发布了一个开源 Python 包,可计算五个质量指标并可视化交互热图;团队可以将其嵌入 CI 流水线,以标记数据质量回退。
  5. 异常值处理的细微差别 – 在低 irrelevance 场景下盲目删除异常值可能会降低性能;应在裁剪前评估异常值影响曲线。

总体而言,本文为实践者提供了一份 数据感知清单,将缺陷预测从“训练‑并‑期待”转变为“测量‑并‑调整”。

限制与未来工作

  • 仅使用默认超参数 – 虽然反映了常见做法,但研究并未探讨大量超参数调优如何可能缓解某些质量问题。
  • 静态数据集 – 所有数据集都是快照版本;未涉及不断演化的代码库(概念漂移)的动态变化。
  • 度量范围 – 仅检查了五个质量维度;其他因素如重复实例、测量误差或时间泄漏仍未探索。
  • 超出 SDP 的可推广性 – 研究结果特定于缺陷预测度量;将相同框架应用于其他软件工程预测任务(工作量估计、安全漏洞检测)仍是一个开放的方向。

未来的研究方向包括:(1) 集成针对已识别阈值的自动化修复流水线,(2) 将交互分析扩展到基于深度学习的 SDP 模型,(3) 研究共存质量问题在软件生命周期中的演变。

作者

  • Emmanuel Charleson Dapaah
  • Jens Grabowski

论文信息

  • arXiv ID: 2512.17460v1
  • 分类: cs.SE, cs.LG
  • 发布日期: 2025年12月19日
  • PDF: 下载 PDF
Back to Blog

相关文章

阅读更多 »