阿里推出AI數據科學家,全流程自動化,科研小白也能用

基於開源Agent框架,可自動解決複雜數據科學問題的Agent來了!

具體來說,Data Science Assistant(以下稱DS Assistant)是基於Modelscope-Agent框架開發的數據科學助手。

有了它,我們只需給需求,這個助手就能自己跑完探索性數據分析(EDA)、數據預處理、特徵工程、模型訓練,模型評估等步驟。

當然,除了本文將重點提到的DS Assistant,它背後的Modelscope-Agent框架也值得說道。

這個框架由阿里開源,主要特點包括:

更妙的是,Modelscope-Agent框架允許開發者無需編碼即可交互式地創建Agent助理。

這不,啪的一下,咱們的數據科學助手“誕生”了~

複雜數據科學任務自動化

實現複雜數據科學任務自動化一直存在挑戰。

傳統的ReAct(Reasoning and Action)框架對於簡單的任務比較有效,但是有以下缺點:

而DS Assistant使用了plan-and-excute框架,這是一種新興的Agent框架,通過明確計劃和執行步驟高效完成複雜任務。

langchain官網對Plan-and-execute Agent的描述:https://blog.langchain.dev/planning-agents/

具體而言,其工作流程包括以下幾個步驟:

1、任務計劃:Agent接收用戶輸入的任務描述,進行語義理解,將任務分解爲多個可執行子任務。

2、子任務調度:基於任務之間的依賴關係和優先級,智能調度子任務的執行順序。

3、任務執行:每個子任務分配給特定的模塊執行。

4、結果整合:彙總各子任務的結果,形成最終輸出,並反饋給用戶。

基於上述框架,咱們接着看整個系統架構,DS Assistant整套系統有4個主要模塊。

先說右側的DS Assistant,它作爲整個系統的大腦,負責調度整個系統的運轉。

而Plan模塊負責根據用戶的需求生成一系列Task列表,並對Task先後順序進行拓撲排序。

在這一階段,DS Assistant根據用戶輸入的複雜數據科學問題,自動將其分解爲多個子任務。

這些子任務根據依賴關係和優先級被組織和調度,確保執行順序符合邏輯且高效。

接下來到了Execution模塊,負責任務的具體執行,保存任務執行結果。

在這裡,每個子任務被具體化爲可執行的操作,如數據預處理、模型訓練等。

最後是Memory management模塊,負責記錄任務中間執行結果,代碼,數據詳情等信息。

在所有Task執行完成後,DS Assistant會將中間數據的執行情況 ( 包括每個task生成的代碼和結果,消耗token數,任務時間 ) 保存爲文件。

案例實戰

下面,我們以一個具體的例子來了解DS Assistant的執行過程。

我們選用Kaggle上的一個比賽任務ICR - Identifying Age-Related Conditions作爲示例:

該任務是一項機器學習任務,主要目的是通過分析各種數據(如醫療記錄、基因數據、生活方式數據等),識別與年齡相關的健康狀況。

最終結果將用來幫助醫療專業人員及早發現老年人羣中常見的健康問題,並提供個性化的預防和治療方案。

廢話不多說,我們這就開始~

首先,對於選用的LLM,我們需要配置一下。

我們引入MetaGPT的Data Science工具和Tool Recommender,可以根據任務類型向DS Assistant推薦合適的數據科學工具。

接着,我們需要將任務的具體要求傳給DS Assistant。需要注意的是,在要求中需向DS Assistant指明數據文件的路徑:

在Plan階段,DS Assistant會根據用戶需求生成任務列表,將整個數據處理流程進行分解,接着對任務列表進行按順序處理。

可以看到,DS Assistant生成了5個任務,分別是數據探索,數據預處理,特徵工程,模型訓練和預測。

然後這5個任務進入了Execute階段,下面咱們挨個看一下。

Task 1: 數據探索

可以看到生成的代碼在執行時報瞭如下錯誤,原因是沒有引入numpy包。

DS Assistant根據報錯進行了反思,並重新生成代碼並執行,成功輸出數據探索的結果。

最後,code judge會對代碼進行質檢,確保本次生成代碼邏輯正確。

Task 2: 數據預處理

在數據預處理階段,DS Assistant分別對數值型數據和類別型數據進行了合適的缺失值處理,並清除了ID列。

Task 3:特徵工程

在修復了兩次錯誤後,DS Assistant對數據進行了特徵工程的處理,對類別型變量進行編碼。

同時對之前定義的categorical_columns變量進行了更新,去除了ID列。

Task 4:模型訓練

DS Assistant主動安裝了合適的依賴,並選擇了多個模型(隨機森林,梯度提升,邏輯迴歸)進行訓練,並選擇了結果最好的模型。

Task 5:模型驗證

DS Assistant選擇了訓練集中F1分數最高的模型對驗證集進行測試,並計算了這個模型在驗證集上的F1分數,成功地完成了任務。

執行完以上任務後,DS Assistant支持將運行結果保存爲Jupyter Notebook類型的文件,並記錄運行的中間過程。

△Jupyter Notebok

△中間過程記錄JSON文件

實驗效果

我們使用ML-Benchmark作爲測試集(指路論文“Data Interpreter: An LLM Agent For Data Science”),分別從Normalized Performance Score (NPS) ,total time,total token三個維度對DS Assistant效果進行評測。

其中NPS是一種將不同任務或模型的性能指標標準化的方法,使得不同指標之間可以進行比較。

它的計算通常涉及以下步驟:

步驟1:確定指標優化方向,判斷性能指標是“越大越好”還是“越小越好”。

步驟2:規範化計算。如果指標是“越大越好”(如準確率、F1分數、AUC),NPS等於原始值;如果指標是“越小越好”(如損失值),則需要將原始值映射到接近1的較高NPS值。

規範化後的性能得分範圍通常是0到1,其中1表示最優性能,0表示最差性能。

實驗任務詳情和結果如下(綠色代表當前任務下最優指標 ):

可以看到,在部分複雜的數據科學任務上,DS Assistant在規範化性能得分(NPS),任務時間,消耗token數的指標上取得超過開源SOTA的效果。(其中開源SOTA效果指MetaGPT實測值)

完整實驗日誌:https://modelscope-agent.oss-cn-hangzhou.aliyuncs.com/resources/DS_Assistant_results.zip

總結

對不同的人來說,DS assistant有不同作用:

下一步,DS assistant將從三個方向展開優化:

1、進一步提高任務執行成功率:

a)對於Code Agent來說,傳入信息量過大(報錯信息,中間數據信息,已生成代碼信息)會導致模型生成代碼正確率下降,可以在未來考慮使用LLM進行總結,對信息進行篩選。

b)同一個Task可進行進一步的分解,以降低對LLM推理能力的要求。

2、對話交互式,可以將任務和任務的執行展示分開,通過對話的方式推進任務,並影響執行結果。

3、支持批處理相同任務多批文件的場景。

更多細節可進一步查看Modelscope-Agent官方倉庫中Data Sciecne Assistant示例。