医学模型代理

🤖 自动化医疗预测模型演变

📖 背景

在此场景中,我们考虑从患者的ICU监测数据中进行风险预测的问题。我们使用公共EHR数据集 - MIMIC-III,并提取一个二分类任务以评估该框架。在此任务中,我们旨在预测患者是否会因其前12小时的ICU监测数据而遭受急性呼吸衰竭(ARF)。

🎥 演示

🌟 介绍

在此场景中,我们的自动化系统提出假设,构建模型,实现代码,接收回测,并利用反馈。假设在这个持续的过程中被迭代。该系统旨在自动优化医疗预测的性能指标,从而通过自主研发找到优化的代码。

以下是步骤的增强大纲:

步骤 1 : 假设生成 🔍

  • 根据先前实验分析和领域专业知识生成和提出初步假设,并进行充分的推理和论证。

步骤2:模型创建 ✨

  • 将假设转化为模型。

  • 开发、定义并实现机器学习模型,包括其名称、描述和公式。

步骤3:模型实施 👨‍💻

  • 根据详细描述实现模型代码。

  • 像开发者一样迭代演进模型,确保准确性和效率。

步骤 4 : 使用 MIMIC-III 进行回测 📉

  • 使用新开发的模型对从MIMIC-III提取的任务进行回测。

  • 评估模型在AUROC分数方面的有效性和性能。

步骤 5 : 反馈分析 🔍

  • 分析回测结果以评估性能。

  • 结合反馈来优化假设并改进模型。

步骤 6 : 假设优化 ♻️

  • 根据回测反馈优化假设。

  • 重复该过程以持续改进模型。

⚡ 快速开始

请参考 安装与配置 中的安装部分以准备您的系统依赖。

您可以通过运行以下命令尝试我们的演示:

  • 🐍 创建一个 Conda 环境

    • 创建一个新的conda环境,使用Python(3.10和3.11在我们的CI中经过良好测试):

      conda create -n rdagent python=3.10
      
    • 激活环境:

      conda activate rdagent
      
  • 📦 安装RDAgent

    • 您可以从PyPI安装RDAgent包:

      pip install rdagent
      
  • 📬 请求PhysioNet账户

    • 申请`PhysioNet <https://physionet.org/>`_的账户。

    • 请求访问FIDDLE预处理数据:FIDDLE数据集

    • 将您的用户名和密码放入`.env`。

      cat << EOF  >> .env
      DM_USERNAME=<your_username>
      DM_PASSWORD=<your_password>
      EOF
      
  • 🚀 运行应用程序

    • 您可以使用以下命令直接运行应用程序:

      rdagent med_model
      

🛠️ 模块的使用

  • 环境配置

可以在`.env`文件中设置以下环境变量,以自定义应用程序的行为:

pydantic settings rdagent.app.data_mining.conf.MedBasePropSetting

Show JSON schema
{
   "title": "MedBasePropSetting",
   "type": "object",
   "properties": {
      "scen": {
         "default": "rdagent.scenarios.data_mining.experiment.model_experiment.DMModelScenario",
         "title": "Scen",
         "type": "string"
      },
      "knowledge_base": {
         "default": "",
         "title": "Knowledge Base",
         "type": "string"
      },
      "knowledge_base_path": {
         "default": "",
         "title": "Knowledge Base Path",
         "type": "string"
      },
      "hypothesis_gen": {
         "default": "rdagent.scenarios.data_mining.proposal.model_proposal.DMModelHypothesisGen",
         "title": "Hypothesis Gen",
         "type": "string"
      },
      "hypothesis2experiment": {
         "default": "rdagent.scenarios.data_mining.proposal.model_proposal.DMModelHypothesis2Experiment",
         "title": "Hypothesis2Experiment",
         "type": "string"
      },
      "coder": {
         "default": "rdagent.scenarios.data_mining.developer.model_coder.DMModelCoSTEER",
         "title": "Coder",
         "type": "string"
      },
      "runner": {
         "default": "rdagent.scenarios.data_mining.developer.model_runner.DMModelRunner",
         "title": "Runner",
         "type": "string"
      },
      "summarizer": {
         "default": "rdagent.scenarios.data_mining.developer.feedback.DMModelExperiment2Feedback",
         "title": "Summarizer",
         "type": "string"
      },
      "evolving_n": {
         "default": 10,
         "title": "Evolving N",
         "type": "integer"
      },
      "username": {
         "default": "",
         "title": "Username",
         "type": "string"
      },
      "password": {
         "default": "",
         "title": "Password",
         "type": "string"
      }
   },
   "additionalProperties": false
}

配置:
  • env_prefix: str = DM_

  • protected_namespaces: tuple = ()

field coder: str = 'rdagent.scenarios.data_mining.developer.model_coder.DMModelCoSTEER'

编码器类

field evolving_n: int = 10

进化次数

field hypothesis2experiment: str = 'rdagent.scenarios.data_mining.proposal.model_proposal.DMModelHypothesis2Experiment'

实验类的假设

field hypothesis_gen: str = 'rdagent.scenarios.data_mining.proposal.model_proposal.DMModelHypothesisGen'

假设生成类

field password: str = ''

Physionet账户密码

field runner: str = 'rdagent.scenarios.data_mining.developer.model_runner.DMModelRunner'

运行器类

field scen: str = 'rdagent.scenarios.data_mining.experiment.model_experiment.DMModelScenario'

数据挖掘模型的场景类

field summarizer: str = 'rdagent.scenarios.data_mining.developer.feedback.DMModelExperiment2Feedback'

总结类

field username: str = ''

Physionet账户用户名