Skip to main content
QUICK REVIEW

[论文解读] The Effectiveness of Supervised Machine Learning Algorithms in Predicting Software Refactoring

Maurício Aniche, Erick Galani Maziero|arXiv (Cornell University)|Jan 10, 2020
Software Engineering Research被引用 4
一句话总结

本研究评估了监督式机器学习算法在11,149个开源项目中预测软件重构机会的性能。基于超过两百万个标注的重构操作,研究结果表明,随机森林模型在类、方法和变量层级上对20种不同重构类型的成功预测准确率超过90%,且流程与所有权指标显著提升了模型在多样化生态系统中的性能与泛化能力。

ABSTRACT

Refactoring is the process of changing the internal structure of software to improve its quality without modifying its external behavior. Empirical studies have repeatedly shown that refactoring has a positive impact on the understandability and maintainability of software systems. However, before carrying out refactoring activities, developers need to identify refactoring opportunities. Currently, refactoring opportunity identification heavily relies on developers' expertise and intuition. In this paper, we investigate the effectiveness of machine learning algorithms in predicting software refactorings. More specifically, we train six different machine learning algorithms (i.e., Logistic Regression, Naive Bayes, Support Vector Machine, Decision Trees, Random Forest, and Neural Network) with a dataset comprising over two million refactorings from 11,149 real-world projects from the Apache, F-Droid, and GitHub ecosystems. The resulting models predict 20 different refactorings at class, method, and variable-levels with an accuracy often higher than 90%. Our results show that (i) Random Forests are the best models for predicting software refactoring, (ii) process and ownership metrics seem to play a crucial role in the creation of better models, and (iii) models generalize well in different contexts.

研究动机与目标

  • 探究监督式机器学习是否能有效预测真实系统中的软件重构机会。
  • 评估六种机器学习算法——逻辑回归、朴素贝叶斯、支持向量机、决策树、随机森林和神经网络——在预测20种不同重构操作中的性能表现。
  • 识别哪些代码度量与系统特征(尤其是流程与所有权度量)对模型有效性贡献最大。
  • 评估训练模型在不同软件生态系统和项目类型中的泛化能力。
  • 为基于机器学习的推荐可减少误报,并在实践中支持数据驱动的重构决策提供实证证据。

提出的方法

  • 从Apache、F-Droid和GitHub的11,149个真实项目中收集了超过两百万个标注的重构操作数据集。
  • 将重构预测建模为每种重构类型(如提取方法、重命名变量)在类、方法和变量层级上的二分类任务。
  • 提取了142个静态代码度量,包括设计、复杂度以及与所有权相关的特征(如提交者数量、文件年龄),以表征代码元素。
  • 使用10折交叉验证,在数据集上训练了六种监督式机器学习模型——逻辑回归、朴素贝叶斯、支持向量机、决策树、随机森林和神经网络。
  • 使用准确率、精确率、召回率和F1分数评估模型性能,并通过消融研究进一步分析特征重要性。
  • 开展跨生态系统泛化测试以及按时间顺序划分的训练/测试,以验证模型鲁棒性并避免数据泄露。

实验结果

研究问题

  • RQ1在多样化开源项目中,哪种监督式机器学习算法在预测软件重构操作方面表现最佳?
  • RQ2不同代码度量——尤其是与流程和所有权相关的特征——如何影响重构模型的预测性能?
  • RQ3在异构项目上训练的模型,能在多大程度上泛化到不同生态系统中的新、未见软件系统?
  • RQ4包含重构时间顺序信息如何影响模型性能与可靠性?
  • RQ5数据集规模与项目多样性对模型泛化能力与准确率有何影响?

主要发现

  • 随机森林模型在所有20种重构类型上的平均准确率最高,始终优于其他算法,准确率常超过90%。
  • 流程与所有权度量(如提交者数量、文件年龄、变更频率)是最具影响力的特征之一,显著提升了模型性能。
  • 在异构生态系统(Apache、F-Droid、GitHub)数据上训练的模型能良好泛化到新项目,展现出强大的跨项目可迁移性。
  • 时间有序评估(使用前90%的重构进行训练,最后10%进行测试)的平均准确率为87%,证实时间数据泄露并非主要问题。
  • 类层级的重构模型表现优于方法和变量层级的模型,尤其在较小数据集(如F-Droid和Apache)中表现更优,但随着数据集增大(如GitHub),性能差距缩小。
  • 本研究首次提供了大规模实证证据,表明机器学习模型可准确预测重构机会,为高误报率的启发式工具提供了一种可行的替代方案。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。