基于开源Agent框架,可自动处理复杂数据迷信成绩的Agent来了!
具体来说,Data Science Assistant(以下称DS Assistant)是基于Modelscope-Agent框架开发的数据迷信助手。
有了它,我们只需给需求,这个助手就能本人跑完探索性数据分析(EDA)、数据预处理、特征工程、模型训练,模型评价等步骤。
当然,除了本文将重点提到的DS Assistant,它面前的Modelscope-Agent框架也值得说道。
这个框架由阿里开源,次要特点包括:
可经过vllm、ollama等工具接入各主流开源模型,也可以直接调用模型API;
提供RAG组件支持开发者疾速接入知识库;
工具生态丰厚,支持少量的Modelscope社区模型作为工具,也支持直接调用langchain的工具,还接入了各类常用的工具,如web-browsing、文生图、code-interpreter等;
更妙的是,Modelscope-Agent框架允许开发者无需编码即可交互式地创立Agent助理。
这不,啪的一下,我们的数据迷信助手“降生”了~
复杂数据迷信义务自动化
完成复杂数据迷信义务自动化不断存在应战。
传统的ReAct(Reasoning and Action)框架关于复杂的义务比拟无效,但是有以下缺陷:
每次工具调用都需求一个LLM调用。
LLM一次仅方案1个子成绩。这能够会招致义务的轨迹愈加不可控,由于它不会自愿“推理”整个义务。
而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指明数据文件的途径:
frommodelscope_agent.agents.data_science_assistantimportDataScienceAssistant
frommodelscope_agent.tools.metagpt_tools.tool_recommendimportTypeMatchToolRecommender
llm_config={
'model':'qwen2-72b-instruct',
'model_server':'dashscope',
}
tool_recommender=TypeMatchToolRecommender(tools=[""])
ds_assistant=DataScienceAssistant(llm=llm_config,tool_recommender=tool_recommender)
ds_assistant.run(
"Thisisamedicaldatasetwithoverfiftyanonymizedhealthcharacteristicslinkedtothreeage-relatedconditions.Yourgoalistopredictwhetherasubjecthasorhasnotbeendiagnosedwithoneoftheseconditions.ThetargetcolumnisClass.Performdataanalysis,datapreprocessing,featureengineering,andmodelingtopredictthetarget.ReportF1Scoreontheevaldata.Traindatapath:‘./dataset/07_icr-identify-age-related-conditions/split_train.csv',evaldatapath:‘./dataset/07_icr-identify-age-related-conditions/split_eval.csv'."
)
在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示例。