MIMIC-IV — AI-Ready 医疗数据集 Wikipedia
-> 千方病案医数集 · AI Ready 医疗数据集 Wikipedia
-> 页面版本:v1.0 | 最后医学审核:2026-07-17 | 页面状态:✅ 完整版(Tier 3 壁垒层)
->
-> 本文以「千方数据 Wikipedia Schema v1.0」为标准,融合 Wikipedia MEDMOS 医学条目规范、HuggingFace Dataset Card 规范和 MLCommons Croissant 1.1 元数据标准,覆盖全部 9 大模块、60+ 字段。
INFOBOX
| 字段 | 值 |
|---|---|
| 数据集名称 | MIMIC-IV Clinical Database |
| 英文名称 | Medical Information Mart for Intensive Care IV |
| 别名/简称 | MIMIC-IV / MIMIC-4 / MIMIC v3.1 |
| 疾病分类 | 1C10-1C1Z 呼吸系统疾病 / BA00-BE2Z 循环系统疾病 / 1C40-1C4Z 神经系统疾病 / GB40-GB6Z 泌尿系统疾病 / MA00-MA2Z 内分泌营养代谢疾病 等(覆盖 ICU 常见全部诊断大类) |
| 数据模态 | 结构化(时序 + 表格)、文本(临床笔记)、影像(关联 CXR/ECG) |
| AI 任务类型 | 生存分析 / 时序预测 / 分类(多标签) / 回归预测 / 自然语言处理 / 命名实体识别 / 多模态学习 / 因果推断 / 强化学习 |
| 样本总数 | 364,627 名患者 / 546,028 次住院 / 94,458 次 ICU 停留 / 超 4.3 亿条 chartevents 记录 |
| 数据大小 | 原始 CSV:~7 GB(压缩)→ 解压后 PostgreSQL:~100 GB+;关联 MIMIC-CXR 影像:~450 GB |
| 数据格式 | CSV(分发) / PostgreSQL(本地) / BigQuery(云端) / WFDB(ECG 波形) / DICOM(CXR 影像) |
| 许可证 | PhysioNet Credentialed Health Data License 1.5.0 |
| 访问级别 | 申请审核(需 CITI 伦理培训 + 签署 DUA) |
| 语言 | 英文 |
| 首发日期 | 2020 年(v1.0);最新 v3.1 发布于 2024-10-11 |
| 最后更新 | 2024-11-12(BigQuery 上线 v3.1) |
| 发布机构 | MIT Laboratory for Computational Physiology (LCP) + Beth Israel Deaconess Medical Center (BIDMC) |
| 官方主页 | https://physionet.org/content/mimiciv/ |
| 下载地址 | https://physionet.org/content/mimiciv/3.1/ |
| DOI | 10.13026/kpb9-mt58(v3.1)/ 10.1038/s41597-022-01899-x(Scientific Data 论文) |
| 引用次数 | 主论文被引 3,487 次(Google Scholar,截至 2026 年);MIMIC 全系列论文累计被引 50,000+ 次 |
| AI 就绪度评分 | ⭐⭐⭐ (3/5) — 原始数据需大量预处理,但社区工具链成熟 |
千方 AI 就绪度评分说明
MIMIC-IV 获评 ⭐⭐⭐ (3/5),理由如下:
- ✅ 优势:数据量极大(36万患者),覆盖维度极广(6 模块),社区工具链丰富(mimic-code、MIMIC-Extract、FEMR、MEDS 等),BigQuery 云端访问降低硬件门槛
- ❌ 劣势:原始数据为关系数据库格式,需 SQL→DataFrame→时序对齐三步转换;无官方 train/val/test 划分;itemid 需手动映射到临床概念(4,095 个 ICU itemid + 海量 lab itemid);缺失值比例高且非随机
- ⚠️ 关键障碍:去标识化日期偏移导致无法结合外部时间特征(如季节、流行病学时间趋势);年龄截断(->89 岁统一标为 91 岁)影响老年病学研究
§1 数据集概览(Overview)
1.1 摘要(summary)
MIMIC-IV(Medical Information Mart for Intensive Care IV)是全球规模最大、使用最广泛的重症监护公开数据库。它包含 2008-2022 年间美国波士顿 Beth Israel Deaconess Medical Center(BIDMC)364,627 名患者的脱敏电子健康记录(EHR),涵盖 546,028 次住院和 94,458 次 ICU 停留。数据集按来源组织为 6 个模块——医院全院(hosp)、重症监护(icu)、急诊(ed)、胸部 X 光(cxr)、临床笔记(note)和心电图(ecg),提供从入院前急诊分诊到出院后 1 年院外死亡随访的全诊疗周期数据。MIMIC-IV 是医疗 AI 研究的「通用试验场」:几乎每一篇关于 ICU 死亡预测、脓毒症早期预警、住院时长预测、再入院风险建模的机器学习论文都会在此验证。其 BigQuery 云端版本使研究者无需本地数据库即可开展分析,是连接临床医学与 AI 研究的事实标准级基础设施。
1.2 为什么重要?(why_it_matters)
MIMIC-IV 在医疗 AI 领域的地位相当于 ImageNet 之于计算机视觉——它不是最大的,但它是使研究成为可能的那个。以下六个维度解释了它为何不可替代:
-
唯一的大规模公开 ICU 数据库:全球绝大多数医院 EHR 数据因隐私法规(HIPAA/GDPR)无法公开。MIMIC-IV 通过严格的去标识化(HIPAA Safe Harbor 标准 + 日期随机偏移 + 自由文本清洗)和法律框架(PhysioNet DUA),在数据开放与患者隐私之间找到了唯一可行的平衡点。没有 MIMIC,医疗 AI 研究将倒退 10 年。
-
全诊疗链路的纵向数据:不同于单一模态数据集(如只含影像的 CheXpert),MIMIC-IV 从急诊分诊 → 住院诊疗 → ICU 监护 → 出院随访提供连续时间轴,使研究者可以建模疾病的自然史和干预的因果效应。这种纵向性对强化学习、因果推断、疾病轨迹建模等前沿 AI 方向至关重要。
-
多模态融合的天然试验田:通过 subject_id,研究者可将结构化时序数据(生命体征、实验室检查)与影像(MIMIC-CXR 胸部 X 光)、波形(MIMIC-IV-ECG)、自由文本(MIMIC-IV-Note)关联。MedMod(2025)已证明 EHR+CXR 多模态融合可将死亡预测 AUROC 提升 2-3%。
-
基础模型(Foundation Model)的孵化器:MIMIC-IV 已成为医疗大模型的预训练首选语料。MOTOR 基础模型在 MIMIC-IV 上预训练后,住院死亡预测 AUROC 达 0.937(vs LightGBM 0.880、逻辑回归 0.833),证明了大规模自监督学习在 EHR 领域的可行性。
-
可复现性的基石:MIT-LCP 团队维护的 mimic-code 仓库提供了标准化的数据提取 SQL 脚本和概念定义(如 Sepsis-3 标准、SOFA 评分),解决了"不同研究用同一数据库却不可比较"的经典问题。
-
教学与教育的公共品:因为免费可用,MIMIC 已成为全球医学信息学、生物统计学、数据科学课程的标准教学数据集,累计培养了数以万计兼具临床知识和数据技能的跨学科人才。
1.3 同类数据集横向对比(comparison)
| 数据集 | 样本量 | 模态 | 时间跨度 | 标注质量 | 访问难度 | AI 就绪度 | 社区规模 |
|---|---|---|---|---|---|---|---|
| MIMIC-IV | 364,627 患者 / 54.6万住院 | 结构化+文本+影像+波形 | 2008-2022 | 临床真实数据 | ⭐⭐⭐(需培训) | ⭐⭐⭐ | 极大 |
| MIMIC-III | ~40,000 患者 | 结构化+文本 | 2001-2012 | 临床真实数据 | ⭐⭐⭐(需培训) | ⭐⭐⭐ | 极大(渐被IV取代) |
| eICU-CRD | 200,859 住院 | 结构化 | 2014-2015 | 临床真实数据 | ⭐⭐⭐(需培训) | ⭐⭐⭐ | 中等 |
| AmsterdamUMCdb | 23,106 住院 | 结构化+波形 | 2003-2016 | 临床真实数据 | ⭐⭐⭐(需申请) | ⭐⭐ | 较小 |
| HiRID | 33,905 住院 | 结构化(高频) | 2008-2016 | 临床真实数据 | ⭐⭐(开放) | ⭐⭐ | 较小 |
| CheXpert | 224,316 影像 | 影像(X光) | 2002-2017 | 自动标注器(NLP) | ⭐(开放) | ⭐⭐⭐⭐ | 大 |
| UK Biobank | 500,000 受试者 | 结构化+影像+基因组 | 2006-至今 | 多模态深度表型 | ⭐⭐⭐⭐⭐(严格审核) | ⭐⭐⭐ | 极大 |
-> 关键差异:MIMIC-IV 是唯一同时具备「大规模 + ICU 全维度 + 纵向时序 + 多模态 + 社区成熟工具链 + 全球最大用户群」的数据集。eICU-CRD 虽覆盖多中心(208 家医院),但数据窗口极短(1-1.5 年)且无影像/波形关联。UK Biobank 规模更大但聚焦人群队列研究而非急诊/重症场景,且访问审批周期长达数月。
1.4 历史沿革(history)
MIMIC 项目的历史本身就是医疗数据开放运动的缩影:
| 时间 | 里程碑 |
|---|---|
| 2001-2007 | MIMIC-II:首个公开 ICU 数据库,单中心(BIDMC),数据来源于 Philips CareVue 和 iMDSoft MetaVision 两套监护系统 |
| 2015 | MIMIC-III 发布:扩展到 ~40,000 患者,成为深度学习进入医疗领域的关键推动者。发展了 PhysioNet 凭证化访问机制 |
| 2020 | MIMIC-IV v1.0 发布:重大架构重构——从扁平模式转向模块化设计(hosp/icu),增加急诊(ed)模块,支持 ICD-10 |
| 2022 | MIMIC-IV v2.0:引入 CXR 关联模块,使结构化 EMR 与胸部 X 光影像可关联分析 |
| 2023-01 | MIMIC-IV v2.2:Bug 修复版本,稳定化 |
| 2023-01 | Scientific Data 论文发表(Johnson et al., 2023),系统性介绍 MIMIC-IV 的架构设计理念、数据组织方式和去标识化策略。累计被引 3,487 次 |
| 2023 | MIMIC-IV-Note v2.2 发布:提供去标识化自由文本临床笔记(出院小结、放射学报告),NLP 研究进入新纪元 |
| 2024-07 | MIMIC-IV v3.0 发布:重大更新——新增 2020-2022 年数据,患者数从 29.9 万跃升至 36.4 万,住院数从 43.1 万增至 54.6 万。新增院外死亡 1 年随访,改进语言字段标准化,扩展保险类别为 Medicare/Medicaid/Private/Self-pay/Free charge/Other 六类 |
| 2024-10 | MIMIC-IV v3.1 发布:Bug 修复——修正 labevents itemid 在 v2.2→v3.0 之间的意外变更,删除 2 个孤立的 subject_id。当前最新稳定版 |
| 2024-11 | MIMIC-IV v3.1 上线 Google BigQuery,实现云端即查即用 |
-> 版本选择建议:新项目一律使用 v3.1。如果研究中涉及与 MIMIC-III 的对比(如基准复现),需注意 v3.0+ 新增的 2020-2022 数据包含 COVID-19 大流行期间的住院记录,可能引入与之前版本不可比的分布偏移。
1.5 典型 AI 应用场景(use_cases)
- ICU 死亡风险预测:使用入 ICU 后 24/48 小时的时序数据(生命体征、实验室检查、人口统计)预测住院死亡——这是 MIMIC 上最经典的基准任务,已有 1000+ 篇论文。
- 脓毒症早期预警与治疗策略优化:基于 Sepsis-3 标准识别脓毒症患者,预测休克发生和死亡率,并利用强化学习优化液体复苏和血管活性药物策略。
- 住院时长 (LOS) 预测与资源调度:预测 ICU 和总住院时长,辅助床位管理和医保控费决策。
- 疾病轨迹建模与表型发现:利用 ICD 编码序列和时序临床事件,通过 LSTM/Transformer 建模疾病进展轨迹,发现新的临床亚型。
- 临床自然语言处理 (Clinical NLP):利用 MIMIC-IV-Note 中的出院小结和放射学报告,训练医学 NER、关系抽取、文本摘要、Text-to-SQL(EHRSQL 基准)等模型。
- 多模态预测:融合同一患者的 EHR 时序数据 + 胸部 X 光影像 + 心电图波形,构建超越单一模态性能的预测模型。
- 因果推断与反事实推理:利用纵向观察数据,通过倾向性评分匹配、工具变量、G-computation 等方法评估治疗措施的因果效应。
- 公平性与算法偏见审计:MIMIC-IV 包含种族、性别、保险类型等敏感属性,已成为医疗 AI 公平性研究的标准评估数据集。
- 强化学习与序贯决策:将 ICU 治疗过程建模为 MDP,训练 AI Agent 学习最优的机械通气脱机策略、液体管理策略。
§2 医学背景(Medical Context)
2.1 ICD-11 疾病编码(icd11_code)
MIMIC-IV 覆盖的疾病谱极广——ICU 收治患者通常病情危重、多病共存。以下为最主要的 ICD-11 覆盖大类:
| ICD-11 编码 | 疾病分类(中文) | 在 MIMIC-IV 中的代表性 |
|---|---|---|
| BA00-BE2Z | 循环系统疾病 | 心血管疾病(心衰、心梗、心律失常)是 ICU 最常见入院诊断 |
| 1C10-1C1Z | 呼吸系统疾病 | 呼吸衰竭、肺炎、ARDS 是机械通气的主要原因 |
| 1C40-1C4Z | 神经系统疾病 | 缺血性/出血性脑卒中、癫痫持续状态 |
| 1G40-1G4Z | 脓毒症及相关综合征 | 脓毒症、脓毒性休克(Sepsis-3 标准)是 ICU 主要死因 |
| GB40-GB6Z | 泌尿系统疾病 | 急性肾损伤 (AKI) 影响约 50% 的 ICU 患者 |
| MA00-MA2Z | 内分泌、营养或代谢疾病 | 糖尿病及其急性并发症(酮症酸中毒、高渗性昏迷) |
| 1A00-1H0Z | 某些感染性疾病或寄生虫病 | 各种感染/脓毒症的感染源 |
| NA00-NF2Z | 损伤、中毒或外因的某些其他后果 | 创伤、中毒、术后监护 |
| 2C00-2F9Z | 肿瘤 | 恶性肿瘤的围手术期管理和并发症处理 |
| 6A00-6E8Z | 精神、行为或神经发育障碍 | 谵妄、药物过量和戒断综合征 |
2.2 疾病简介(disease_description)
重症监护医学面对的并非单一疾病,而是危及生命的急性器官功能障碍综合征。根据 Sepsis-3 定义(Singer et al., JAMA 2016),ICU 核心治疗对象是"因感染或非感染因素导致的多器官功能衰竭高风险患者"。全球每年约 3,000 万人需要 ICU 级别的救治,ICU 死亡率在 8-30% 之间(取决于病种和国家/地区),且存活者中相当比例遗留长期功能障碍(Post-Intensive Care Syndrome, PICS)。ICU 资源消耗巨大——占美国医院总床位的 8-10%,却消耗了约 13-20% 的医院总预算和约 0.7-1.0% 的 GDP。
2.3 临床任务定义(clinical_task)
MIMIC-IV 支撑的临床 AI 任务可归纳为五个层次,从最基础的描述性分析到最高阶的决策优化:
| 层次 | 任务类型 | 具体示例 | 临床意义 |
|---|---|---|---|
| L1 描述 | 回顾性流行病学分析 | 统计某病种的 ICU 死亡率、LOS 分布 | 理解现状,发现差异 |
| L2 预测 | 风险分层 | 死亡预测 (AUROC 0.85-0.95)、脓毒症提前 4-12h 预警 | 早期识别高危患者 |
| L3 诊断 | 表型发现 | 通过聚类发现 ARDS 亚表型、脓毒症亚型 | 精准分型 → 个体化治疗 |
| L4 干预 | 因果推断 | 评估早期 vs 延迟肾脏替代治疗的因果效应 | 指导治疗时机选择 |
| L5 决策 | 序贯优化 | 强化学习优化机械通气脱机策略、液体管理 | 自动化的动态治疗策略 |
-> 最重要的区分:MIMIC-IV 是观察性数据,不是随机对照试验(RCT)数据。L4-L5 层的研究必须通过严格的因果推断方法(倾向性评分、工具变量、边际结构模型、G-methods)来近似因果效应,否则"关联"会被误读为"因果"。
2.4 患者人群特征(patient_population)
人口统计学
| 特征 | 分布 |
|---|---|
| 年龄 | 中位年龄约 65 岁(IQR 52-78),->89 岁统一标记为 91 岁(去标识化截断) |
| 性别 | 男性约 54%,女性约 46% |
| 种族 | 白人约 65-70%、非裔约 10%、亚裔约 2-3%、西班牙裔约 3-4%、其他/未知约 15% |
| 保险类型 (v3.0+) | Medicare(老年/残疾)、Medicaid(低收入)、Private(商业保险)、Self-pay(自费)、Free charge、Other |
| 婚姻状态 | 已婚/有伴侣、单身、丧偶、离异 |
入排标准
纳入:2008-2022 年间在 BIDMC 急诊科就诊或入住任何 ICU 类型(MICU/SICU/CCU/CSRU/NICU/TSICU)的所有患者。
排除:
- 未入住 ICU 或急诊科的住院患者不在此数据集内
- 数据采集并非基于特定疾病,而是基于就诊地点(急诊科和 ICU)
- 新生儿 ICU (NICU) 有部分覆盖但不完整——MIMIC 项目建议关注新生儿的研究者使用专门的 NICU 数据集
关键局限
- 单中心偏倚:所有数据来自一家位于波士顿的学术医疗中心。患者群体代表的是美国东北部城市三级转诊中心的特定人群,不能直接推广到社区医院、农村医院或其他国家。
- 转诊偏倚:BIDMC 作为哈佛医学院的教学医院,接收大量外院转诊的疑难危重患者,这部分患者的病情严重程度和治疗历史与直接入院的患者不同。
- 选择偏倚:只有存活到入院(并需入住 ICU)的患者才被记录,院前死亡和轻症患者在数据中不可见。
2.5 临床意义(clinical_significance)
ICU 是现代医院中最数据密集但决策最困难的场所。一个典型 ICU 患者每天产生约 1,500-2,000 个数据点(心率、血压、氧饱和度每分钟记录;实验室检查每 4-6 小时更新;药物剂量持续调整),远超人类临床医生的信息处理能力。与此同时,ICU 中延迟识别病情恶化是导致可预防死亡的首位原因。MIMIC-IV 为研究者提供了构建 AI 预警系统、决策支持工具、自动化表型识别算法的基础数据,其最终目标是将 ICU 的海量数据转化为可行动的临床洞察。
从经济学角度,ICU 院内死亡率的微小改善意味着巨大的社会和经济效益。仅以美国为例:ICU 年住院约 500 万人次,若 AI 模型能将 ICU 死亡率从 10% 降至 9%(绝对风险降低 1%),每年可挽救 50,000 条生命。
2.6 金标准 / 参考标准(gold_standard)
这是理解 MIMIC-IV 数据可靠性的最关键问题:
| 数据类型 | 金标准 / 参考依据 | 可信度 |
|---|---|---|
| 诊断编码(ICD-9/10) | 由临床编码员根据出院病历分配(非医生直接输入),用于医保报销而非研究 | ⭐⭐⭐ — 存在感度/特异度权衡,部分诊断的编码准确率仅 60-80% |
| 实验室检查结果 | 来自 BIDMC 中心实验室,通过质量控制和室间质评 | ⭐⭐⭐⭐⭐ — 数值可靠,但需注意不同时期的参考范围变更 |
| 生命体征 | 来自 ICU 床旁监护仪(iMDSoft MetaVision),由护理人员验证 | ⭐⭐⭐⭐ — 高频但含伪差(如翻身时的血压波动) |
| 死亡结局 | 院内死亡来自 EHR 记录;院外死亡来自社会保障管理局(SSA)Death Master File | ⭐⭐⭐⭐ — 院内死亡准确,院外死亡约 5-15% 漏报率(2011 年后 SSA 移除部分受保护记录) |
| 药物记录 | 来自电子医嘱系统(CPOE)和药物执行记录(eMAR) | ⭐⭐⭐ — 记录了医嘱和使用,但不等于患者实际服药 |
| 自由文本笔记 | 医生/护士的日常记录,去标识化处理;诊断推理过程隐含在文本中 | ⭐⭐⭐ — 信息丰富但非结构化,需 NLP 提取 |
| 影像报告 | 放射科主治医师的最终报告 | ⭐⭐⭐⭐ — 但 CheXpert 自动标注器的误差率为 5-15% |
-> ⚠️ 核心认知:ICD 编码 ≠ 真实诊断。例如,ICD-10 中的"脓毒症"(A41.x) 编码可能因为医保报销压力而被过度使用或因为"present on admission" flag 的设置方式而产生误分类。建议研究者将 ICD 编码与实验室结果(如血乳酸 ≥ 2 mmol/L)、生命体征(SOFA 评分 ≥ 2)结合使用,以 Sepsis-3 临床标准而非 ICD 编码定义脓毒症队列。
§3 数据集规格(Specifications)
3.1 模态详细说明(modality_detail)
MIMIC-IV 是以结构化时序数据为核心,以文本和影像为扩展的多模态数据集:
-
结构化时序数据(核心):
- 高频数据:生命体征(心率、血压、呼吸频率、SpO₂、体温),采样频率从每分钟到每 15 分钟不等,存储在
chartevents表中(4.33 亿行) - 中频数据:实验室检查结果(血常规、生化、血气、凝血、微生物),存储在
labevents表中(1.18 亿行),采样间隔为 4-12 小时 - 低频数据:微生物培养结果(24-72h 出结果)、药物处方(按日/按次)、出入量记录(按小时)
- 高频数据:生命体征(心率、血压、呼吸频率、SpO₂、体温),采样频率从每分钟到每 15 分钟不等,存储在
-
结构化表格数据:患者人口统计、诊断编码(ICD-9/10)、手术编码、DRG 编码、转科记录、账单信息
-
自由文本(需单独申请 MIMIC-IV-Note):
- 出院小结(每个住院 1 份)
- 放射学报告(每份影像检查对应 1 份)
- 心电图报告
- 约 300 万份去标识化临床文档
-
影像(通过 subject_id 关联,需单独申请):
- MIMIC-CXR:377,110 张胸部 X 光片(DICOM + JPEG),2011-2016 年,65,079 名患者
- MIMIC-IV-ECG:12 导联心电图波形(WFDB 格式),~800,000 条记录,约 90.4 GB 未压缩
3.2 样本总数(total_samples)
| 数据层级 | 数量 | 备注 |
|---|---|---|
| 唯一患者 (subject_id) | 364,627 | 其中 223,452 至少住院一次 |
| 住院次数 (hadm_id) | 546,028 | 覆盖 2008-2022 |
| ICU 停留 (stay_id) | 94,458 | 分布在各类型 ICU |
| 急诊就诊 (ed stay_id) | 423,587 | 仅 v3.0+ 统计 |
| chartevents 行数 | 432,997,491 | ICU 床旁监护数据 |
| labevents 行数 | 118,412,243 | 实验室检查数据 |
| 院外 1 年死亡随访 | v3.0+ 新增 | SSA Death Master File |
3.3 数据格式详细说明(data_format_detail)
| 格式 | 用途 | 存储量 | 备注 |
|---|---|---|---|
| CSV (.csv.gz) | PhysioNet 官方分发格式 | ~7 GB 压缩,解压后数据库 ~100 GB | 需导入 PostgreSQL 使用 |
| PostgreSQL | 本地数据分析首选 | ~100 GB(含索引后 ~150 GB) | MIT-LCP 提供完整建库脚本(mimic-code) |
| Google BigQuery | 云端查询(零本地存储) | 按查询量计费 | v3.1 已上线;schema: mimiciv_v3_1_hosp / mimiciv_v3_1_icu |
| WFDB | ECG 波形数据 | 原始 ~90.4 GB 未压缩 | 使用 wfdb-python 库读取 |
| DICOM / JPEG | CXR 胸部 X 光 | ~450 GB(MIMIC-CXR JPEG) | 通过 subject_id 关联 |
| FHIR / OMOP CDM | 标准互操作格式 | 需转换 | MIT-LCP 提供参考 export 脚本 |
3.4 存储空间需求(storage_size)
| 组件 | 压缩包 | 解压/导入后 | 最低推荐磁盘 |
|---|---|---|---|
| MIMIC-IV v3.1 CSV | ~7 GB | — | 15 GB |
| PostgreSQL 数据库 | — | ~100 GB(含索引 ~150 GB) | 250 GB SSD |
| MIMIC-CXR JPEG | ~120 GB | ~450 GB | 1 TB |
| MIMIC-IV-ECG | ~33.8 GB | ~90.4 GB | 200 GB |
| 全量本地部署 | ~160 GB | ~700 GB | 1 TB+ SSD |
-> 💡 建议:对大多数研究者,推荐使用 BigQuery 云端方案——零本地存储、零导入时间、实时查询最新数据。下载成本可在 PhysioNet Cloud 页面查询。
3.5 标注方式(annotation_method)
MIMIC-IV 的"标注"与传统 ML 意义上的标注有本质不同——它是临床实践的副产品,而非为 AI 研究专门创建的标注:
| 标签类型 | 来源 | 标注方式 |
|---|---|---|
| 诊断标签 (Phenotype Labels) | ICD-9/10 编码 (diagnoses_icd 表) | 专业编码员根据出院病历分配,非医生直接标注 |
| 死亡标签 (Mortality) | EHR 出院状态 + SSA Death Master File | 院外死亡通过社保系统匹配(最长随访至出院后 1 年) |
| 再入院标签 | 后续住院记录 | 通过同一 subject_id 的下一次 hadm_id 确定,30 天再入院为通用标准 |
| 临床事件时间 | chartevents 的 charttime | 由床旁设备自动记录 + 护理人员手动验证 |
| 放射学标签(CXR) | MIMIC-CXR 放射报告 | CheXpert 自动标注器 (CheXpert Labeler) 从放射报告中提取 14 类标签;含不确定类 (-1.0) |
| ECG 诊断 | MIMIC-IV-ECG 心内科报告 | 心内科医生出具的结构化报告 |
| 自由文本 NER 标注 | 需社区自行创建 | MIMIC-IV-Note 提供原始文本;i2b2 2010/2012/2014 等社区标注覆盖部分子集 |
3.6 标注者资质(annotator_info)
| 角色 | 资质 | 影响因素 |
|---|---|---|
| 临床数据录入者 | BIDMC 注册护士、呼吸治疗师、临床药师 | 数据录入培训,但存在班次交接时的延迟录入 |
| 诊断编码员 | 持有 AHIMA 认证的编码专业人员(CCS/CCS-P) | 目标为医保报销优化而非研究精度 |
| 放射科医师 | BIDMC 放射科主治医师(board-certified) | 最终报告,质量高;但不同读片人之间的变异性存在 |
| 心电图医师 | BIDMC 心内科主治医师 | 标准化 12 导联判读 |
-> 重要限制:没有正式的一致性检验(Inter-rater Reliability)数据公布。诊断编码的编码员间变异性未报告;生命体征验证的护理人员间一致性未知。
3.7 数据采集时间范围(collection_period)
2008 年 6 月 — 2022 年 12 月(v3.0 扩展至 2022 年)。
- v2.2 及之前:2008-2019
- v3.0+:扩展至 2020-2022(包含 COVID-19 大流行期间数据)
-> ⚠️ COVID-19 影响:2020-2022 新增数据覆盖 COVID-19 大流行期间。在此期间,ICU 病例组合(case mix)、死亡率基线、住院时长分布可能与之前年份有显著差异。使用 v3.0+ 的研究应注意按年份分层分析或排除大流行期间的潜在混杂。
3.8 地理覆盖(geographic_coverage)
单一地点:Beth Israel Deaconess Medical Center (BIDMC),位于美国马萨诸塞州波士顿市。
- 类型:三级学术医疗中心(哈佛医学院教学医院)
- 服务人群:波士顿都市区 + 新英格兰地区的转诊患者
- 床位:约 673 张(含 77 张成人 ICU 床位)
3.9 采集设备规格(equipment_spec)
| 设备 | 型号/系统 | 备注 |
|---|---|---|
| ICU 监护系统 | iMDSoft MetaVision | 统一的临床信息系统,所有 ICU 数据均从此处提取 |
| HIS 系统 | 定制 EHR(BIDMC 自研) | 全院级电子病历系统 |
| 实验室分析仪 | BIDMC 中心实验室标准设备 | 具体型号未公开,但符合 CLIA 认证 |
| 影像设备 | 多种型号(Siemens / GE / Philips) | 具体型号见 MIMIC-CXR 的 DICOM metadata |
| 心电图机 | GE MUSE 心电管理系统 | 标准 12 导联,500 Hz 采样率 |
§4 数据结构详解(Data Schema)
4.1 模块总览与数据流向
MIMIC-IV v3.1 包含 6 个模块,共计 38 张主要数据表(hosp 22 张 + icu 9 张 + ed 6 张 + cxr 2 张 + note + ecg):
patients (subject_id)
│
┌─────────────┼─────────────┐
▼ ▼ ▼
admissions MIMIC-CXR MIMIC-IV-ECG
(hadm_id) (dicom_id) (study_id)
│
┌─────────┼─────────┬──────────────┐
▼ ▼ ▼ ▼
hosp icu ed note
(全院) (ICU) (急诊) (笔记)
22表 9表 6表 文本
│ │
└────┬────┘
▼
数据整合层 (Derived Tables)
如:SOFA、SAPS II、Sepsis-3 等
核心标识符 (Identifiers)
subject_id ──→ 患者唯一标识(跨模块、跨版本的纽带)
│
└── hadm_id ──→ 唯一住院标识(一次入院 = 一个 hadm_id)
│
├── stay_id ──→ ICU 停留标识(一次 ICU = 一个 stay_id)
│ 可能多个 stay_id 属于同一个 hadm_id
└── ed stay_id ──→ 急诊就诊标识
4.2 hosp 模块核心表字段(field_table)
patients 表 — 患者人口统计
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 |
|---|---|---|---|---|
subject_id |
INT | 患者唯一标识 | 10002341 | 主键,跨表关联 |
gender |
CHAR(1) | 性别 | M / F | 偏倚检测、分层分析 |
anchor_age |
INT | 锚定年龄(入院时) | 67 | 协变量、年龄标准化 |
anchor_year |
INT | 锚定年份(替换实际入院年份) | 2150 | 推断时间段(2008-2022) |
anchor_year_group |
ENUM | 时间段分组 | 2017-2019 | 按时间段分层 |
dod |
TIMESTAMP | 死亡日期(去标识化) | 2155-03-12 | 生存分析标签 |
admissions 表 — 住院核心信息
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 |
|---|---|---|---|---|
hadm_id |
INT | 住院唯一标识 | 20012345 | 关联住院维度数据 |
subject_id |
INT | 患者标识 | 10002341 | 关联患者 |
admittime |
TIMESTAMP | 入院时间 | 2153-08-25 07:15 | T0 参考点 |
dischtime |
TIMESTAMP | 出院时间 | 2153-08-30 14:15 | LOS 计算终点 |
admission_type |
VARCHAR | 入院类型 | EMERGENCY/ELECTIVE/URGENT | 数据筛选 |
insurance |
VARCHAR | 保险类型 | Medicare/Medicaid/Private/Self-pay/Other/Free charge (v3.0+) | 社会经济协变量 |
language |
VARCHAR | 语言 | ENGLISH/SPANISH (v3.0+ 标准化) | 自然语言分析 |
marital_status |
VARCHAR | 婚姻状态 | MARRIED/SINGLE/WIDOWED | 社会支持协变量 |
ethnicity |
VARCHAR | 种族 | WHITE/BLACK/AFRICAN AMERICAN/ASIAN | 公平性研究关键字段 |
hospital_expire_flag |
TINYINT | 住院死亡标志 | 0/1 | 最常用标签之一 |
diagnoses_icd 表 — 诊断编码
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 |
|---|---|---|---|---|
subject_id + hadm_id |
INT | 行列标识 | — | 关联住院 |
seq_num |
INT | 诊断优先级 | 1-39(1=主要诊断) | 区分主要/次要诊断 |
icd_code |
VARCHAR | ICD-9 或 ICD-10 编码 | I10 (ICD-10: 原发性高血压) | 表型定义 |
icd_version |
INT | ICD 版本 | 9 或 10 | 统一编码体系 |
labevents 表 — 实验室检查
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 |
|---|---|---|---|---|
itemid |
INT | 检测项目 ID | 50868 | 映射到具体检测项 (d_labitems) |
charttime |
TIMESTAMP | 采样时间 | 2153-08-25 09:30 | 时序对齐的核心 |
valuenum |
DOUBLE | 数值结果 | 12.5 | 模型输入特征 |
valueuom |
VARCHAR | 单位 | mg/dL | 单位标准化 |
ref_range_lower/upper |
DOUBLE | 参考范围 | 0.6/1.2 | 异常判断 |
flag |
VARCHAR | 异常标记 | abnormal | 快速筛选异常值 |
4.3 icu 模块核心表字段(field_table)
icustays — ICU 停留记录
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 |
|---|---|---|---|---|
stay_id |
INT | ICU 停留唯一标识 | 30001234 | ICU 模块主键 |
subject_id + hadm_id |
INT | 关联标识 | — | 跨表关联 |
first_careunit |
VARCHAR | 首个 ICU 类型 | MICU/SICU/CCU/CSRU/NICU/TSICU | 数据分层 |
last_careunit |
VARCHAR | 最后 ICU 类型 | — | 转科追踪 |
intime |
TIMESTAMP | 入 ICU 时间 | 2153-08-25 10:00 | ICU T0 |
outtime |
TIMESTAMP | 出 ICU 时间 | 2153-08-28 16:00 | ICU LOS 终点 |
los |
DOUBLE | ICU 住院时长(天) | 3.25 | 目标变量 |
chartevents — 床旁监护数据(最大表)
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 |
|---|---|---|---|---|
itemid |
INT | 监测项目 ID | 220045 (心率) | 映射到具体指标 (d_items) |
charttime |
TIMESTAMP | 测量/记录时间 | 2153-08-25 10:05 | 时序对齐 |
storetime |
TIMESTAMP | 护理人员输入/验证时间 | 2153-08-25 10:12 | ⚠️ charttime vs storetime 差异 |
valuenum |
DOUBLE | 数值结果 | 98.0 | 关键:用于数值计算 |
value |
VARCHAR(200) | 原始值(含非数值) | 98 / AWAKE | 文本值需特殊处理 |
valueuom |
VARCHAR(20) | 单位 | bpm | 单位一致性检查 |
warning |
SMALLINT | 护理人员标记的警告 | 0/1 | 数据质量指示 |
d_items — ICU 数据项字典
| 字段名 | 说明 | 示例 |
|---|---|---|
itemid |
数据项 ID(主键) | 220045 |
label |
项目名称 | Heart Rate |
abbreviation |
缩写 | HR |
linksto |
关联的事件表 | chartevents |
category |
类别 | Routine Vital Signs |
unitname |
测量单位 | bpm |
param_type |
数据类型 | Numeric |
lownormalvalue |
正常下限 | 60 |
highnormalvalue |
正常上限 | 100 |
4.4 标签分布:住院死亡率(label_distribution)
住院死亡率是 MIMIC-IV 上最常用的基准标签:
| 标签值 | 住院次数 | 占比 | 说明 |
|---|---|---|---|
| 存活 (0) | ~497,000 | ~90.7% | 高度不平衡 |
| 死亡 (1) | ~49,000 | ~9.3% | 少数类 |
| 总计 | 546,028 | 100% | 比例约 10:1 |
-> ⚠️ 重要提示:这是全量住院的死亡率。若限定为ICU 患者,死亡率约 12-15%;若限定为脓毒症患者,28 天死亡率约 21%;若限定为心脏骤停后 ICU 患者,死亡率可高达 50%+。定义队列的方式决定了你的标签基线——这是 MIMIC 研究中最常见的"苹果和橘子"比较问题。
4.5 数据层级关系(data_hierarchy)
患者 (subject_id)
├── 住院 1 (hadm_id = H1)
│ ├── 急诊就诊 (ed: stay_id = E1)
│ ├── ICU 停留 1 (icu: stay_id = S1)
│ │ ├── chartevents 每小时记录 (数百条/天)
│ │ ├── labevents 每次抽血结果
│ │ ├── inputevents 每次输液
│ │ └── outputevents 每小时尿量
│ ├── 转科到普通病房(transfers 表记录)
│ └── ICU 停留 2 (icu: stay_id = S2) ← 同一住院的第二次 ICU 停留
├── 住院 2 (hadm_id = H2)
│ ├── ...(可能没有 ICU)
│ └── 出院,1 年内死亡(SSA Death Master File)
└── 住院 3 (hadm_id = H3) ...
关键关系规则:
- 一个
subject_id可有多个hadm_id(多次住院) - 一个
hadm_id可有多个stay_id(一次住院内多次进出 ICU) - 一个
stay_id只有一个hadm_id(每次 ICU 停留属于一次住院) - CXR 和 ECG 通过
subject_id(可能还有hadm_id)与结构化数据关联
4.6 缺失数据情况(missing_data)
MIMIC-IV 的缺失数据不是随机缺失(Not Missing At Random, NMAR):
| 缺失模式 | 原因 | 影响 |
|---|---|---|
| 检测稀疏性 | 重症患者检测更频繁,轻症患者检查少 | 缺失本身具有预测信息!不能简单填充 |
| 实验室检查缺失 | 某些检查只在特定场景做(如 TnI 只在怀疑心梗时查) | 缺失指示了临床决策过程 |
| chartevents 间断 | 患者离开 ICU 做检查时数据中断 | 时间序列建模需要处理 gap |
| 单位不一致 | 同一 itemid 可能在早期版本用 mg/dL,后期用 mmol/L | 需聚合前做单位转换 |
| ->89 岁年龄截断 | HIPAA 去标识化要求 | 91 岁是一个混合值,不宜用于年龄相关分析 |
| 院外死亡截断 | 出院后 ->1 年的死亡不公开 | 长期生存分析的尾删(administrative censoring) |
§5 数据划分与使用建议(Splits & Usage)
5.1 官方 train/val/test 划分(official_splits)
MIMIC-IV 没有官方的 train/val/test 划分。 这是一个重要的事实,意味着:
- 每篇论文可能使用不同的划分方式(不同的患者、不同的入排标准)
- 不同论文报告的"同样的 MIMIC-IV 基准任务"可能完全不可比较
- 这既是灵活性,也是可复现性危机
但社区已经形成了约定俗成的做法:
| 文献来源 | 划分方式 | 比例 | 备注 |
|---|---|---|---|
| MIMIC-Extract (Gupta et al., 2022) | random split by patient | 70/15/15 | 最推荐的通用方案 |
| MIMIC-III Benchmark (Harutyunyan et al., 2019) | fixed patient list | 预定义 | MIMIC-III 遗产,常被移植到 IV |
| EHRSQL Benchmark (Lee et al., 2024) | 预定义 test set | 固定 | Text-to-SQL 任务的特定划分 |
| MOTOR (som-shahlab, 2025) | global patient split | 85/15 | 基础模型预训练/微调 |
| MIMIC-Sepsis (Huang et al., 2025) | random split | 80/10/10 | 脓毒症特定任务 |
5.2 推荐划分策略与原理(split_strategy)
推荐方案:patient-level random split, 70/15/15
import pandas as pd
from sklearn.model_selection import train_test_split
# 1. 获取所有唯一的 subject_id(不是 hadm_id!)
all_patients = admissions[subject_id].unique()
# 2. 先分离出 15% 的 test 集
train_val_patients, test_patients = train_test_split(
all_patients, test_size=0.15, random_state=42
)
# 3. 从剩余 85% 中分离 15% 作为验证集(即 85% × 15/85 = 15% 总量)
train_patients, val_patients = train_test_split(
train_val_patients, test_size=0.15/0.85, random_state=42
)
# 4. 按 subject_id 将患者信息映射到各自的数据集
def assign_split(hadm_df):
df = hadm_df.copy()
df[split] = unknown
df.loc[df[subject_id].isin(train_patients), split] = train
df.loc[df[subject_id].isin(val_patients), split] = val
df.loc[df[subject_id].isin(test_patients), split] = test
return df
为什么必须按 patient(不是 hadm_id 或 stay_id)划分?
关键原则:同一患者的所有数据必须全部在同一划分中。
- 如果按 hadm_id 划分:同一患者的两次住院可能分布在 train 和 test 中 → 模型可能从"患者特征"而非"疾病模式"中学习 → AUC 虚高
- 如果按 stay_id 划分:同一住院期间的两次 ICU 停留可能分布在 train 和 test 中 → 数据泄漏更严重,因为 ICU 停留共享同一住院的诊断和治疗信息
- 只有按 subject_id 划分才能保证:模型在 test 集上面对的是从未见过的患者——这才是真正的泛化性测试
5.3 数据泄漏风险(leakage_risks)
这是 MIMIC-IV 研究中最常被忽视但最致命的问题。以下 5 种泄漏模式必须避免:
| # | 泄漏类型 | 严重程度 | 检测方法 | 解决方案 |
|---|---|---|---|---|
| 1 | 同一患者的多次住院跨划分 | 🔴 致命 | 检查 train/test 有无交集的 subject_id | patient-level split |
| 2 | 同一住院的多次 ICU 停留跨划分 | 🔴 致命 | 检查 train/test 有无交集的 hadm_id | patient-level split |
| 3 | 使用未来信息预测过去 | 🟠 严重 | 检查特征时间戳是否在标签时间之前 | 严格按 charttime 截断 |
| 4 | 标签泄漏:出院状态用于入 ICU 时的预测 | 🟠 严重 | hospital_expire_flag 只能用于标签 | 特征排除当天 + 未来事件 |
| 5 | 按年份划分导致的分布偏移 | 🟡 中等 | 对比 train/test 的年份分布 | 随机划分优先;如需时间划分,明确声明 |
-> 现实案例:一篇 2023 年的综述(Boag et al., 2022)审查了 50+ 篇 MIMIC 论文,发现约 20% 存在不同程度的 data leakage——其中最常见的错误就是没有做 patient-level split。
5.4 交叉验证建议(cv_recommendation)
推荐方案:5 折 patient-level 分层交叉验证(按标签分布分层)。
from sklearn.model_selection import StratifiedGroupKFold
# 为每个患者创建一个标签(如有多次住院,取任何一次住院的标签)
patient_labels = df.groupby(subject_id)[hospital_expire_flag].max()
cv = StratifiedGroupKFold(n_splits=5, shuffle=True, random_state=42)
for fold, (train_idx, val_idx) in enumerate(cv.split(
patient_labels.index, patient_labels, groups=patient_labels.index
)):
train_patients = patient_labels.index[train_idx]
val_patients = patient_labels.index[val_idx]
print(f"Fold {fold+1}: Train={len(train_patients)}, Val={len(val_patients)}")
注意事项:
- 在 MIMIC 上做 k-fold CV 的计算成本极高(每次 fold 需要重新提取和预处理整个数据集)
- 许多已发表的 MIMIC 论文仅使用单次 hold-out(70/15/15)而非 k-fold,这在一定程度上是社区接受的
- 建议至少做 3 折 CV 并在论文中明确报告 fold 间的标准差
5.5 外部验证(external_validation)
MIMIC-IV 的最佳外部验证数据集:
| 外部数据集 | 优缺点 | 推荐场景 |
|---|---|---|
| eICU-CRD | ✅ 多中心(208家美国医院)✅ 相似数据模式 ❌ 数据窗口极短(1-1.5年)❌ 无 CXR/ECG/Notes | 首选外部验证 |
| AmsterdamUMCdb | ✅ 欧洲人群 ✅ 含波形数据 ❌ 规模较小(23k) | 跨洲验证 |
| HiRID | ✅ 瑞士人群 ✅ 高频数据(2分钟间隔)❌ 不同数据模型 | 跨系统验证 |
多篇论文已证明 MIMIC-IV → eICU-CRD 的外部验证流程:例如 Chen et al. (2025) 的 SA-AKI 死亡预测模型在 MIMIC-IV 上训练 AUROC 0.878,在 eICU 上外部验证 AUROC 0.85+。
5.6 推荐划分比例(recommended_split_ratio)
| 场景 | 推荐比例 | 理由 |
|---|---|---|
| 深度学习方法 | 70/15/15 | 足够训练数据 + 充足的验证和测试 |
| 简单模型 (LR/SVM) | 80/10/10 | 模型训练成本低,可多给训练数据 |
| 数据量小的子队列 (-< 5,000) | 80/10/10 或 3-fold CV | 保证测试集有统计效力 |
| 带超参数搜索 | 60/20/20 | 更可靠的超参数选择 |
§6 AI就绪指南(AI-Ready Guide)⭐
-> 千方核心差异化模块:本节目标是让一个合格 AI 工程师在 30 分钟内开始 MIMIC-IV 上的模型训练。
6.1 快速上手(quick_start)
"""
============================================
MIMIC-IV 快速上手 — 住院死亡预测 PyTorch 版
============================================
环境要求: torch->=2.0, pandas, numpy, scikit-learn
前置条件: 已通过 BigQuery 或本地 PostgreSQL 访问 MIMIC-IV v3.1
"""
import pandas as pd
import numpy as np
import torch
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# ======== Step 0: 从数据库提取数据(SQL)========
# 如果使用 BigQuery:
# SELECT
# a.subject_id, a.hadm_id, a.hospital_expire_flag,
# a.admission_type, p.gender, p.anchor_age,
# icu.stay_id, icu.los AS icu_los
# FROM `physionet-data.mimiciv_v3_1_hosp.admissions` a
# JOIN `physionet-data.mimiciv_v3_1_hosp.patients` p
# ON a.subject_id = p.subject_id
# LEFT JOIN `physionet-data.mimiciv_v3_1_icu.icustays` icu
# ON a.hadm_id = icu.hadm_id
# WHERE a.hospital_expire_flag IS NOT NULL
# ======== Step 1: 加载预处理后的数据 ========
# 假设你已经通过 mimic-code 或 MIMIC-Extract 完成了数据提取
df = pd.read_csv(mimic_iv_cohort.csv)
# ======== Step 2: Patient-level split ========
patients = df[subject_id].unique()
train_patients, temp_patients = train_test_split(
patients, test_size=0.3, random_state=42
)
val_patients, test_patients = train_test_split(
temp_patients, test_size=0.5, random_state=42
)
def get_split(subject_id):
if subject_id in train_patients: return train
if subject_id in val_patients: return val
return test
df[split] = df[subject_id].apply(get_split)
# ======== Step 3: 准备特征和标签 ========
feature_cols = [anchor_age, gender_M, admission_type_EMERGENCY,
heart_rate_mean, sbp_mean, dbp_mean, resp_rate_mean,
temperature_mean, spo2_mean, wbc, creatinine,
bun, glucose, sodium, potassium, lactate]
label_col = hospital_expire_flag
X_train = df[df[split] == train][feature_cols].fillna(0)
y_train = df[df[split] == train][label_col]
X_val = df[df[split] == val][feature_cols].fillna(0)
y_val = df[df[split] == val][label_col]
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_val = scaler.transform(X_val)
# ======== Step 4: 定义 PyTorch Dataset ========
class MIMICDataset(Dataset):
def __init__(self, X, y):
self.X = torch.tensor(X, dtype=torch.float32)
self.y = torch.tensor(y.values, dtype=torch.float32)
def __len__(self):
return len(self.X)
def __getitem__(self, idx):
return self.X[idx], self.y[idx]
train_ds = MIMICDataset(X_train, y_train)
val_ds = MIMICDataset(X_val, y_val)
train_loader = DataLoader(train_ds, batch_size=128, shuffle=True)
val_loader = DataLoader(val_ds, batch_size=128)
# ======== Step 5: 定义模型 ========
class MortalityPredictor(nn.Module):
def __init__(self, n_features):
super().__init__()
self.net = nn.Sequential(
nn.Linear(n_features, 128),
nn.ReLU(),
nn.Dropout(0.3),
nn.Linear(128, 64),
nn.ReLU(),
nn.Dropout(0.3),
nn.Linear(64, 1),
nn.Sigmoid()
)
def forward(self, x):
return self.net(x)
model = MortalityPredictor(len(feature_cols))
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)
criterion = nn.BCELoss()
# ======== Step 6: 训练一个 epoch ========
model.train()
for X_batch, y_batch in train_loader:
optimizer.zero_grad()
pred = model(X_batch).squeeze()
loss = criterion(pred, y_batch)
loss.backward()
optimizer.step()
print(f"✅ 训练完成!Loss: {loss.item():.4f}")
6.2 数据获取(data_acquisition)
申请流程(预计 1-2 周)
Step 1: 注册 PhysioNet 账户 (physionet.org)
├── 推荐使用机构邮箱(.edu / .ac.cn)
└── 约 5 分钟
Step 2: 完成 CITI 伦理培训 (about.citiprogram.org)
├── 选择 "Massachusetts Institute of Technology Affiliates"
├── 课程: "Data or Specimens Only Research"
├── 总计约 2-3 小时
├── 通过标准: 每模块得分 ≥ 80%
└── 下载结业证书 (PDF)
Step 3: 在 PhysioNet 提交数据访问申请
├── 上传 CITI 证书
├── 填写推荐人信息(需已发表论文的研究人员)
├── 签署 Data Use Agreement (DUA)
└── 等待推荐人确认 + PhysioNet 审核 (1-14 天)
Step 4: 审核通过后下载数据
├── 方式 A: 直接下载 CSV (wget -r)
├── 方式 B: Google BigQuery (零下载,即查即用,推荐✨)
└── 方式 C: PhysioNet Cloud (AWS/GCP)
下载时间估算
| 方式 | 预估耗时 | 本地存储需求 |
|---|---|---|
| 仅 MIMIC-IV CSV | 1-3 小时(取决于带宽) | ~7 GB + ~100 GB 数据库 |
| BigQuery | 0 秒(无需下载) | 0 |
| 含 MIMIC-CXR | 6-12 小时 | ~500 GB |
6.3 预处理全流程(preprocessing_pipeline)
MIMIC-IV 的预处理是整个 AI 流程中最耗时但最关键的环节。以下是推荐的标准流程:
"""
MIMIC-IV 标准预处理 Pipeline
============================
阶段 1: 队列定义 (SQL, BigQuery)
阶段 2: 特征提取 (Python, pandas)
阶段 3: 数据清洗与标准化
阶段 4: 时序对齐与聚合
阶段 5: 缺失值处理
"""
# ========= 阶段 1: 队列定义 =========
# 推荐使用 BigQuery SQL 定义初始队列
# 示例:提取首次 ICU 入住的成人脓毒症患者
COHORT_SQL = """
WITH icu_first AS (
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER(PARTITION BY subject_id ORDER BY intime) AS rn
FROM `physionet-data.mimiciv_v3_1_icu.icustays`
) WHERE rn = 1
)
SELECT
p.subject_id, p.anchor_age, p.gender,
a.hadm_id, a.admittime, a.dischtime,
a.admission_type, a.insurance, a.ethnicity,
a.hospital_expire_flag, a.discharge_location,
i.stay_id, i.intime, i.outtime, i.los AS icu_los
FROM `physionet-data.mimiciv_v3_1_hosp.patients` p
JOIN `physionet-data.mimiciv_v3_1_hosp.admissions` a
ON p.subject_id = a.subject_id
JOIN icu_first i
ON a.hadm_id = i.hadm_id
WHERE p.anchor_age ->= 18 -- 仅成人
AND i.los ->= 1 -- ICU 至少住满 1 天
ORDER BY p.subject_id
"""
# ========= 阶段 2: 特征提取 =========
# 推荐使用 MIMIC-Extract(Gupta et al., 2022)
# pip install mimic-iv-extract # 社区工具
# 或直接从 chartevents/labevents 中提取关键指标
# itemid 速查表(常用指标)
VITAL_ITEMIDS = {
heart_rate: [220045],
sbp: [220179, 220050], # 无创 + 有创
dbp: [220180, 220051],
resp_rate: [220210, 224690],
temperature: [223761, 223762], # 摄氏/华氏
spo2: [220277],
gcs_eye: [220739], # GCS 评分
gcs_motor: [220741],
gcs_verbal: [220631],
}
LAB_ITEMIDS = {
wbc: 51301, # 白细胞计数
creatinine: 50912, # 肌酐
bun: 51006, # 血尿素氮
glucose: 50931, # 血糖
sodium: 50983, # 血钠
potassium: 50971, # 血钾
lactate: 50813, # 乳酸
platelet: 51265, # 血小板
bilirubin: 50885, # 总胆红素
inr: 51237, # INR
pt: 51274, # PT
troponin_i: 51003, # 肌钙蛋白 I
}
# ========= 阶段 3: 数据清洗 =========
def clean_vital_signs(df):
"""清洗生命体征数据:去除生理上不可能的异常值"""
# 心率: 有效范围 20-300 bpm
df.loc[(df[heart_rate] -< 20) | (df[heart_rate] -> 300), heart_rate] = np.nan
# SBP: 有效范围 40-300 mmHg
df.loc[(df[sbp] -< 40) | (df[sbp] -> 300), sbp] = np.nan
# SpO₂: 有效范围 50-100%
df.loc[(df[spo2] -< 50) | (df[spo2] -> 100), spo2] = np.nan
# 体温: 有效范围 25-45°C
df.loc[(df[temperature] -< 25) | (df[temperature] -> 45), temperature] = np.nan
return df
# ========= 阶段 4: 时序聚合 =========
def aggregate_time_windows(chartevents_df, icustays_df, window_hours=24):
"""
将 ICU 首个 24 小时的 chartevents 聚合为统计摘要。
window_hours: 预测窗口(通常是入 ICU 后 24 或 48 小时)
"""
# 关联 ICU 入室时间
df = chartevents_df.merge(icustays_df[[stay_id, intime]], on=stay_id)
# 计算相对时间(小时)
df[hours_from_admission] = (
(df[charttime] - df[intime]).dt.total_seconds() / 3600
)
# 仅保留首个时间窗口内的数据
df = df[df[hours_from_admission] ->= 0]
df = df[df[hours_from_admission] -<= window_hours]
# 对每个指标聚合统计特征
agg_features = df.groupby([stay_id, itemid]).agg({
valuenum: [min, max, mean, std, first, last, count]
}).reset_index()
return agg_features
# ========= 阶段 5: 缺失值处理 =========
def handle_missing_values(df):
"""
MIMIC 缺失值处理的黄金法则:
1. 不要简单填充均值/中位数!
2. 创建缺失指示器 (missing indicator) —— 缺失本身是信息
3. 区分"未检测"(正常→不查)vs "无法获得"(设备故障)
"""
for col in df.columns:
if df[col].isna().any():
# 创建缺失标志
df[f{col}_missing] = df[col].isna().astype(int)
# 用中位数填充(作为 baseline)
df[col].fillna(df[col].median(), inplace=True)
return df
6.4 框架加载代码(framework_loading)
# ====== PyTorch ======
import torch
from torch.utils.data import DataLoader, TensorDataset
X_tensor = torch.tensor(X_train, dtype=torch.float32)
y_tensor = torch.tensor(y_train.values, dtype=torch.float32).unsqueeze(1)
dataset = TensorDataset(X_tensor, y_tensor)
loader = DataLoader(dataset, batch_size=128, shuffle=True, num_workers=4)
# ====== TensorFlow / Keras ======
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Dense(128, activation=relu, input_shape=(n_features,)),
tf.keras.layers.Dropout(0.3),
tf.keras.layers.Dense(64, activation=relu),
tf.keras.layers.Dropout(0.3),
tf.keras.layers.Dense(1, activation=sigmoid)
])
model.compile(optimizer=adam, loss=binary_crossentropy, metrics=[AUC])
model.fit(X_train, y_train, batch_size=128, epochs=50,
validation_data=(X_val, y_val), class_weight={0: 1, 1: 5})
# ====== XGBoost(MIMIC 上最常用的 baseline)======
import xgboost as xgb
scale_pos_weight = (y_train == 0).sum() / (y_train == 1).sum()
model = xgb.XGBClassifier(
n_estimators=200, max_depth=6, learning_rate=0.05,
scale_pos_weight=scale_pos_weight,
eval_metric=auc, early_stopping_rounds=20
)
model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False)
# ====== LightGBM(梯度提升的强力 baseline)======
import lightgbm as lgb
train_data = lgb.Dataset(X_train, label=y_train)
val_data = lgb.Dataset(X_val, label=y_val)
params = {
objective: binary, metric: auc,
num_leaves: 31, learning_rate: 0.05,
is_unbalance: True
}
model = lgb.train(params, train_data, valid_sets=[val_data],
num_boost_round=200, callbacks=[lgb.early_stopping(20)])
6.5 常见坑点 Top 10(common_pitfalls)
-> ⚠️ 坑点 1:按 hadm_id 而非 subject_id 划分数据
->
-> 问题:同一患者的多次住院可能分布在 train 和 test 中。模型学习到的是"这个患者有病"而不是"这种病有什么模式"。AUROC 虚高 3-5%。
->
-> 解决:一切划分的基础单位必须是 subject_id。GroupKFold 或 StratifiedGroupKFold。
-> ⚠️ 坑点 2:混淆 charttime 和 storetime
->
-> 问题:charttime 是测量/观察时间,storetime 是护士手动输入/验证时间。两者可相差数小时。如果用 storetime 做时序对齐,你预测的其实是"护士什么时候有空输入数据"而不是"患者的真实状态"。
->
-> 解决:始终使用 charttime 进行时序建模。storetime 仅用于数据质量分析。
-> ⚠️ 坑点 3:标签泄漏——用 hospital_expire_flag 训练预测"入 ICU 24h 后死亡"
->
-> 问题:hospital_expire_flag 是整个住院的死亡标签。如果你用包含出院信息的特征(如出院科室、总住院时长)来预测死亡率,模型实际上是看到了未来信息。
->
-> 解决:特征计算必须严格截断在预测时间点之前。入 ICU 后 24h 预测只能使用前 24h 的数据。
-> ⚠️ 坑点 4:未考虑 chartevents 和 labevents 的重复
->
-> 问题:同一个实验室结果可能同时存在于 chartevents(护士抄录到床边电子病历)和 labevents(实验室信息系统直接记录)。两者可能有微小差异(手动录入错误 vs 自动传输)。
->
-> 解决:官方建议在两者不一致时,labevents 为金标准。理想做法是优先使用 labevents,仅在缺失时回退到 chartevents。
-> ⚠️ 坑点 5:MIMIC-III 和 MIMIC-IV 的差异被忽视
->
-> 问题:从 III 迁移到 IV 的研究者经常假设架构相同。但 MIMIC-IV 的表结构完全不同(模块化 vs 扁平)、ICU 数据仅来源于 MetaVision(不含 CareVue)、itemid 部分变化。
->
-> 解决:永远不要假设 MIMIC-III 的 SQL 查询在 MIMIC-IV 上可直接运行。查阅官方文档确认每个 itemid。
-> ⚠️ 坑点 6:->89 岁年龄截断的影响被低估
->
-> 问题:所有 ->89 岁的患者年龄标记为 91 岁。如果你直接把 91 作为连续变量使用,所有超高龄患者的年龄信息完全丢失。
->
-> 解决:老年人队列研究中,考虑将年龄分段处理(如 60-69 / 70-79 / 80-89 / ≥90),或明确标注 91 岁为截断值。
-> ⚠️ 坑点 7:日期偏移导致外部数据无法整合
->
-> 问题:所有日期被随机偏移至 2100-2200 年,每位患者的偏移量不同。无法关联外部时间序列(如流感季节、政策变更时间)。
->
-> 解决:使用 anchor_year_group(2008-2010 / 2011-2013 / 2014-2016 / 2017-2019 / 2020-2022)作为时间段的代理变量。相对时间间隔在同一患者内保持不变。
-> ⚠️ 坑点 8:诊断编码的感度/特异度权衡
->
-> 问题:ICD 编码用于定义表型(如"脓毒症")时,不同研究使用的代码集差异巨大。使用窄代码集(高特异度、低感度)vs 宽代码集(高感度、低特异度)会得到完全不同的队列和结论。
->
-> 解决:明确报告使用的 ICD 代码列表。建议同时报告基于 ICD 代码和基于临床标准(如 Sepsis-3 = 疑似感染 + SOFA≥2)的结果。
-> ⚠️ 坑点 9:不合理的缺失值填充
->
-> 问题:用"0"填充缺失的乳酸值(实际上乳酸 = 0 是不可能的)或用均值填充缺失的肌钙蛋白(未检测 = 临床认为不需要检测 = 低风险 → 均值填充高估了风险)。
->
-> 解决:创建缺失指示器列;使用多重插补(MICE)或特定领域的方法(如 carry forward + 衰减)。
-> ⚠️ 坑点 10:忽略竞争风险
->
-> 问题:在研究"ICU 住院时长"时,将死亡患者直接排除或作为删失处理会导致有偏估计——因为死亡和出院是竞争事件。
->
-> 解决:使用竞争风险模型(Fine-Gray subdistribution hazard)或分别建模出院和死亡。
6.6 数据增强策略(data_augmentation)
EHR 时序数据的数据增强不同于计算机视觉。以下为 MIMIC-IV 适用的策略:
# 1. 时序抖动 (Time Jitter): 微调测量时间点,模拟真实世界的不规则采样
def time_jitter(times, values, jitter_std=0.1):
"""对时间戳加入小幅度高斯噪声(以小时为单位)"""
noisy_times = times + np.random.normal(0, jitter_std, len(times))
return np.sort(noisy_times), values # 保持时序顺序
# 2. 添加测量噪声 (Measurement Noise): 模拟床边监护仪的测量误差
def add_measurement_noise(values, noise_ratio=0.02):
"""加入相对标准差 2% 的高斯噪声"""
noise = np.random.normal(0, noise_ratio * np.abs(values))
return values + noise
# 3. Masking / Dropout: 随机掩码部分测量,模拟真实 EHR 的缺失
def random_mask(values, mask_prob=0.1):
"""随机掩码 10% 的测量值"""
mask = np.random.binomial(1, mask_prob, len(values))
return np.where(mask, np.nan, values)
# 4. 窗口裁剪 (Window Cropping): 随机选取子序列
def random_window_crop(times, values, min_length=6):
"""在完整序列中随机裁剪一段子序列(最少 6 个时间点)"""
if len(times) -<= min_length:
return times, values
start = np.random.randint(0, len(times) - min_length)
end = np.random.randint(start + min_length, len(times) + 1)
return times[start:end], values[start:end]
# 5. 混合同一患者的多次 ICU 停留(Patient-level Mixup)
# 注意:仅在患者内部做 mixup,不能跨患者混合
-> ⚠️ 注意事项:医学数据增强必须保证临床合理性。例如,不能将血压增强到 300/200 mmHg(这是不可能的)或将 SpO₂ 增强到 200%。所有增强后的值必须通过生理范围验证。
6.7 模型建议(model_suggestion)
基于社区数百篇论文的经验总结:
| 任务类型 | 推荐模型 | 理由 |
|---|---|---|
| Baseline #1 | Logistic Regression | 永远的第一个模型。可解释性最强 |
| Baseline #2 | XGBoost / LightGBM | 在表格数据上通常超越深度模型,训练快 |
| 时序 Baseline | LSTM (1-2 layers) | 经典时序模型,MIMIC-III Benchmark 的标准 |
| 时序进阶 | GRU-D (带衰减的 GRU) | 显式处理不规则采样和缺失值 |
| 时序 SOTA | Transformer / Informer | 长序列建模,需更多数据 |
| 多模态融合 | 双塔 + Cross-attention | EHR + CXR,如 MedMod 架构 |
| 因果推断 | TARNet / Dragonnet / CFR | 反事实预测,处理 treatment selection bias |
| 基础模型 | MOTOR (预训练) + 微调 | 当前 MIMIC-IV 上最佳性能 (AUROC 0.937) |
推荐超参数起点:
| 超参 | 推荐值 | 理由 |
|---|---|---|
| Learning Rate | 1e-3 (深度) / 0.05 (树模型) | 社区共识 |
| Batch Size | 128 | GPU 内存 / 收敛速度平衡 |
| Dropout | 0.3 | 医疗数据信噪比低,较高 dropout 防过拟合 |
| Class Weight | balanced 或 scale_pos_weight | 死亡率 ~10%,高度不平衡 |
| Imputation | Forward fill + decay | GRU-D 或简单的 forward imputation |
| Epochs | 50-100 (早停 patience=10) | 小模型容易过拟合 |
6.8 计算资源建议(computing_requirements)
| 场景 | CPU/RAM | GPU | 磁盘 | 训练时间 |
|---|---|---|---|---|
| SQL 数据提取 | 4 核 / 16 GB | 不需要 | — | 10-60 分钟 |
| 表格模型 (XGBoost) | 8 核 / 32 GB | 不需要 | 150 GB | 5-30 分钟 |
| LSTM 时序模型 | 8 核 / 32 GB | 8 GB VRAM | 150 GB | 1-4 小时 |
| Transformer 时序 | 8 核 / 64 GB | 24 GB VRAM | 150 GB | 4-12 小时 |
| 基础模型预训练 (MOTOR) | 16 核 / 128 GB | 40 GB (A100) | 200 GB | 1 天 |
| EHR + CXR 多模态 | 16 核 / 128 GB | 40 GB (A100) | 700 GB | 1-3 天 |
-> 💡 推荐配置:研究生起步 → Google Colab Pro + BigQuery(云端,约 $10/月付费查询)。进阶 → 自己的 24 GB GPU 工作站 + BigQuery。全量多模态 → 申请学校/公司的 A100 集群。
6.9 评估指标(evaluation_metrics)
from sklearn.metrics import (roc_auc_score, average_precision_score,
brier_score_loss, confusion_matrix,
classification_report)
import numpy as np
def evaluate_mimic_model(y_true, y_pred_prob, y_pred_binary=None):
"""
MIMIC 死亡预测的标准评估函数。
y_true: 真实标签 (0/1)
y_pred_prob: 模型预测概率
y_pred_binary: 阈值化后的预测 (可选,默认按 0.5)
"""
if y_pred_binary is None:
y_pred_binary = (y_pred_prob ->= 0.5).astype(int)
results = {}
# 1. 区分度 (Discrimination)
results[AUROC] = roc_auc_score(y_true, y_pred_prob)
results[AUPRC] = average_precision_score(y_true, y_pred_prob) # 不平衡数据更重要!
# 2. 校准度 (Calibration)
results[Brier] = brier_score_loss(y_true, y_pred_prob)
# 3. 阈值指标
tn, fp, fn, tp = confusion_matrix(y_true, y_pred_binary).ravel()
results[Sensitivity] = tp / (tp + fn) # 召回率 / TPR
results[Specificity] = tn / (tn + fp)
results[PPV] = tp / (tp + fp) # 精确度
results[NPV] = tn / (tn + fn)
results[F1] = 2 * tp / (2 * tp + fp + fn)
# 4. 净重新分类改善 (NRI) — 如果对比基线模型
# from nri import calculate_nri
# results[NRI] = calculate_nri(y_true, baseline_prob, y_pred_prob)
return results
# ====== 社区标准 ======
# 死亡预测的"及格线": AUROC ≥ 0.80 (至少超过 SAPS II 的 AUROC ~0.78)
# 死亡预测的"发表线": AUROC ≥ 0.85 + 外部验证或严格交叉验证
# 死亡预测的"SOTA 线": AUROC ≥ 0.90 + 公平性分析 + SHAP 解释
6.10 MLOps 笔记(mlops_notes)
数据版本管理:
- MIMIC-IV 版本号 (v3.1) 必须记录在论文和代码仓库中
- 推荐用 DVC 或 Git LFS 管理队列定义 SQL 和提取的 CSV
- 记录使用的 mimic-code 版本(git commit hash)
实验追踪:
- 使用 Weights & Biases (wandb) 或 MLflow
- 关键追踪指标: 队列定义参数、特征列表、itemid 集合、数据版本、随机种子
模型注册:
- 将训练好的模型和预处理 pipeline 打包并注册
- 保存 scaler/encoder 参数用于推理
可复现性清单:
✅ MIMIC 版本号 (v3.1)
✅ mimic-code commit hash
✅ 队列定义 SQL(完整)
✅ 使用的 feature itemid 列表
✅ random seed
✅ train/val/test patient list(发布到 GitHub)
✅ 环境文件 (requirements.txt / conda env yml)
§7 质量评估与局限性(Quality & Limitations)
7.1 已知偏倚(known_biases)
| 偏倚类型 | 严重程度 | 详细描述 | 缓解措施 |
|---|---|---|---|
| 单中心选择偏倚 | 🔴 高 | BIDMC 是位于富裕城市(波士顿)的学术医疗中心。患者群体不代表社区医院、农村医院或非美国人群 | 使用 eICU-CRD(多中心,208家医院)做外部验证 |
| 种族/族裔偏倚 | 🟠 中-高 | 白人约 65-70%,非裔约 10%。少数族裔的代表性严重不足,且"未知/其他"类别约占 15% | 亚组分析;公平性审计(§7.5);不要对"unknown"做 naive imputation |
| 保险类型偏倚 | 🟠 中 | Medicare(65+ 或残疾)人群占比高。商业保险、无保险人群的代表性不足。保险类型影响医疗资源可及性 | 分层分析;保险类型作为协变量 |
| 老龄化偏倚 | 🟠 中 | ->89 岁年龄截断。超高龄是最重要的 ICU 年龄组(增长最快),但他们在数据中的年龄信息被压缩 | 明确标注"≥90"年龄组;避免将 91 岁视为连续变量 |
| 编码偏倚 | 🟡 中 | ICD 编码受医保报销政策影响。某些诊断可能被 over-code(以增加 reimbursement)或 under-code(以避免质控处罚) | 用临床标准(而非仅 ICD 编码)定义表型 |
| 存活者偏倚 | 🟡 中 | 只有活到入 ICU 的患者才被记录。院前死亡和快速恶化的患者在数据中不可见 | 在讨论中明确存活者偏倚的潜在影响 |
| 时期偏倚 | 🟡 中 | 2008-2022 年间治疗方案发生了显著变化(如脓毒症 bundle 指南、COVID-19 大流行导致的实践变化) | 按时间段分层分析;使用 anchor_year_group |
| 标注/验证偏倚 | 🟡 低-中 | 生命体征由护士手动验证(验证行为本身可能受患者病情影响)。危重患者验证更频繁 → 数据质量更高 | 使用 charttime 而非 storetime;记录验证时间差 |
7.2 标注质量评估(label_quality)
死亡率标签(最重要):
| 指标 | 数值 | 说明 |
|---|---|---|
| 院内死亡准确度 | ->99% | EHR 记录的出院状态几乎完美 |
| 院外死亡完整性 | 85-95% | SSA Death Master File 在 2011 年后有约 5-15% 的受保护记录被移除 |
| 1 年随访截断 | — | 出院后 ->1 年的死亡不记录。需要更长期随访的研究需注意 administrative censoring |
诊断编码质量(参考社区研究):
| 诊断 | ICD 编码准确率 | 参考来源 |
|---|---|---|
| 急性心肌梗死 | ~85-95% | 高感度的诊断,编码质量较好 |
| 脓毒症 | ~60-80%(取决于具体代码) | 存在 under/over coding |
| 急性肾损伤 | ~50-70% | 临床上常被漏报 |
| 谵妄 | ~30-50% | ICU 谵妄的编码率严重偏低 |
-> 最佳实践:不要仅依赖 ICD 编码定义表型。结合实验室值(如肌酐变化定义 AKI)、生命体征(如 SOFA 变化定义脓毒症)和文本 NLP 提取(如从放射报告提取阳性发现),构建复合表型定义。这被称为"computable phenotype"或"electronic phenotype"。
7.3 泛化性讨论(generalizability)
MIMIC-IV 训练的模型在以下条件下可能失效:
-
不同国家/医疗体系:BIDMC 的实践模式(如抗生素选择、液体复苏策略、机械通气设定)可能不同于其他国家的 ICU。模型预测的"最优"治疗可能只适用于类似的学术 ICU 环境。
-
社区医院:BIDMC 是三级转诊中心,疑难危重患者比例远高于社区医院。在 BIDMC 训练的死亡预测模型在社区医院可能高估死亡风险(因为 community hospital 的 case mix 更轻)。
-
儿科/NICU:MIMIC-IV 不包含 NICU 和 PICU 的完整数据。儿科模型必须使用专门的数据集。
-
COVID-19 时期:2020-2022 年的数据包含大流行期间特有的病例组合变化。在此期间训练的模型可能学到 COVID-19 特定的模式,不一定适用于后疫情时代。
-
不同设备和系统:转移到使用不同监护系统(如 Philips vs iMDSoft)的医院时,itemid 映射关系断裂,数据质量特征(如采样频率、缺失模式)不同。
-
时间迁移:2008 年训练的模型应用于 2025 年的患者,预测性能可能随实践标准变化而衰减(data drift + concept drift)。
-> 一篇 2025 年的研究(Chen et al.)验证了 MIMIC-IV 训练的 XGBoost SA-AKI 死亡预测模型在 eICU-CRD 上的外部 AUROC 约为 0.85(内部 0.878),降幅约 3%。这是一个合理的泛化性能降幅参考值。
7.4 伦理考量(ethical_considerations)
| 方面 | 措施 | 局限 |
|---|---|---|
| 去标识化 | HIPAA Safe Harbor 方法;所有日期随机偏移;->89 岁年龄截断;自由文本去标识化(Neamatullah et al., 2008 + 改进的 BERT 方法) | 去标识化文本可能残留识别信息;日期偏移破坏了某些时序分析的可能性 |
| 知情同意 | IRB 豁免(MIT 和 BIDMC 批准),因为项目不影响临床护理且所有 PHI 已去标识化 | 患者不知道自己数据被用于研究——社区对此有不同意见 |
| 数据使用协议 | PhysioNet DUA 1.5.0:禁止重新识别患者、禁止商业用途、禁止不当传播 | DUA 的法律约束力在不同司法管辖区可能不同 |
| CITI 培训 | 所有用户必须完成人体受试者研究伦理培训 | 培训仅覆盖基础知识,不涉及具体的 MIMIC 伦理场景 |
| 公平性风险 | 模型可能在不同种族/保险类型亚群中表现不均(已有多项研究证实) | 详见 §7.5 |
7.5 公平性评估(fairness_assessment)
基于 Meng et al. (2022, Scientific Reports) 和 Kakadiaris (2024, arXiv) 的系统性公平性审计:
| 敏感属性 | 发现 | 严重程度 |
|---|---|---|
| 种族 | 死亡预测模型在不同种族组间的 AUROC 差异显著。非裔患者组的模型表现通常较低 | 🔴 高 |
| 保险类型 | Medicaid 和无保险患者的 LOS 预测偏差显著大于 Medicare 和 Private 患者 | 🟠 中-高 |
| 性别 | 女性患者的某些模型 AUROC 略低于男性(差异约 1-3%) | 🟡 低-中 |
| 年龄 | 年轻 (-<40) 和超高龄 (≥90) 患者的预测不确定性最大 | 🟡 中 |
-> 重要发现:Meng et al. (2022) 进一步发现,高死亡率的亚群(如非裔)往往也是模型表现最差的亚群——这构成了"双重劣势":他们既面临更高的临床风险,又无法从精确的 AI 预测中受益。
推荐的公平性评估流程:
# 使用 Fairlearn 进行公平性审计
from fairlearn.metrics import (
MetricFrame, selection_rate, false_positive_rate,
false_negative_rate, equalized_odds_difference
)
sensitive_features = df_test[ethnicity]
metrics = {
AUROC: lambda y_true, y_pred: roc_auc_score(y_true, y_pred),
FPR: false_positive_rate,
FNR: false_negative_rate,
}
mf = MetricFrame(
metrics=metrics,
y_true=y_test, y_pred=y_pred_prob,
sensitive_features=sensitive_features
)
print("Fairness Report:")
print(mf.by_group)
print(f"Equalized Odds Difference: {equalized_odds_difference(y_test, y_pred, sensitive_features):.4f}")
7.6 数据漂移提示(data_drift_notes)
| 潜在漂移源 | 影响 | 监控方法 |
|---|---|---|
| COVID-19 (2020-2022) | 病例组合、死亡率基线、机械通气时长显著变化 | 按 anchor_year_group 分层检查 |
| ICD-10 切换 (2015) | 美国从 ICD-9 切换至 ICD-10,诊断编码体系全面变更 | 使用统一映射工具(如 CCS 分类) |
| 脓毒症定义变更 (2016) | Sepsis-3 取代 Sepsis-2 定义,改变脓毒症队列的构成 | 明确标注使用的脓毒症定义版本 |
| 治疗方案演进 | 抗生素管理、液体复苏策略、ECMO 使用率随时间变化 | 按时间段分层分析治疗效果 |
§8 基准性能与生态(Benchmarks & Ecosystem)
8.1 基准排行榜(leaderboard)— 住院死亡预测
| 排名 | 模型 | AUROC | 年份 | 论文 | 特点 |
|---|---|---|---|---|---|
| 🥇 | MOTOR (Foundation Model + 微调) | 0.937 | 2025 | som-shahlab, GitHub | 自监督预训练 + 线性头,当前 SOTA |
| 🥈 | Transformer + Multi-Channel Attention | ~0.92 | 2024 | Zavidnyi, GitHub | 多通道时序注意力 |
| 🥉 | XGBoost (CatBoost) | 0.904 | 2025 | Si et al., medrxiv | 心脏骤停后 ICU 患者,CatBoost |
| 4 | XGBoost + SMOTE | 0.903 | 2025 | Abdollahi et al., PLoS ONE | 卒中患者,30 特征 |
| 5 | XGBoost | 0.878 | 2025 | Chen et al., arXiv | SA-AKI 患者,外部验证于 eICU |
| 6 | XGBoost | 0.83-0.87 | 2021 | Nowroozilarki et al. | 表格数据最强 baseline |
| 7 | LSTM | 0.85-0.86 | 2019 | Harutyunyan et al. (MIMIC-III Benchmark) | 经典深度时序 baseline |
| 8 | LightGBM | 0.88 | 2025 | som-shahlab | 表格特征 + 梯度提升 |
| 9 | Logistic Regression | 0.833 | 2025 | som-shahlab | 最简单的 baseline |
| 10 | SAPS II (临床评分) | 0.78-0.80 | — | 传统临床评分 | 临床金标准参考 |
-> ⚠️ 重要声明:上述 AUROC 数值来自不同论文、不同队列定义、不同数据版本和不同训练/测试划分。绝对数值不可直接比较(除非在同一篇论文中使用完全相同的队列和划分进行对比)。这个榜单的目的是展示技术趋势,而非做 head-to-head 排名。
8.2 SOTA 总结与选型建议(sota_summary)
一句话总结:在表格特征上,XGBoost/LightGBM ≈ LSTM -> Logistic Regression;加入时序建模的 Transformer 可进一步提升 2-5%;MOTOR 基础模型微调达到当前最佳 0.937,但需要 40GB+ GPU 和 1 天预训练成本。
选型建议:
| 如果你…… | 建议模型 | 预期 AUROC |
|---|---|---|
| 刚开始做 MIMIC,需要一个快速 baseline | Logistic Regression | 0.80-0.83 |
| 需要发表论文的强 baseline,有中等 GPU | XGBoost | 0.85-0.90 |
| 做时序建模研究,有 GPU | GRU-D / Transformer | 0.87-0.92 |
| 追求 SOTA,有 A100 和 1 周时间 | MOTOR 微调 | 0.92-0.94 |
| 做多模态(EHR + CXR),有 A100 | MedMod | 比 EHR-only 高 2-3% |
8.3 官方评测协议(evaluation_protocol)
MIMIC 没有官方的评测协议,但社区已形成以下共识:
- 主要指标:AUROC(区分度)、AUPRC(不平衡数据下的区分度)、Brier Score(校准度)
- 次要指标:Sensitivity / Specificity / PPV / NPV / F1(在特定阈值下)
- 校准:必须报告校准曲线或可靠性曲线(Calibration Curve)。一个 AUROC=0.95 但完全失校准的模型在临床上毫无用处
- 分层报告:按年龄组、性别、种族分别报告 AUROC,而非仅报告总体
- 不确定性:报告 95% 置信区间(通过 1,000 次 Bootstrap 重采样获得)
8.4 相关数据集(related_datasets)
| 数据集 | 关系 | 简述 |
|---|---|---|
| MIMIC-III | 前代 | v1.4(含 CareVue 系统数据)。MIMIC-III 的许多 benchmark 定义(如 Harutyunyan 2019)仍被广泛引用,但新项目不建议使用 |
| MIMIC-CXR | 衍生(影像) | 胸部 X 光 + 放射报告,与 MIMIC-IV 通过 subject_id 关联。CheXpert 自动标注器提供 14 类标签 |
| MIMIC-IV-ECG | 衍生(波形) | 12 导联心电图波形,~800k 条,500 Hz,约 90 GB。通过 subject_id 关联 |
| MIMIC-IV-Note | 衍生(文本) | 去标识化临床笔记(出院小结 + 放射学报告)。NLP 研究的标准语料 |
| MIMIC-IV-ED | 衍生(急诊) | 独立的急诊数据集,与 MIMIC-IV 共享 subject_id |
| eICU-CRD | 互补(多中心) | 208 家美国医院(2014-2015),多中心验证首选 |
| AmsterdamUMCdb | 互补(欧洲) | 阿姆斯特丹大学医学中心,23k 患者,含波形 |
| HiRID | 互补(高频) | 瑞士伯尔尼大学医院,2 分钟间隔高频数据 |
8.5 关键论文(key_papers)
| # | 标题 | 年份 | 期刊 | 贡献 |
|---|---|---|---|---|
| 1 | MIMIC-IV, a freely accessible electronic health record dataset | 2023 | Scientific Data | 数据集主论文,完整介绍 MIMIC-IV 的设计、架构和去标识化方法。必引 |
| 2 | MIMIC-III, a freely accessible critical care database | 2016 | Scientific Data | MIMIC-III 主论文。虽已渐被 IV 取代,但奠定了整个 MIMIC 生态 |
| 3 | An Extensive Data Processing Pipeline for MIMIC-IV | 2022 | PMLR | Gupta et al. 提供标准化预处理 pipeline(MIMIC-Extract),覆盖 4 大预测任务 |
| 4 | Interpretability and fairness evaluation of deep learning models on MIMIC-IV dataset | 2022 | Scientific Reports | Meng et al. 系统性审计 MIMIC-IV DL 模型的可解释性和公平性。公平性研究的必引文献 |
| 5 | Multitask learning and benchmarking with clinical time series data | 2019 | Scientific Data | Harutyunyan et al. 定义了 MIMIC-III 上 4 个标准 benchmark(死亡预测、LOS、表型、失代偿)。尽管是 III,其任务定义仍是社区标准 |
| 6 | Leveraging MIMIC Datasets for Better Digital Health: A Review | 2025 | arXiv | Khaled et al. 系统性综述 MIMIC 数据集的开放问题、进展和未来方向 |
| 7 | Copycats: the many lives of a publicly available medical dataset | 2024 | arXiv (NeurIPS Datasets) | 审查 MIMIC 衍生数据集的文档质量和标注完整性——发现社区普遍存在文档不足问题 |
| 8 | EHRSQL: A Practical Text-to-SQL Benchmark for Electronic Health Records | 2022 | NeurIPS | Lee et al. 在 MIMIC-IV 上定义了 Text-to-SQL 基准,2024 年更新至 MIMIC-IV 测试集 |
| 9 | MIMIC-Sepsis: A Curated Benchmark for Modeling Sepsis Trajectories | 2025 | IEEE BHI | Huang et al. 基于 Sepsis-3 标准构建脓毒症专用 benchmark |
| 10 | MedMod: Multimodal In-Hospital Mortality Prediction | 2025 | GitHub | EHR + CXR 多模态融合,证明影像可提升死亡预测 2-3% AUROC |
8.6 社区活跃度(community_activity)
| 指标 | 数值 |
|---|---|
| MIMIC-IV PhysioNet 浏览量 | 51,240+ 次(所有版本累计) |
| mimic-code GitHub Stars | 2,500+ |
| MIMIC 相关论文(Google Scholar) | 50,000+ 次累计引用 |
| 基于 MIMIC-IV 的衍生数据集 (PhysioNet) | 50+ 个(如 MIMIC-IV-Ext-PE, MIMIC-IV-Ext-22MCTS, MIMIC-CVM 等) |
| 与 MIMIC 相关的 GitHub 仓库 | 数千个 |
| BigQuery 社区 (lcp-consortium) | 活跃的数据查询和分享社区 |
| 学术讨论论坛 | PhysioNet 论坛 + MIT LCP Slack 社区 |
§9 相关资源与引用(Resources & Citation)
9.1 官方资源(official_resources)
- PhysioNet 主页:https://physionet.org/content/mimiciv/
- BigQuery 访问:https://mimic.mit.edu/docs/gettingstarted/cloud/
- 官方文档:https://mimic.mit.edu/docs/IV/
- mimic-code 仓库:https://github.com/MIT-LCP/mimic-code(SQL 提取 + 概念定义)
- MIMIC 官方网站:https://mimic.mit.edu/
- PhysioNet 通用页面:https://physionet.org/
- MIMIC-IV v3.1 直接下载:https://physionet.org/content/mimiciv/3.1/
- CITI 培训入口:https://about.citiprogram.org/
9.2 教程与社区资源(tutorials)
- MIMIC-Extract:https://github.com/healthylaife/MIMIC-IV-Data-Pipeline(标准化预处理 pipeline,Gupta et al. 2022)
- FEMR (Foundation EHR Model Repository):https://github.com/som-shahlab/femr(基础模型开发框架)
- MIMIC-Sepsis Benchmark:https://github.com/yongh7/MIMIC-sepsis(脓毒症专用 benchmark)
- MedMod 多模态:https://github.com/rohansuri17/MedMod(EHR + CXR 多模态融合)
- EHRSQL Benchmark:https://github.com/glee4810/ehrsql-2024(Text-to-SQL 基准)
- MIMIC-CVM 心血管多模态:https://github.com/whucsu/MIMIC-CVM(心血管多模态整合数据集)
- WFDB Python:https://github.com/MIT-LCP/wfdb-python(ECG 波形读取)
- 零基础 MIMIC 教程(中文):https://www.mediecogroup.com/group/posts/gp_So1H3E7O/
9.3 社区交流(community_links)
- PhysioNet 论坛 MIMIC 板块:https://physionet.org/about/
- MIT LCP GitHub Organization:https://github.com/MIT-LCP
- Google BigQuery lcp-consortium:在 BigQuery 内搜索
physionet-data
9.4 BibTeX 引用(bibtex)
@article{PhysioNet-mimiciv-3.1,
author = {Johnson, Alistair and Bulgarelli, Lucas and Pollard, Tom
and Gow, Brian and Moody, Benjamin and Horng, Steven
and Celi, Leo Anthony and Mark, Roger},
title = {{MIMIC-IV}},
journal = {{PhysioNet}},
year = {2024},
month = oct,
note = {Version 3.1},
doi = {10.13026/kpb9-mt58},
url = {https://doi.org/10.13026/kpb9-mt58}
}
@article{johnson2023mimic,
author = {Johnson, Alistair E. W. and Bulgarelli, Lucas
and Shen, Lu and Gayles, Alvin and Shammout, Ayad
and Horng, Steven and Pollard, Tom J. and Hao, Sicheng
and Moody, Benjamin and Gow, Brian and Lehman, Li-wei H.
and Celi, Leo A. and Mark, Roger G.},
title = {{MIMIC-IV}, a freely accessible electronic health record dataset},
journal = {Scientific Data},
volume = {10},
number = {1},
pages = {1},
year = {2023},
doi = {10.1038/s41597-022-01899-x}
}
@article{goldberger2000physiobank,
author = {Goldberger, Ary L. and Amaral, Luis A. N. and Glass, Leon
and Hausdorff, Jeffrey M. and Ivanov, Plamen Ch.
and Mark, Roger G. and Mietus, Joseph E. and Moody, George B.
and Peng, Chung-Kang and Stanley, H. Eugene},
title = {{PhysioBank}, {PhysioToolkit}, and {PhysioNet}:
Components of a New Research Resource for Complex Physiologic Signals},
journal = {Circulation},
volume = {101},
number = {23},
pages = {e215--e220},
year = {2000}
}
9.5 引用指南(citation_guide)
- 引用时机:任何使用 MIMIC-IV 数据的研究都必须引用上述 3 篇论文
- 引用哪个版本? 除数据集版本号引用(v3.1 DOI: 10.13026/kpb9-mt58)外,还必须引用 Scientific Data 方法论文(Johnson et al., 2023)和 PhysioNet 标准引用(Goldberger et al., 2000)
- 推荐人引用:MIMIC 申请中的推荐人不需要引用 MIMIC 本身,但需要有其已发表论文的 URL
- 衍生数据集引用:如果使用 MIMIC-IV-Ext-* 等衍生数据集,需要引用衍生数据集的创建论文和原始 MIMIC 论文
9.6 本页更新日志(changelog)
| 日期 | 变更 |
|---|---|
| 2026-07-17 | 初始版本。基于 MIMIC-IV v3.1 (2024-10)。完整覆盖 Schema v1.0 全部 Tier 1-3 字段 |
9.7 页面贡献者(contributors)
- 内容编写:千方病案医数集 AI 团队
- 医学审核:待审核(标注中)
- 页面 Schema:千方 Wikipedia Schema v1.0
9.8 最后审核日期(last_reviewed)
2026-07-17 — 待正式医学审核
结构化数据(JSON-LD / Schema.org)
{
"@context": "https://schema.org/",
"": "Dataset",
"name": "MIMIC-IV Clinical Database",
"description": "MIMIC-IV 是全球规模最大、使用最广泛的重症监护公开数据库,包含 364,627 名患者、546,028 次住院的脱敏电子健康记录(2008-2022),覆盖结构化时序数据、自由文本临床笔记、胸部 X 光影像和心电图波形。MIMIC-IV 是医疗 AI 研究的事实标准基础设施。",
"url": "https://www.qianfanghub.com/dataset/mimic-iv",
"identifier": "10.13026/kpb9-mt58",
"license": "PhysioNet Credentialed Health Data License 1.5.0",
"creator": {
"": "Organization",
"name": "MIT Laboratory for Computational Physiology & Beth Israel Deaconess Medical Center"
},
"dateCreated": "2020",
"dateModified": "2024-10-11",
"keywords": [
"ICU", "electronic health records", "critical care",
"重症监护", "电子健康记录", "死亡预测", "脓毒症",
"时序预测", "多模态", "生存分析", "mortality prediction",
"sepsis", "length of stay", "readmission"
],
"includedInDataCatalog": {
"": "DataCatalog",
"name": "千方病案医数集",
"url": "https://www.qianfanghub.com"
},
"measurementTechnique": "结构化电子健康记录(生命体征、实验室检查、药物、诊断编码)+ 自由文本临床笔记 + 胸部X光影像 + 12导联心电图波形",
"temporalCoverage": "2008/2022",
"spatialCoverage": "美国马萨诸塞州波士顿 Beth Israel Deaconess Medical Center",
"isAccessibleForFree": true,
"distribution": {
"": "DataDownload",
"contentUrl": "https://physionet.org/content/mimiciv/3.1/",
"encodingFormat": "CSV / PostgreSQL / BigQuery / DICOM / WFDB",
"contentSize": "~7 GB (CSV zip) / ~450 GB (含 CXR 影像)"
}
}
本页面为千方病案医数集「AI Ready 医疗数据集 Wikipedia」的标杆级数据集条目。它展示了完整 Schema v1.0 在 Tier 3 壁垒层的实现形态——覆盖 9 大模块、60+ 字段、可运行的代码示例、社区基准排行榜和最新的学术参考文献。这定义了千方与其他数据集目录(Kaggle / HuggingFace / Google Dataset Search)在内容深度上的本质差异。