[论文解读] Data Science through the looking glass and what we found there
本文对迄今为止最大的数据科学(DS)项目分析进行了研究,分析了600万份GitHub上的Python笔记本、CompanyX的200万份企业级DS流水线,以及12个关键DS库的900多个版本发布。通过静态代码分析和统计特征分析,揭示了库使用、流水线结构和API演进的核心趋势,为系统构建者和从业者在工具链优先级和技术创新采纳方面提供了可操作的见解。
The recent success of machine learning (ML) has led to an explosive growth both in terms of new systems and algorithms built in industry and academia, and new applications built by an ever-growing community of data science (DS) practitioners. This quickly shifting panorama of technologies and applications is challenging for builders and practitioners alike to follow. In this paper, we set out to capture this panorama through a wide-angle lens, by performing the largest analysis of DS projects to date, focusing on questions that can help determine investments on either side. Specifically, we download and analyze: (a) over 6M Python notebooks publicly available on GITHUB, (b) over 2M enterprise DS pipelines developed within COMPANYX, and (c) the source code and metadata of over 900 releases from 12 important DS libraries. The analysis we perform ranges from coarse-grained statistical characterizations to analysis of library imports, pipelines, and comparative studies across datasets and time. We report a large number of measurements for our readers to interpret, and dare to draw a few (actionable, yet subjective) conclusions on (a) what systems builders should focus on to better serve practitioners, and (b) what technologies should practitioners bet on given current trends. We plan to automate this analysis and release associated tools and results periodically.
研究动机与目标
- 为系统构建者和从业者提供一个全面、基于数据的视角,以把握快速演变的数据科学领域。
- 识别在公开和企业级DS项目中,库使用、流水线架构和API稳定性方面的关键趋势。
- 通过大规模分析真实代码库,为系统开发和技术创新采纳提供战略决策支持。
- 通过量化实际使用模式和DS工作流中的新兴趋势,弥合系统构建者与数据科学家之间的差距。
- 发布自动化、定期运行的分析工具和结果,以支持社区对DS演进的持续理解。
提出的方法
- 收集并分析了来自GitHub的600万份公开共享的Python笔记本,以研究开源、教育和自学型DS项目的发展态势。
- 分析了CompanyX内部系统(AnonSys)中的200万份企业级数据科学流水线,以理解生产级DS工作流。
- 对12个主要DS库(如scikit-learn、PyTorch、TensorFlow)的900多个版本发布进行了静态分析,以追踪API和代码库的演进。
- 通过移除测试、文档和示例相关代码,对代码元素(类、函数)进行过滤,以隔离核心功能组件。
- 使用统计和比较分析方法,研究2017年至2019年间库的流行度、功能性和稳定性变化。
- 生成“野生可行动猜测”(WAGs),以解释定量发现,并为未来开发提供基于数据的推测性指导。
实验结果
研究问题
- RQ1在公开和企业级数据科学项目中,哪些是主导的库、操作符和代码结构?
- RQ22017年至2019年间,数据科学库的使用情况如何演变?哪些库的影响力在上升或下降?
- RQ3GitHub上的公开笔记本在多大程度上反映了成熟企业级流水线的结构和功能?
- RQ4主要DS库的API在时间维度上有多稳定?这对系统优化和工具链开发有何影响?
- RQ5DS库中示例、测试和文档代码所占比例是多少?这如何影响对功能性的感知?
主要发现
- AnonSys流水线中前7个操作符占所有200万份企业级流水线的75%,表明生产工作流具有高度的结构一致性。
- GitHub笔记本中使用的DS库数量在2017年至2019年间增长了三倍,其中前5大库的影响力进一步增强(相对增长+3%)。
- 在过滤掉测试、文档和示例代码后,Matplotlib成为功能函数数量最多的库(过滤后),超过Pandas和Scipy。
- 过滤后类和函数数量显著减少——Seaborn和Numpy的减少幅度最高达79%,表明社区在示例和文档上投入了大量精力。
- 尽管代码库规模持续扩大,但按功能复杂度(类和函数数量)排名的库相对顺序保持稳定,表明核心功能和生态系统成熟度一致。
- 每库函数和类数量的指数级增长仍在持续,表明API持续演进,且尚未就稳定接口达成共识,这对系统优化和工具链开发构成挑战。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。