[论文解读] What are the Machine Learning best practices reported by practitioners on Stack Exchange?
本研究通过挖掘14个Stack Exchange社区的242篇高分帖子,识别并验证了127项机器学习最佳实践,随后由四位机器学习专家进行严格评审。这些实践按机器学习生命周期的各个阶段进行组织,聚焦于软件工程任务,提供了实用且基于实证的指南,帮助从业者和研究人员避免常见陷阱,提升机器学习实现质量。
Machine Learning (ML) is being used in multiple disciplines due to its powerful capability to infer relationships within data. In particular, Software Engineering (SE) is one of those disciplines in which ML has been used for multiple tasks, like software categorization, bugs prediction, and testing. In addition to the multiple ML applications, some studies have been conducted to detect and understand possible pitfalls and issues when using ML. However, to the best of our knowledge, only a few studies have focused on presenting ML best practices or guidelines for the application of ML in different domains. In addition, the practices and literature presented in previous literature (i) are domain-specific (e.g., concrete practices in biomechanics), (ii) describe few practices, or (iii) the practices lack rigorous validation and are presented in gray literature. In this paper, we present a study listing 127 ML best practices systematically mining 242 posts of 14 different Stack Exchange (STE) websites and validated by four independent ML experts. The list of practices is presented in a set of categories related to different stages of the implementation process of an ML-enabled system; for each practice, we include explanations and examples. In all the practices, the provided examples focus on SE tasks. We expect this list of practices could help practitioners to understand better the practices and use ML in a more informed way, in particular newcomers to this new area that sits at the intersection of software engineering and machine learning.
研究动机与目标
- 识别并系统化从业者在真实世界软件工程情境中报告的机器学习最佳实践。
- 解决软件工程领域中缺乏全面、经验证且领域特定的机器学习最佳实践指南的问题。
- 创建一份基于Stack Exchange社区讨论的结构化、基于证据的机器学习实践手册。
- 通过专家评审验证所识别的实践,确保其可信度和实际相关性。
- 通过可操作的、上下文相关的指导,支持软件工程从业者和研究人员避免常见的机器学习陷阱。
提出的方法
- 系统性地挖掘了14个与机器学习和软件工程相关的专业社区中242篇高分Stack Exchange帖子。
- 采用多阶段定性分析流程,通过开放式编码方案进行手动筛选、标记和分类。
- 由三位独立标记员参与,通过共识会议减少帖子标记和实践分类中的主观性。
- 将实践划分为机器学习流水线中的10个类别,涵盖数据准备、模型选择、训练、评估和部署等。
- 通过四位背景各异的机器学习专家进行专家评审,对全部127项实践进行验证,允许提出异议并进行分类的迭代优化。
- 采用混合方法,结合社区知识提取与专家验证,确保结果的可靠性与实际相关性。
实验结果
研究问题
- RQ1从业者在Stack Exchange社区中常报告哪些机器学习最佳实践?
- RQ2这些实践如何在机器学习生命周期的各个阶段中系统性地分类?
- RQ3专家验证的实践与真实世界社区关于机器学习实现的讨论在多大程度上一致?
- RQ4从业者在软件工程情境中频繁提及的常见陷阱和挑战是什么?
- RQ5如何将社区来源的机器学习实践转化为一份可靠且可操作的手册供从业者使用?
主要发现
- 本研究共识别出127项机器学习最佳实践,系统性地组织在涵盖整个机器学习生命周期的10个类别中,包括一个在先前框架中未涵盖的‘实现’阶段。
- 这些实践源自Stack Exchange上的真实世界讨论,反映了从业者在软件工程情境中遇到的实际挑战与解决方案。
- 专家验证确认了实践的可信度,仅需极少数重新分类,表明高度共识与可靠性。
- 最常报告的最佳实践集中于数据预处理、模型评估和超参数调优,凸显了机器学习开发中的常见痛点。
- 研究揭示了重复出现的问题,如数据泄露、过拟合和泛化能力差,这些均通过社区提出的实践得到一致应对。
- 最终的手册提供了面向软件工程任务(如缺陷预测和代码摘要)的具体示例驱动指导,显著提升了实际适用性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。