数据科学家的角色常被戏称为“21世纪最性感的职业”。它需要一种独特的技能组合: 统计学知识、编程能力 (通常是 Python 或 SQL) 、商业敏锐度,以及将混乱的非结构化数据整理成可操作洞察的能力。
随着 GPT-4 和 Claude 等大型语言模型 (LLM) 的迅速崛起,科技界出现了一个紧迫的问题: 我们能自动化数据科学吗?
我们已经看到 LLM 生成代码片段、编写 SQL 查询,甚至调试简单的脚本。但现实世界的数据科学不仅仅是写一个 for 循环。它涉及探索文件系统、理解模糊的架构、清洗脏数据、选择合适的机器学习模型,并迭代调试错误,直到图表看起来正确为止。
今天,我们将深入探讨一篇旨在解决这一确切问题的研究论文。该论文介绍了 DA-Code , 这是一个严格的基准测试,旨在测试 LLM 是否真正能够作为自主数据科学代理 (Agent) 行事。我们将探讨这个基准测试是如何工作的,为解决它而构建的“DA-Agent”框架,以及显示我们要走的路还很长的令人清醒的实验结果。
问题所在: 为何当前的基准测试还不够
在解构 DA-Code 之前,我们需要理解它所填补的空白。以前的代码生成基准测试,如 HumanEval 或 DS-1000,虽然对我们很有帮助,但它们代表了对编程的一种“狭隘”视角。
在传统的基准测试中,任务通常是这样的:
- 输入: “编写一个计算斐波那契数列的 Python 函数。”
- 输出: 模型生成一个干净、独立的函数。
然而,真正的数据科学任务是这样的:
- 输入: “这是一个包含五个不同 CSV 文件和一个混乱的 SQLite 数据库的文件夹。找出为什么我们在第三季度的销售额下降了,并将趋势可视化。”
- 输出: 代理必须探索文件,编写 SQL 连接表,使用 Python 处理缺失值,调试库版本冲突,最后保存一张 PNG 图表。
DA-Code背后的研究人员认为,我们需要从代码生成转向代理数据科学 (Agent Data Science) 。

如上表 1 所示,DA-Code 与 DS-1000 或 Arcade 等前作有着显著区别。它需要规划 , 在可控的可执行环境 (Docker) 中运行,处理每个任务的多个文件 (平均 5.7 个文件) ,并需要更长的解决方案 (平均 85 行代码) 。
DA-Code: 面向现实的基准测试
DA-Code 不仅仅是一个数据集;它是一个综合评估套件。它包含 500 个源自真实场景的手工精选、具有挑战性的任务示例。
研究人员将数据科学工作主要分为三大支柱:
- 数据整理 (Data Wrangling, DW) : 加载、清洗和转换原始数据的繁杂工作。
- 机器学习 (Machine Learning, ML) : 构建分类、回归或聚类模型。
- 探索性数据分析 (Exploratory Data Analysis, EDA) : 可视化数据、计算统计数据并得出洞察。

这些任务的分布 (如上图饼图所示) 确保了对代理能力的平衡测试。请注意文件类型的多样性——CSV、Markdown 文档、YAML 配置和 SQL 数据库。这反映了真实的工作空间,数据很少是现成地放在银盘子里的。
DA-Code 是如何构建的?
创建一个如此复杂的基准测试是一项巨大的工程。研究人员不能只是从网络上抓取;他们必须确保任务既可解又具有难度。

如图 2 所示,标注流程涉及五个严格的步骤:
- 数据选择: 识别真实的、复杂的且具有时效性的数据集 (例如 NYC 出租车数据) 。
- 任务定义: 将简单的指令重写为抽象的、代理级别的问题。
- 实现: 设置“沙盒”环境。这一点至关重要。代理不仅仅是生成文本;它正在与包含数据库和架构的模拟文件系统进行交互。
- 评估设置: 编写脚本以自动检查代理的输出 (表格、图表或文本) 是否与真实标签 (Ground Truth) 匹配。
- 红队测试 (Red Teaming) : 让医学专家尝试破解任务以确保其稳健性。
代理任务的数学原理
为了理解 AI 代理如何解决这些问题,我们需要重新定义什么是“编程任务”。
在传统的代码基准测试中,过程是一个将上下文 (\(C\)) 和指令 (\(I\)) 映射到代码的静态函数:

然而,在 DA-Code 中,过程是交互式和迭代式的 。 代理具有“状态” (\(S\)) 、“动作空间” (\(A\)) 和“记忆”或历史 (\(H\)) 。
代理查看其当前记忆 (\(m_t\)) 和环境状态 (\(s_t\)) 来决定动作 (\(a_{t+1}\)) 并生成代码:

一旦代理采取行动 (例如,“运行这个 Python 脚本”) ,环境就会执行它。环境返回一个新的观察结果 (\(o_{t+1}\)) 并更新状态 (\(s_{t+1}\)):

这个循环一直持续到任务完成或代理超时。这种形式化至关重要,因为它将焦点从编写代码转移到了探索问题空间。
DA-Agent 框架
为了测试该基准,研究人员开发了一个名为 DA-Agent 的基线代理。

图 1 展示了 DA-Agent 的运行过程。注意其工作流程:
- 探索: 代理列出文件 (
README.md,E-commerce.db) 以了解它在处理什么。 - 推理: 它决定需要查询数据库。
- 动作: 它编写 SQL 查询。
- 反馈循环: 它遇到错误 (例如,列不存在) ,检查表结构,然后重试。
- 结果: 它最终编写一个 Python 脚本来生成图表。
动作空间
为了使代理发挥作用,它需要一套工具。DA-Agent 配备了一组特定的动作,允许它操作 Docker 环境。

如表 5 所列,代理可以使用 Bash 进行系统操作,使用 Python 进行复杂的逻辑和绘图,使用 SQL 进行数据库交互。至关重要的是,“Terminate” (终止) 动作标志着代理认为它已经完成了任务。
为代理打分: 评估套件
你如何给 AI 的“数据科学”能力打分?这比批改多项选择题要难得多。研究人员针对不同的输出类型开发了量身定制的评估指标。
1. 表格匹配 如果任务需要生成 CSV 或数据库表,评估会检查预测表 (\(M'\)) 是否与真实表 (\(M\)) 完全匹配,通常是在对特定列进行排序或过滤之后。

2. 图表匹配 给可视化打分很棘手。逐像素比较太脆弱了。相反,研究人员使用了“基于绘图的评估”。他们从生成的绘图脚本中提取底层数据 (\(d\)) 和元数据 (\(J\)) (如标题、X轴标签、颜色) ,并将它们与真实值进行比较。

3. 机器学习评估 对于 ML 任务 (例如,“训练一个预测流失的模型”) ,代理的模型会在保留的测试集上进行评分。然而,原始分数 (如准确率或 MSE) 在不同数据集之间差异很大。为了使分数具有可比性,它们被归一化到 0 到 1 之间,其中 0 是基线性能 (如随机猜测) ,1 是最先进的水平 (SOTA) 。

根据任务的不同,他们使用特定的指标,如分类任务的 F1 分数或回归任务的 RMSE:
*F1 分数 (精确率和召回率的调和平均数) : *

*RMSE (均方根误差) : *

实验与结果: 现实检验
那么,当今最好的 LLM 在扮演数据科学家时有多聪明呢?研究人员测试了 GPT-4、Claude-3-Opus 等模型,以及 Mixtral 和 DeepSeek-Coder 等开源模型。
结果汇总在表 3 中,非常具有启示性。

关键要点:
- 很难: 最好的模型 GPT-4 仅达到了 30.5% 的完成率。这证实了 DA-Code 比以前的模型经常得分 80% 以上的基准测试要难得多。
- 开源差距: 专有模型 (GPT-4, Claude-3) 与开源模型之间存在急剧下降。例如,Mixtral-8x22B 仅达到 15.4%。
- 难度等级很重要: 模型在“简单”任务上表现尚可 (GPT-4 为 45.4%) ,但在“困难”任务上表现崩溃 (23.4%) 。
各类别的表现
我们还可以根据数据科学任务的类型来细分表现。

图 3 中的雷达图显示,模型通常在 机器学习 (Machine Learning) 任务上表现更好 (可能是因为标准的 ML 样板代码在训练数据中很常见) ,但在 数据整理 (Data Wrangling) 和 数据洞察 (Data Insight) 上很吃力。这很直观: 清洗数据需要直观地检查文件并对奇怪的格式做出判断,这比导入 scikit-learn 对 LLM 来说更难。
分析代理行为
研究人员不仅关注最终得分;他们还分析了*轨迹 (trajectory) *——即代理采取的逐步路径。
“EEEA”模式 成功的代理倾向于遵循特定的行为模式: Exploration (探索) 、Execution (执行) 、Evaluation (评估) 、Adjustment (调整) 。
- 探索: 查看文件 (使用
ls,head) 。 - 执行: 编写代码。
- 评估: 检查输出。
- 调整: 调试错误。
我们可以从随时间变化的动作类型计数中看到这一点:

注意: 在上图 (底部图表) 中,请查看“File Viewing” (深蓝色) 条形。
在任务开始时 (第 1-5 步) ,代理花费大量时间进行 文件查看 。 随着步骤的进行,它们转向 Python 编码 (橙色) 和 系统操作 (浅蓝色) 。表现较差的模型 (如 DeepSeek-Coder-33B) 无法有效地进行转换,经常陷入循环或无法正确解析动作 (黄色条形) 。
成功 vs. 步骤 另一个有趣的发现是步骤数与成功率之间的关系。

图 5 显示,大多数成功的任务都是在前 10 步内完成的。如果代理在第 15 步之前没有解决问题,成功的可能性就会停滞不前,而“未完成率” (未完成的任务) 则随着代理要么完成任务要么放弃而下降。这表明 规划能力 是瓶颈;如果代理在早期没有一个好的计划,更多的步骤也救不了它。
与其他框架的比较
最后,研究人员将他们的 DA-Agent 基线与其他流行的代理框架 (如 AutoGen 和 OpenDevin) 进行了比较。

DA-Agent 的表现优于它们 (31.5% 对比 OpenDevin 的 26.2%) 。有趣的是,当研究人员提供 参考计划 (Reference Plan) (即人工编写的解决问题的指南) 时,分数跃升至 39.7% 。 这加强了一种观点,即 LLM 目前的核心困境是高层推理和规划,而不仅仅是编写语法。
结论与未来展望
DA-Code 论文是对 AI 行业的一次现实检验。虽然我们经常看到 AI 分析数据的精心挑选的演示,但该基准测试提供的严格测试表明,我们距离完全自主的数据科学家还很远。
在真实世界任务中 30% 的成功率说明了两件事:
- 潜力: AI 能够 自主解决三分之一的复杂、多文件数据问题,这一事实令人难以置信。
- 增长空间: 剩下的 70% 需要改进代理如何探索环境、调试自己的错误以及规划长期策略。
DA-Code 为这种增长提供了路线图。通过将测试从简单的代码补全转移到交互式、可执行的环境中,我们正在推动 LLM 不仅仅成为程序员,而是成为真正的问题解决者。
随着模型的发展,像 DA-Code 这样的基准测试将成为我们用来衡量从“AI 助手”向“AI 数据科学家”转变的标尺。
](https://deep-paper.org/en/paper/2410.07331/images/cover.png)