ehrshot-benchmark
斯坦福医学院开源的 EHR 基础模型评测基准,含 6,739 名患者纵向数据 + 1.41 亿参数 CLMBR 预训练模型 + 15 项少样本临床预测任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
斯坦福医学院开源的 EHR 基础模型评测基准,含 6,739 名患者纵向数据 + 1.41 亿参数 CLMBR 预训练模型 + 15 项少样本临床预测任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:某三甲医院的数据科学家拿到了一批脱敏后的电子病历数据,想要训练一个模型来预测患者 30 天内再入院风险。数据有了,GPU 也有了,但问题来了——用多少数据才够训练出一个靠谱的模型?
这正是 EHRSHOT(Electronic Health Record Shot)试图回答的核心问题。在医疗 AI 领域,数据稀缺、标注成本高昂一直是制约模型性能的瓶颈。传统方法需要成千上万条标注样本才能训练出可用的预测模型,而临床专家的时间极为宝贵,不可能为每一种疾病、每一个预测任务都标注足够多的样本。EHRSHOT 的出现,正是为了给这个问题提供一个科学、系统的评测方案。
EHRSHOT 由斯坦福 Shah Lab 团队开发,发表于 NeurIPS 2023 会议。团队认为,通用机器学习社区早已从公开数据集、任务基准和预训练模型中获益匪浅,但医疗 AI 领域却长期受制于缺乏此类共享资源的困境。随着基础模型(Foundation Model)的兴起,医疗 AI 面临着新的挑战:需要有可访问的预训练模型来验证性能收益。
项目由 Michael Wornow、Rahul Thapa、Ethan Steinberg、Jason Fries 和 Nigam Shah 五位作者共同完成,已获得 227 颗 GitHub 星标。项目的官方主页位于 ehrshot.stanford.edu,并提供了完整的在线排行榜。
EHRSHOT 的最大贡献在于同时发布了三份关键资源,形成了完整的研究生态:
第一份:EHRSHOT 数据集。 包含斯坦福医学院 6,739 名患者的完整纵向电子病历数据,涵盖 41,661,637 条临床事件和 921,499 次就诊记录。与 MIMIC 系列数据集不同,EHRSHOT 的独特之处在于其纵向特性——每位患者的数据不是某一次 ICU 就诊的切片,而是跨越多个科室、持续数年的完整就医历程。患者平均每人拥有 6,174 条临床事件和 136 次就诊,是 MIMIC-IV 平均水平的 2.3 倍和 95.2 倍。数据以 OMOP-CDM(观测性医疗成果合作通用数据模型)标准组织,这是全球 100 多家医疗机构采用的健康数据标准化规范。
第二份:CLMBR-T-base 基础模型。 这是团队发布的一个 1.41 亿参数的自回归变换器(Transformer)模型,基于 257 万名斯坦福患者数据进行预训练。CLMBR(Clinical Language-Model-Based Representations)的核心任务是"预测患者时间线上下一个医学编码"——给定患者过往的诊断、用药、检验记录,模型学习预测下一个临床事件。模型采用因果掩码局部注意力机制(Causally Masked Local Attention),确保信息只能从前向后流动,这对于临床预测任务至关重要。模型词汇表包含 65,536 个标准医学编码,映射自 OMOP-CDM 标准概念。由于预训练使用了斯坦福医院的患者数据,模型会反映斯坦福的医疗实践模式和患者人口统计学特征。
第三份:15 项临床预测任务。 团队精心设计了 15 个分类预测任务,分为四大类别:运营结果预测(长期住院、30 天再入院、ICU 转科)、检验结果预测(血小板减少、高钾血症、低血糖、低钠血症、贫血)、新诊断预测(高血压、高脂血症、胰腺癌、乳糜泻、红斑狼疮、急性心肌梗死)以及胸部 X 光发现预测(14 标签多标签分类)。每个任务都包含规范的 train/val/test 划分,少样本评测使用的 k 值范围从 1 到 128 不等。
整个 EHRSHOT 评测流程基于 FEMR(Framework for Electronic Medical Records)框架构建,这是一套由 Shah Lab 自主开发的电子病历深度学习 Python 包。端到端评测流程由 9 个 bash 脚本串联:数据整合 → 计数特征生成 → CLMBR 表示生成 → 模型训练与评测 → 结果可视化 → 队列统计分析。
在特征工程层面,项目同时支持两种基线方法。计数特征 + LightGBM 是传统方法,将医学编码按本体论层级展开为稀疏计数向量,再送入梯度提升树分类器。CLMBR 表示 + 逻辑回归头 是预训练-微调方法,用 CLMBR-T-base 提取患者 5,952 层上下文表示(496 tokens/layer × 12 层),冻结基座模型权重,仅微调一个逻辑回归分类头。
代码库采用 Python 生态主流技术栈:NumPy/Pandas/SciPy 进行数据处理,PyTorch + Lightning 实现模型训练,LightGBM 提供梯度提升基线,Transformers 库加载 GPT-2/BERT 等基座模型,W&B 集成实验追踪。评测脚本支持 GridSearchCV + PredefinedSplit 进行超参数调优,使用 Bootstrap(1000 次重采样)计算 95% 置信区间和标准差,评价指标涵盖 AUROC、AUPRC 和 Brier Score。
论文的核心实验结果揭示了一个重要规律:在少样本场景(k ≤ 64)下,CLMBR-T-base 全面优于计数特征基线,这一优势在所有任务类别的汇总指标上都成立。具体来说,当每类仅有 8-64 个标注样本时,预训练模型提供的改进初始化使逻辑回归分类头能够快速收敛到有效决策边界,而从零训练的 LightGBM 缺乏这种先验知识。
然而,在极端少样本(k=1)条件下,两个模型都表现挣扎,这说明极度稀缺的数据仍是当前方法的共同瓶颈。当标注样本充足(k > 64)时,计数基线在某些任务上能够追上甚至超越 CLMBR-T-base,尤其是时间跨度较长的诊断预测任务(如一年后高血压预测)。这暗示基于"下一个编码预测"的预训练目标可能无法充分捕获长时序医学事件间的因果关系。
上手门槛极高。 项目要求用户自行准备 CUDA 11.8 + cuDNN 8.7.0 环境,安装 FEMR 及相关依赖,从 Redivis 平台签署数据使用协议(DUA)后下载 EHRSHOT 数据集,并将数据文件放置于 EHRSHOT_ASSETS/ 目录下。全程无容器化支持,无 Web 界面,需要较强的 ML 工程能力。
局限性值得重视。 EHRSHOT 仅发布结构化数据(诊断、用药、检验编码),不包含临床自由文本和影像数据,这意味着基于文本的基础模型(如 ClinicalBERT)无法直接在 EHRSHOT 上评测。CLMBR-T-base 反映斯坦福医院特定医疗实践模式,模型迁移到其他医疗机构时存在分布偏移风险。此外,由于是单一机构的纵向数据,存在一定的选择偏差。
EHRSHOT 的发布具有里程碑意义——它率先实现了结构化电子病历基础模型的完整开源:数据集、模型权重、评测代码、基线结果全部对外可获取。在此之前,GatorTron、ClinicalBERT 等医疗预训练模型仅发布了针对非结构化文本的部分,无法处理 EHR 中最丰富的结构化数据层。EHRSHOT 证明了在医疗编码的离散序列上训练自回归模型同样可行,且在少样本场景下展现出真实的能力增益。
从更宏观的视角看,EHRSHOT 验证了"纵向全周期 EHR + 预训练基础模型 + 少样本微调"这一技术路线的可行性,为小样本医疗 AI 研究提供了基准框架。随着 MEDS(Medical Event Data Standard)标准数据集的发布,EHRSHOT 的数据格式正在向更大范围的医疗 AI 社区推广,有望成为下一代的医疗 AI 评测基础设施。