信息速览
Symile-MIMIC 是 PhysioNet 于 2025 年 1 月发布的多模态临床数据集,由四位方法论文作者在 MIMIC 体系之上构造,数据分别来自重症监护病历、胸片与心电图三个母库。它从 MIMIC-IV、MIMIC-CXR-JPG 与 MIMIC-IV-ECG 三个母库中筛出 11,622 次住院、9,573 名患者,每次住院只保留一张胸片、一段 12 导联心电图和一组血液化验。它的直接用途是评测作者同期提出的对比学习目标 Symile,版本号为 1.0.0,DOI 为 10.13026/3vvj-s428,面向凭证化用户开放。
它要补的缺口是「模态数超过两个」时的表示学习。以 CLIP 为代表的方法一次只处理一对模态,三个模态就得拆成三对分别对比,模态之间的联合信息在拆对过程中被丢掉。Symile-MIMIC 把胸片、心电图、化验放在同一次住院的同一时间轴上,让三路信号可以一起参与对比,并且保留了「哪些模态缺失」这一现实条件,使任何模态组合都能被评测。
上手前先确认三件事:自己是否具备 PhysioNet 凭证化访问资格;要做的任务是不是跨模态检索或多模态表征,而不是诊断分类;以及能否接受样本只覆盖三模态齐全的住院。第一件事决定能不能拿到数据,第二、三件决定拿到之后能做什么,本页的分节按这个顺序展开。
§1 它是什么
1.1 一句话定义与名称来源
Symile-MIMIC 是一个多模态配对小集,而不是一份病历。它的正式全名是 Symile-MIMIC: a multimodal clinical dataset of chest X-rays, electrocardiograms, and blood labs from MIMIC-IV,直译即「面向 Symile 的、由胸片、心电图与血液化验构成的 MIMIC-IV 多模态临床数据集」。
名称里的三个成分各自承载一层信息:
- Symile 是方法名,指作者在 NeurIPS 2024 论文《Contrasting with Symile: Simple Model-Agnostic Representation Learning for Unlimited Modalities》中提出的对比学习目标函数。它不是数据集缩写,也不是影像模态、机构或设备的缩写。把 Symile 读成某个词的缩写,是使用这份数据时最常见的第一类误读。
- MIMIC 是母库名,指 MIT 计算生理学实验室维护的重症监护医疗数据库体系,本数据集的数据全部来自其中三个成员。
- 连字符表示「以该方法命名、为其评测而建」,与论文里另一个数据集 Symile-M3(3,300 万条图像、文本、音频样本的多语言集合)采用同一命名法。
作者为 Adriel Saporta、Aahlad Manas Puli、Mark Goldstein 与 Rajesh Ranganath 四人,论文与数据集作者完全一致,代码仓库位于 rajesh-lab/symile。官方页未披露作者机构,因此本页不列机构栏,只按发布平台 PhysioNet 交代归属。
1.2 三个母库分别贡献什么
Symile-MIMIC 不采集任何新数据,它的每一条记录都能在母库里找到原件。三个母库的分工如下。
| 模态 | 母库 | 具体模块 | 贡献内容 |
|---|---|---|---|
| 住院与化验 | MIMIC-IV v2.2 | hosp 模块的 admissions 表与 labevents 表 | 住院标识、入出院时间、患者标识、血检结果 |
| 胸片 | MIMIC-CXR-JPG v2.0.0 | 图像与元数据 | 入院后 24-72 小时的 PA/AP 位胸片 |
| 心电图 | MIMIC-IV-ECG v1.0 | 诊断级心电匹配子集 | 入院 24 小时内的 12 导联心电记录 |
三个母库本来就有共同的 subject_id 与 hadm_id,对齐在标识层面是现成的;真正的工作量在时间窗筛选上——同一次住院往往有多张胸片、多段心电图、上百条化验,必须按时间规则各挑一条。官方页对此的原话是:每次住院选取「最早可得的胸片、心电图与化验结果」。这里的「最早」要结合时间窗理解:心电图与化验取入院 24 小时内的记录,胸片取入院后 24-72 小时内最早的那张。
1.3 它相对母库 MIMIC-IV 的增量
MIMIC-IV 是面向全院的病历数据库,它的价值在于「全」——几乎所有检查、几乎所有住院都在里面;Symile-MIMIC 的价值恰恰相反,在于「窄而齐」:只保留三模态同时具备的住院,并且把这三模态压成可直接喂给网络的等长张量。
增量可以拆成四项。
- 三模态时间对齐。母库里胸片、心电图、化验分属不同模块,时间戳粒度不同,要自己写 SQL 关联并按窗筛选。本数据集把这一步做完了,且把胸片刻意推到入院后 24-72 小时,人为制造了「化验在心电与影像之前」的临床时序。
- 固定形状的张量。胸片统一为 3×320×320,心电图统一为 1×5000×12,化验统一为 50 维百分位加 50 维缺失指示。母库里的胸片分辨率各异、心电采样长度不一、化验是按 itemid 稀疏存放的事件表,不做这套规整就无法直接拼 batch。
- 检索评测协议。
val_retrieval与test按「1 正 9 负」构造候选组,每个查询固定 10 条候选,使不同模型的检索结果可以直接比较。母库没有任何现成的检索协议。 - 配套权重与重建代码。发布包内含用 Symile 目标训练的最佳检查点,以及从 MIMIC-IV 与 MIMIC-CXR 重建本数据集的代码,使结果可复现、流程可修改。
反过来,母库有而本数据集没有的东西同样明确:绝大部分住院、全部诊断编码、护理记录、用药、出入量、自由文本报告与随访结局。用量化的说法,MIMIC-IV 的住院记录在数十万次量级,本数据集取其中一万一千余次,占比在个位数百分比。任何「用 Symile-MIMIC 研究 ICU 人群流行病学」的想法都会因为这道筛选而失效。
1.4 版本与时间线
| 时间 | 事件 |
|---|---|
| 2024 年 11 月 1 日 | 方法论文 arXiv:2411.01053 v1 提交 |
| 2024 年 12 月 | 论文于 NeurIPS 2024 发表 |
| 2025 年 1 月 28 日 | 数据集 v1.0.0 于 PhysioNet 发布,含数据、代码与检查点 |
v1.0.0 是当前唯一版本,发布说明只有一句「首次上传数据集、代码与模型检查点」。PhysioNet 页同时给出两个 DOI:版本级 DOI 为 10.13026/3vvj-s428,最新版 DOI 为 10.13026/762h-qf80。引用时应使用版本级 DOI,以便日后出现新版本时仍能指回这一版。
需要提醒的一处时间错位:论文的实验章节只交代了总住院数与按患者的 95%/5% 划分,没有逐 split 给出精确行数;PhysioNet 页给出的三个 split 行数是论文未载的细节。两者可以互相印证大方向,但无法逐行核对,因此不能假设论文数字与 v1.0.0 完全一一对应。
§2 数据构成
2.1 十问十答
Q1:Symile-MIMIC 与 MIMIC-IV 是同一个数据集吗?
不是。MIMIC-IV 是母库,收录数十万次住院的全院结构化记录;Symile-MIMIC 是从中筛出的三模态齐全子集,每次只保留一张胸片、一段心电图和一组血检,并附带检索评测划分。前者是病历数据库,后者是专门用于多模态表示学习评测的配对小集。两者可以互相追溯,但不能互相替代。
Q2:Symile 是数据集的缩写吗?
不是。Symile 是作者在 NeurIPS 2024 论文中提出的对比学习目标函数,可处理任意数量的模态,其理论出发点是对总相关信息(total correlation)的一个下界。数据集以方法名加 MIMIC 后缀命名,表示这是用来评测该方法的临床数据。把 Symile 拆成 S-Y-M-I-L-E 去猜全称,在官方页与论文中都找不到任何依据。
Q3:为什么胸片要取入院后 24 到 72 小时?
为了让影像在时间上晚于化验与心电图,构成一个可检验的预测任务:用入院早期的检查去检索随后拍摄的影像。若胸片与化验同时采集,检索任务会退化为同一次检查内部的配对,临床意义与难度都随之改变。这个时间窗也符合临床实际——入院当天先抽血与做心电图,胸部影像通常排在次日或第三日。
Q4:能直接下载吗?
不能。数据采用凭证化访问,须在 PhysioNet 完成实名认证、通过 CITI 的「Data or Specimens Only Research」培训并签署数据使用协议,经审核后才能下载。整个流程与下载 MIMIC-IV 本身完全一致,没有额外的申请环节。
Q5:血液化验的 100 维向量怎么读?
前 50 维是各化验值按训练集经验分布函数换算的百分位,后 50 维是对应化验是否缺失的二值指示。某化验缺失时,其百分位用该化验在训练集上的平均百分位填充,因此缺失与否只能从后 50 维读出,前 50 维在缺失位置上的数值由填充而来,并不代表患者真实水平。做特征工程时若忽略这一层,模型会把「未测」误当成「测得平均水平」。
Q6:检索任务里的十条候选是怎么来的?
每个查询本身是一条正例,再从同一划分的其余记录中随机抽取 9 条作为负例,凑成 10 条候选。评测时模型须在 10 条候选中选出与查询对应的那条胸片,随机基线为 0.1。由于负例从同分布的住院中随机抽取,候选中可能混入与查询同病种、同体位的病例,任务难度因此高于纯随机的视觉区分。
Q7:训练集、验证集、测试集之间会共享患者吗?
不会。官方页明确写明三个划分之间无患者重叠。划分以患者为单位而非以住院为单位,同一患者的所有住院只会落在一个划分里,避免同一患者的重复影像造成信息泄漏——这在 MIMIC 体系里是必须的,因为反复入院的患者可能留下高度相似的胸片。
Q8:论文报告的检索准确率是多少?
在测试集 10 候选检索上,Symile 目标的平均准确率为 0.435(标准误 0.007),成对 CLIP 基线为 0.387(标准误 0.003),原文称相对提升约 12.5%,随机基线为 0.1。指标为十次自助重采样的平均准确率,原文未使用 Recall@k 的术语。
Q9:能拿它做诊断分类吗?
不能直接做。数据集中没有任何诊断标签、放射报告文本或出院诊断编码,label 列只标示检索候选的正负,不是疾病标签。若要研究疾病,必须回到母库用 hadm_id 关联诊断表自行构建标签,并重新考虑划分是否会造成患者泄漏。
Q10:为什么文件里还有模型权重?
发布包附带了用 Symile 目标在训练集上训练的最佳检查点,目的是让研究者能直接复现论文的检索结果,或在同一权重上尝试新的下游任务。这在 PhysioNet 的临床数据发布里并不常见,多数数据集只发数据不发权重。使用该权重时须同时遵守数据使用协议,不得将其作为医疗器械或临床决策依据。
2.2 规模表
官方数据描述给出的规模如下,三个划分的行数之和与总住院数不完全一致,差异在 2.3 节单独讨论。
| 项目 | 住院数 | 患者数 | 文件 | 说明 |
|---|---|---|---|---|
| 全数据集 | 11,622 | 9,573 | symile_mimic_data.csv | 三个划分的合并视图 |
| 训练集 | 10,000 | 8,374 | train.csv | 用于训练编码器与 Symile 目标 |
| 验证集 | 750 | 738 | val.csv | 用于调参与早停 |
| 验证检索集 | — | — | val_retrieval.csv | 750 查询 × 10 候选 = 7,500 行 |
| 测试集 | 464 | 461 | test.csv | 464 查询 × 10 候选 = 4,640 行 |
患者数一栏三个划分相加恰与总数吻合;住院数一栏相加却比总数少 408。这一处自洽性差异是使用本数据集时最需要留意的地方,详见 2.3 节与 §4.2。
2.3 划分方式与检索集的构造
划分并非随机切行,而是先切患者、再取患者名下的住院。官方页的表述是三个集合之间没有患者重叠,论文的表述是「按患者把 95% 划为训练加验证的开发集,5% 划为测试集」。两种表述一致:95% 的患者进入开发集,开发集再细分为训练与验证;余下 5% 的患者构成测试集。按患者数核对,训练与验证两级之和占全部患者的 95.2%,测试集占 4.8%,与论文的 95/5 相符。
检索集不是独立的样本,而是对既有样本的重排。以验证检索集为例:把验证集里的每一条记录当作一次查询,再从验证集其余记录中抽 9 条负例,每条查询展开成 10 行,于是验证集的记录数被放大十倍。测试集的构造方式与之相同,测试集的记录数同样放大十倍。这意味着:
- 检索集的行数不能当作独立样本量使用,10 行背后只有 1 个真实病例;
- 负例是从同一划分内抽取的,因此验证检索集的负例不会泄漏到测试检索集;
- 由于每个查询的负例是随机抽的,不同复现实验若抽样种子不同,绝对准确率会有小幅波动,这也是论文用十次自助重采样报告标准误的原因之一。
论文对测试集的检索任务使用了「零样本」的说法——编码器只用训练集的配对关系训练,测试时不针对检索任务做任何微调。需要区分的是:val_retrieval 是验证期的同构造集合,用于观察训练过程中的检索表现,而非零样本评测本身;把两个检索集一并称为「零样本检索集」并不准确。
2.4 字段字典与可靠性
官方 CSV 的列在 PhysioNet 页上未逐列列出完整字典,以下依据官方页的数据描述、张量文件名与论文实验章节整理。可靠性一列的判断标准是:能在官方页找到直接文字依据的标为「官方明示」,由张量形状或文件命名推得的标为「依命名推定」,由 MIMIC 母库惯例推得的标为「依母库惯例推定」。
| 字段 | 类型 | 含义 | 可靠性 |
|---|---|---|---|
| subject_id | 整数 | 患者标识,跨住院稳定 | 依母库惯例推定(划分按患者进行,但官方未在列字典中点名该列) |
| hadm_id | 整数 | 住院标识,本数据集的主键 | 官方明示(label_hadm_id 的定义用到此列) |
| cxr | 数组 3×320×320 | 胸片张量,ImageNet 均值方差归一化 | 官方明示(张量形状与预处理均给出) |
| ecg | 数组 1×5000×12 | 心电图张量,归一化到 [-1,1] | 官方明示(形状给出,采样率未给) |
| labs_percentiles | 数组 50 | 化验值百分位 | 官方明示 |
| labs_missingness | 数组 50 | 化验缺失二值指示 | 官方明示 |
| label_hadm_id | 整数 | 该行所服务的查询住院号 | 官方明示 |
| label | 0/1 | 是否为该查询的正例 | 官方明示 |
ECG 张量的第二维为 5000、第三维为 12,分别对应采样点与导联数。官方页只给了形状,未给采样率;按 MIMIC-IV-ECG 的惯例为 500 Hz、10 秒记录,5000 点与此吻合。这一条在页脚列为待核,正文按「形状确定、采样率依母库惯例」处理。
2.5 血液化验的 50 项与编码
化验是三个模态里处理最重的一路。母库的 labevents 是按 itemid 存储的事件表,一次住院可能产生上千条记录;本数据集的做法是:先统计全部住院中哪些 itemid 出现频率最高,取前 50 项,再对每次住院在时间窗内取每项化验的代表值。
官方页给出的 50 项 itemid 覆盖六个大类:
| 类别 | 代表性项目(itemid) | 项数量级 |
|---|---|---|
| 血常规 | 白细胞 51301、血红蛋白 51222、红细胞压积 51221、血小板 51265 | 十余项 |
| 白细胞分类 | 中性粒 51256、淋巴 51244、单核 51254、嗜酸 51200、嗜碱 51146 及四项绝对值 | 近十项 |
| 电解质与血气 | 钠 50983、钾 50971、氯 50902、碳酸氢根 50882、pH 50820、pCO2 50818、pO2 50821 | 十余项 |
| 肾功能与代谢 | 肌酐 50912、尿素氮 51006、葡萄糖 50931 | 数项 |
| 肝功能 | ALT 50861、AST 50878、碱性磷酸酶 50863、总胆红素 50885、白蛋白 50862 | 数项 |
| 凝血与其他 | INR 51237、PT 51274、PTT 51275、乳酸 50813、肌酸激酶 50910 | 数项 |
编码方式分两步。第一步标准化:对每一项化验,用训练集上该化验的经验累积分布函数,把原始值映射为百分位,取值落在 0 到 1 之间。用训练集而非全集估计分布,是为了防止测试集信息泄漏到特征变换里——这一点在复现时容易被忽略,若改用全集重算百分位,测试集结果会略偏高。第二步补齐:把 100 维向量拆成前后两半,前 50 维放百分位,后 50 维放 0/1 缺失指示;若某化验未测,前 50 维对应位置填入该化验在训练集上的平均百分位,后 50 维对应位置置 1。
这样设计的后果是,前 50 维里「填充值」与「真实值接近平均水平」无法区分,必须结合后 50 维判读。反过来,这种编码对模型友好:缺失不再是空值,而是被显式编码为一维信号,网络可以学习「哪些缺失本身有信息」。
官方另提供一份 labs_means.json,记录每项化验的均值百分位,正是上述填充值的来源。若要复现,应使用该文件而不是自行重算,否则填充值会有细微差异。
2.6 影像与信号预处理
胸片。官方口径是:把短边缩放到 320 像素,再做方形裁剪——训练时随机裁剪,验证与测试时中心裁剪;随后用 ImageNet 的均值与标准差归一化;仅保留后前位(PA)与前前位(AP)两种体位。三点值得注意:
- 方形裁剪加上短边缩放,意味着长边可能被裁掉一部分,原始视野并非完整保留;
- 沿用 ImageNet 归一化参数而非胸片专用统计量,是为了配合从零训练以外的常规做法,但也意味着像素分布与自然图像不同,迁移学习时应留意;
- 侧位片被排除,因此数据集中不存在同一患者同一检查的正侧位配对。
心电图。剔除含缺失值或全零信号的记录,每条信号归一化到 [-1,1]。剔除全零信号是必要的——母库中确实存在设备脱落导致的空记录,若不剔除会成为纯噪声样本。
张量落盘。每个划分分别存为 cxr_<split>.npy、ecg_<split>.npy、labs_percentiles_<split>.npy、labs_missingness_<split>.npy,另附 hadm_id_<split>.npy、label_hadm_id_<split>.npy、label_<split>.npy 三个索引文件。检索集的行序与标签文件一一对应,加载时须保持行序一致,否则正负标签会错位。
2.7 发布包文件清单
| 文件 | 内容 | 用途 |
|---|---|---|
| symile_mimic_data.csv | 全数据集合并表 | 快速查看全部记录 |
| train.csv / val.csv / test.csv | 三个划分 | 训练与评测 |
| val_retrieval.csv | 验证检索集 | 训练中观察检索表现 |
| labs_means.json | 各项化验的均值百分位 | 缺失值填充与反标准化 |
| data_npy/ | 按划分切分的张量 | 直接加载训练 |
| symile_mimic_model.ckpt | 最佳检查点 | 复现论文结果 |
| code/ | 环境文件与重建脚本 | 从母库重建数据 |
code/ 目录含 README、conda 环境定义与依赖清单。重建脚本需要本地已有 MIMIC-IV 与 MIMIC-CXR 的凭证化副本,并不能凭空生成数据。
§3 怎么拿到
3.1 访问门槛
Symile-MIMIC 采用 PhysioNet 的凭证化访问(Credentialed Access),这是比开放访问更严的一档。要拿到文件,需依次满足三项条件:
- 实名认证。在 PhysioNet 注册账号并提交身份与机构证明,审核通过后账号才具备凭证化访问资格。
- 完成培训。通过 CITI 项目的「Data or Specimens Only Research」课程并上传结业证明。这是美国人体受试者保护体系下的标准要求,与数据本身的敏感程度无关。
- 签署数据使用协议。逐项阅读并签署 PhysioNet Credentialed Health Data Use Agreement 1.5.0,承诺不再识别、不转交第三方、按约定方式报告使用情况。
三项齐备后,在数据集页面点击同意即可下载。协议签署是账号级的,同一账号对 MIMIC-IV、MIMIC-CXR 等其他凭证化数据集也一并生效,无需重复签署。
3.2 许可条款的实际含义
数据采用 PhysioNet Credentialed Health Data License 1.5.0。它不是知识共享类许可,也不是软件许可,而是一份数据使用协议。对使用者有实际约束力的条款可以归纳为四条:
- 不得尝试再识别。数据虽已去标识化,但仍禁止用任何外部信息反推个体身份;
- 不得再分发。不能把文件转给同事、上传到公开网盘或仓库,合作者须各自申请;
- 不得用于广告、保险或雇主决策。这是协议对用途的明确限制;
- 衍生成果的表述义务。发表时须按约定引用数据集与母库,并在方法中说明使用的版本。
由于本数据集是 MIMIC 的派生,母库协议中的义务随数据继承——申请本数据集不会豁免对 MIMIC-IV 的任何义务,反之亦然。把数据与外部数据做链接时,也须遵守同样的限制。
3.3 与母库的获取关系
三个母库都在 PhysioNet 上,且都是凭证化访问。理论上,有资格的团队可以完全不走 Symile-MIMIC,自己在母库上重做筛选。两条路径的取舍很直接:
| 路径 | 优点 | 代价 |
|---|---|---|
| 直接用 Symile-MIMIC | 对齐、筛选、张量化、划分、检索协议全部现成,复现论文快 | 受限于作者定的时间窗与 50 项化验,改动空间小 |
| 自行从母库构建 | 时间窗、化验清单、影像体位、划分方式都可自定 | 需自行处理三库对齐、去重、泄漏控制,工作量以周计 |
发布包中的重建代码正是为第二条路径准备的:它把作者的筛选逻辑写成了可读代码,想改口径的团队可以在此基础上调整,而不必从零开始。这比只给数据不给代码的做法实用,但也意味着「用这份代码重建出的数据」与官方 v1.0.0 是否逐行一致,取决于母库版本是否相同——若母库已发布新版本,重建结果会有出入。
3.4 首次加载的最小步骤
拿到文件后,最小可执行流程如下(以 Python 为例,仅示意步骤,不依赖具体框架):
// 1. 读取张量与索引(保持行序一致)
cxr = np.load('data_npy/cxr_train.npy') # (n, 3, 320, 320) uint8
ecg = np.load('data_npy/ecg_train.npy') # (n, 1, 5000, 12) float32
labs_p = np.load('data_npy/labs_percentiles_train.npy') # (n, 50)
labs_m = np.load('data_npy/labs_missingness_train.npy') # (n, 50)
// 2. 化验拼成 100 维向量(顺序:先百分位,后缺失指示)
labs = np.concatenate([labs_p, labs_m], axis=1) # (n, 100)
// 3. 检索集读取(每个查询 10 行,行序即候选序)
ret = np.load('data_npy/label_hadm_id_test.npy') # (4640,)
lab = np.load('data_npy/label_test.npy') # (4640,)
// 4. 核对一致性:每个 label_hadm_id 下恰有一条 label==1
print(len(set(ret)), lab.sum())
第四步的核对是必须的:若某次读取后每个查询的正例数不是 1,说明行序或标签文件对不上,后续的准确率会全部失真。这类错误不会报错,只会让指标莫名其妙地接近随机水平。
3.5 合规使用的常见边界
- 展示图像。论文插图里出现单张胸片,在去标识化前提下一般可接受,但应避免拼出可识别个体的组合(如同时给出影像、罕见病史与精确日期)。
- 共享代码。代码可以公开,权重与数据不能。仓库里若需示例文件,应使用自行生成的随机张量而非真实样本。
- 商用。协议禁止将数据用于广告与保险决策,但基于数据训练的方法论研究本身不在此限;具体边界应逐案阅读协议原文,不依赖二手总结。
- 跨库链接。把本数据集与外部登记数据按时间与地理链接,可能构成再识别风险,属于协议明确禁止的行为。
§4 质量与已知问题
4.1 三个可核验的质量事实
筛选强度。入选条件写作「同时具备三个模态:胸片、心电图与至少一项化验值」。这一条件在母库里的通过率很低:MIMIC-IV 的住院中大量患者从未做过胸部影像,另有部分患者入院期间没有心电图。因此本数据集的住院数停留在万级,而母库在数十万级。这意味着样本经过了强筛选,人群构成与母库整体不同——能同时做胸片、心电与血检的住院,往往是急症入院或术前评估,门诊式短住院相对稀少。
时间窗的双向筛选。心电图与化验必须在入院 24 小时内,胸片必须在入院后 24-72 小时。两个窗口一个靠前一个靠后,等于同时排除了「太晚做检查」与「太早拍片」的住院。后者尤其值得注意:很多急症患者在入院当天就拍胸片以排除肺炎或肺水肿,这批住院因为胸片落在 24 小时内而不符合条件。留下来的样本因此偏向相对稳定、按计划安排影像的病例。
患者级划分。三个划分无患者重叠,这是质量上的正面项。若按行随机切分,同一患者多次入院的相似记录会同时出现在训练集与测试集,检索准确率会被人为抬高。官方选患者级切分,说明有意控制了这类泄漏。
4.2 内部数字的不一致
官方页在同一段描述里给出两组互相抵触的数字,规格表中的「全数据集」一行与「训练集 / 验证集 / 测试集」三行相加相差 408 次住院。患者数一栏则完全自洽,三个划分的患者数相加恰好等于总数。三种可能的解释都需要更多证据才能定论:
| 假设 | 支持 | 反对 |
|---|---|---|
| 训练集行数为取整值,实际比公布值多 408 | 训练集行数是整千数,在统计描述里偏巧合;患者数自洽说明并非总体统计错误 | 官方未在任何位置给出修正后的行数,属于推测 |
| 有 408 次住院因某种原因未进入任一划分(如无法归入 train/val/test 的边界病例) | 差值恰好落在住院维度而非患者维度 | 若如此,官方应说明被剔除原因,但未说明 |
| 全数据集 CSV 与划分 CSV 来自不同筛选批次 | 两者的生成代码可能不同 | 发布包同时提供两者,作者应已核对 |
无论哪种解释成立,使用时应以划分文件为准:三份划分 CSV 相加就是模型实际能看到的样本数。若在论文里直接引用全数据集的总数作为评测样本量,需要注明总数来源与划分之和的差异,否则审稿人核对时会对不上。
4.3 检索任务的难度设计
10 候选的设定是一个折中。真实临床检索场景里,候选池是全库的数千到数十万张胸片,10 候选远低于此;但若候选池设得太大,多数模型会逼近随机水平,无法区分方法优劣。10 候选的好处是随机基线固定在 0.1,头部方法可以达到 0.4 以上,指标有足够的区分度;代价是指标绝对值不能直接外推到临床部署场景。
另一个设计细节是负例的抽取方式:从同一划分的其余记录中随机抽 9 条,而不是按病种或影像相似度构造困难负例。这使任务偏向「粗粒度区分」——区分不同患者的不同检查,而非区分同病种的不同病例。若研究目标是评估模型对细微征象的判别力,需要自行构造困难负例集。
4.4 假设—支持—反对
| 假设 | 支持证据 | 反对证据 |
|---|---|---|
| 本数据集可用于评测任意多模态方法,而不只是 Symile | 数据本身是通用的三模态配对,任何对比学习目标都能在其上训练;检索协议对方法中立 | 划分、预处理、化验编码均按 Symile 论文的需要设计,其他方法若采用不同的缺失值处理,横向比较会失真 |
| 三模态齐全的筛选不会显著改变人群构成 | 三个模态都是常规检查,覆盖面广 | 胸片 24-72 小时窗口排除入院当天急查影像的病例,人群偏向择期与次急症 |
| 检索准确率可以作为影像与化验关联强度的度量 | 准确率高于随机说明跨模态信息确实存在 | 10 候选的任务太容易,准确率随负例构造方式变化大,不能作为关联强度的绝对标尺 |
| 发布包中的检查点可直接用于下游任务 | 检查点在训练集上训练,附完整代码 | 编码器全部从零训练、规模小,且仅在配对的检索任务上优化,迁移到诊断任务时表现未知 |
| 患者级划分足以杜绝泄漏 | 官方明示无患者重叠 | 同一患者的多次检查不会跨集,但同一时期、同一病区的相似病例仍可能同名分布,属于软泄漏 |
4.5 缺失模态的处理
数据设计上允许模态缺失,但官方发布的三个划分并未做系统的缺失实验。论文中关于缺失模态的实验放在另一个数据集 Symile-M3 上:以 0.5 或 0.65 的概率随机丢弃各模态,观察模型在部分模态可用时的表现。把该结论外推到临床场景需要谨慎,因为临床数据的缺失不是随机的——没做某项化验往往与病情轻重相关,属于非随机缺失。
对本数据集而言,真正可用的「缺失信号」是化验的后 50 维指示位。它记录的是每项化验有没有测,天然携带临床决策信息。已有研究把化验的「测与不测」本身当作特征,这一维度在本数据集里是可直接取用的,但官方未提供任何基于该维度的基线结果。
4.6 已知的工程陷阱
张量行序。CSV 的行序与 npy 的行序不保证一致。若一边读 CSV 的 hadm_id、一边读 npy 的特征,必须用第三个索引文件对齐,不能假设第 k 行对第 k 行。
内存。胸片张量按 320×320×3 存储,若为 uint8 则每条约 300 KB,一万条约 3 GB;若加载为 float32 则膨胀四倍。心电图按 5000×12 单精度存储,每条约 240 KB。一次性全量载入在普通工作站上可以承受,但训练时应用内存映射或按批读取。
归一化不可逆。胸片已用 ImageNet 统计量归一化,若要把张量还原成可视图像,须用同一组均值与方差反算,不能直接用 255 缩放。化验的百分位也不可直接还原为原始单位,只能借助 labs_means.json 与母库分布近似反推。
crop 的不确定性。训练时的随机裁剪若未固定种子,两次训练的输入分布会有差异,复现时应固定随机种子并把增强参数记录在实验日志里。
§5 能做什么
5.1 任务清单
| 任务 | 输入 | 输出 | 现成支持 |
|---|---|---|---|
| 跨模态检索 | 心电图 + 化验 | 对应胸片 | 官方的 val_retrieval 与 test 协议 |
| 反向检索 | 胸片 | 对应心电图或化验 | 需自行翻转查询与候选 |
| 多模态表征学习 | 三模态任意组合 | 公共嵌入空间 | 官方代码与检查点 |
| 模态缺失鲁棒性 | 随机丢弃模态 | 检索准确率 | 需自行构造缺失实验 |
| 单模态基线 | 任一模态 | 检索准确率 | 论文仅报成对 CLIP 作为对照 |
| 下游分类 | 胸片表征 | 疾病标签 | 须回母库关联诊断表 |
前两项是数据集的原始用途,第三项是方法论文的核心,第四到第六项属于合理外延但官方未给结果。要特别注意第六项:数据集本身没有标签,任何分类结果都依赖使用者自己在母库中构建标签集,而这一步会引入新的选择偏倚。
5.2 最小可执行示例:复现检索基线
以下演示如何用官方张量复现一个最简的检索基线(此处用「化验最近邻」作为对照,用于确认流程跑通,不代表任何方法性能):
import numpy as np
labs = np.load('data_npy/labs_percentiles_test.npy') # (4640, 50)
miss = np.load('data_npy/labs_missingness_test.npy')
x = np.concatenate([labs, miss], axis=1) # (4640, 100)
qid = np.load('data_npy/label_hadm_id_test.npy')
lab = np.load('data_npy/label_test.npy')
hit, total = 0, 0
for i in range(0, len(qid), 10): # 每 10 行一组候选
scores = -np.abs(x[i:i+10] - x[i]).sum(axis=1) # 与查询的 L1 距离
hit += int(np.argmax(scores) == 0)
total += 1
print('top1 =', hit / total)
这段代码的关键不在距离度量,而在两点:候选按每 10 行一组切分,正例固定在组内第 0 位;准确率的分母是查询数而非行数。只要这两点写对,换成任意模型的嵌入向量都能直接复用同一套评测循环。
5.3 一个可执行的研究方向:模态缺失下的检索
数据集没有现成的缺失实验,但它具备做这类实验的条件:三模态齐全,且有明确的缺失指示位。一个具体设计是:
- 在训练时以固定概率丢弃心电图或化验模态,迫使模型学习部分模态下的表示;
- 在测试时系统性地只保留一个、两个或三个模态,记录检索准确率的变化;
- 与「不做缺失训练、测试时才丢弃模态」的对照组比较,衡量鲁棒性差距。
这个设计与论文在 Symile-M3 上的实验结构一致,移植到临床数据上可以检验「缺失训练是否能抵消非随机缺失带来的分布偏移」。需要注意的是,化验的缺失在真实数据里非随机,简单地随机丢弃无法模拟这一点;更贴近现实的做法是按「测与不测」的既有模式做条件丢弃,但这已经超出数据集的现成范围。
5.4 不适用的场景
流行病学描述。样本经过三模态筛选,不能用来估计某病的患病率或住院构成。
诊断模型训练。没有标签,且样本量对影像诊断任务偏小;一万量级的训练集训练胸片分类模型,泛化性远不如用母库的数十万张。
时序预测。每次住院只保留一张胸片与一段心电图,没有纵向序列,无法做病程预测。
报告生成。没有放射报告文本,这一任务需要用 MIMIC-CXR 的报告数据,本数据集无法直接支持。
影像组学与全视野分析。胸片被缩放到 320 像素并做了方形裁剪,细节损失较大;若要研究细微病灶,应回母库取原始分辨率图像。
5.5 计算资源估计
按官方模型规模,三路编码器分别是 ResNet-50(胸片)、ResNet-18(心电)与三层感知机(化验),参数量在千万级,单张 24 GB 显卡即可训练,但受限于数据量,训练轮次不宜过多——论文明确提到因数据集规模有限,使用了代价较高的全对负采样来抑制过拟合。对大多数复现实验而言,瓶颈不在算力而在数据申请周期与内存管理。
§6 常见误读与引用陷阱
| 常见说法 | 实际口径 | 证据位置 |
|---|---|---|
| Symile 是某个英文词组的缩写 | Symile 是论文提出的对比学习目标名,非缩写 | 官方页摘要与 arXiv:2411.01053 |
| 这是母库的一份完整缩影 | 只保留三模态齐全且满足两个时间窗的住院,筛选后占母库极小比例 | 官方页 Data Description 的入选条件 |
| 三个划分加起来等于官方公布的总住院数 | 三个划分相加比总数少 408 行,官方未解释 | 官方页同段并列的两组数字 |
| 胸片与化验是同一天采集的 | 胸片在入院后 24-72 小时,化验在入院 24 小时内,刻意错开 | 官方页时间窗描述 |
test_retrieval.csv 是官方文件名 |
官方只有 test.csv,其结构同 val_retrieval.csv,文件名层面不存在 test_retrieval |
官方页文件清单 |
| val_retrieval 也是零样本评测集 | 零样本指的是测试集;验证检索集用于训练期观察 | 论文实验章节 |
| 检索集的行数就是独立样本数 | 每 10 行来自同一个查询,独立样本只有行数的十分之一 | 官方页的展开倍率说明 |
| 论文报告了 Recall@5 与 Recall@10 | 论文只报十次自助重采样的平均准确率,未使用 Recall@k 术语 | 论文实验章节 |
| 数据集带有疾病诊断标签可以直接分类 | 无任何诊断标签,label 列仅为检索正负标记 | 官方页数据描述 |
| 化验前 50 维缺失时是空值 | 缺失位置用该化验的平均百分位填充,须靠后 50 维识别 | 官方页 labs 编码说明 |
| 可以从全量数据重算百分位以提升精度 | 百分位按训练集经验分布函数定义,改用全集会引入测试集泄漏 | 官方页 labs 编码说明 |
| 数据可以直接下载后分享给合作者 | 凭证化访问,不得再分发,合作者须各自申请 | 许可与 DUA 条款 |
技术陷阱一:文件名与变量名不统一。官方页把验证检索集写为 val_retrieval,测试集写为 test。代码里若统一命名为 *_retrieval,读文件时会找不到 test_retrieval.csv;反之若统一命名为 split,又容易把 val_retrieval.csv 当成普通验证集加载。建议在项目内显式区分「按记录组织的划分」与「按候选组组织的检索集」两类文件。
技术陷阱二:「最早可得的记录」与时间窗的关系。官方说每次住院取「最早可得的胸片、心电图与化验」。若只看这句话,会以为胸片取入院后第一张;实际上胸片还受 24-72 小时窗口约束,取的是窗口内最早的那张。两个规则叠加后,入院当天拍片且次日没有复查的住院会被排除,而不是取当天那张。
技术陷阱三:患者数与住院数的混用。规格表两栏分别统计患者与住院,数值不同。因为按患者划分,训练集与测试集的患者数之比约为 18:1,而住院数之比约为 21:1——同一患者反复入院的次数在训练集里更集中。引用规模时必须分清是哪个口径,否则会得出「测试集占 4%」与「测试集占 5%」并存却都对不上具体数字的混乱表述。
技术陷阱四:检查点不能当预训练权重。发布包附带的检查点是在本数据集上训练的,编码器从零开始、仅在这个检索任务上优化。把它当作通用胸片或心电预训练模型用于诊断任务,属于超出其训练目标的使用,官方未提供任何迁移性能证据。
§7 在生态中的位置
7.1 在 MIMIC 派生谱系里的坐标
MIMIC 体系经过十余年积累,已经形成一个庞大的派生生态。按派生方式可以把它们分成四类,Symile-MIMIC 属于其中最新的一类。
| 派生类型 | 代表 | 派生逻辑 | 与本数据集的关系 |
|---|---|---|---|
| 模块拆分 | MIMIC-IV-ED、MIMIC-IV-Note | 把母库按科室或数据类型切成独立包 | 本数据集跨模块取数,是拆分逻辑的反向操作 |
| 结构化标注 | MIMIC-CXR-JPG | 用自然语言处理从报告抽结构化标签 | 本数据集无标签,若需标签须回到这一类 |
| 跨库配对 | MIMIC-CXR-Ext-MIMIC-CXR-DB | 把影像与住院记录建成关系表 | 方法上最接近,但只做关联不筛时间窗 |
| 时间配对 | MIMIC-IV-Ext-ECG-Glucose | 按时间邻近把心电图与血糖配对 | 同样做时间对齐,但只有两模态 |
| 方法评测 | Symile-MIMIC | 为评测某对比学习目标而构造的固定形状配对集 | 本页所介绍的数据集 |
从这张表能看出一条脉络:MIMIC 派生的演化方向,是从「把母库切小」到「把母库切准」。早期的派生包关心的是「能不能单独下载某一模块」,后期的派生包关心的是「某个具体研究问题需要什么样的配对关系」。Symile-MIMIC 站在这条线的末端,它的存在理由完全由方法论文定义——没有 Symile 这个目标,就不需要这样一份数据。
7.2 与其他多模态配对的比较
把胸片、心电图与化验放在一起的公开数据集很少,原因在于三个模态分属不同科室、不同信息系统,采集节奏也不同。可比的方案大致有三条路线。
路线一:只做两两配对。心电图与化验的配对已有先例,按时间邻近关联即可;胸片与报告的配对有 MIMIC-CXR 这类大规模版本。两两配对的好处是数据量大,坏处是无法研究三者的联合结构。
路线二:多模态但无时间约束。把同一患者的各类检查全放进一个包里,由使用者自行决定如何配对。这类数据灵活,但没有统一的评测协议,不同论文的结果不可比。
路线三:固定时间窗与固定形状。本数据集采用的就是这条路线:时间窗写死,张量形状写死,候选组构造写死。代价是灵活性丧失,收益是可复现性与结果可比性。
三条路线没有优劣之分,取决于研究目标是「探索」还是「对标」。要做方法间的横向比较,第三条路线的价值最高;要做探索性分析,第一条或第二条更合适。
7.3 与同期多模态临床数据的差异
2023 年以来出现了多批面向多模态大模型的临床数据集,它们与本数据集的取向不同:前者追求模态数量与文本丰富度,通常包含报告、病历文本与问答对;后者追求配对的精确性与评测的可控性,只有三个模态且无文本。这决定了它们的适用场景几乎不重叠——做视觉语言模型预训练应选前者,做跨模态表示的结构性研究应选后者。
另一个差异在规模策略。多模态大模型数据集往往以百万级样本为目标,靠规模弥补噪声;本数据集只有万级样本,转而靠严格筛选与干净的配对关系换取信噪比。对算力有限的团队,后者更实际;对追求通用能力的团队,前者不可替代。
7.4 参见
下列条目与本文介绍的数据集有直接血缘或方法接近,均属 MIMIC 体系。
- MIMIC-IV — 重症监护医疗数据库:母库,提供住院记录与化验原始表;
- MIMIC-CXR-JPG:胸片与结构化标签的来源,提供图像与 DICOM 血统;
- MIMIC-CXR:胸片原始数据与放射报告;
- MIMIC-IV-ECHO:同为 MIMIC-IV 派生,按
subject_id关联全院病历的影像子集; - MIMIC-IV-Ext-ECG-Glucose:心电图与血糖的时间配对,方法上最接近的两模态版本;
- MIMIC-CXR-Ext-MIMIC-CXR-DB:胸片与住院记录的关系型关联库;
- BOLD, a blood-gas and oximetry linked dataset:跨 MIMIC-III、MIMIC-IV 与 eICU 的生理配对数据。
这些条目共享同一套凭证化访问体系与去标识化流程,但各自的数据规模、时间窗与标注方式不同。把它们放在一起看,能够勾勒出「同一份母库可以被派生出多少种用途」的图景。
§8 方法背景:Symile 要解决什么
8.1 两模态对比的局限
以 CLIP 为代表的对比学习有一个隐含前提:数据以成对形式出现,一次比较两个模态。图像与其配文是最典型的例子。当研究对象扩展到三个或更多模态时,成对方法的处理方式是把多模态拆成若干对,每对单独算对比损失,再把损失相加。
这种拆法的问题在于,它只能约束两两之间的关系,约束不到三者以上的联合信息。举个具体的例子:一份心电图、一组化验与一张胸片,若三者都对得上,成对损失会分别奖励「心电对胸片」「化验对胸片」「心电对化验」三组匹配,但不对「三者同时对应」提出额外要求。结果是模型可能把某一对学得很好,却在需要三路信息同时到场时表现不佳。论文的表述是成对应用 CLIP 无法捕捉模态间的联合信息,从而限制了学到的表示质量。
8.2 Symile 的做法
Symile 的出发点是对总相关信息(total correlation)的刻画。总相关信息衡量多个变量共享的信息量,它在两变量时退化为互信息,在多变量时则包含了「多个变量同时相关」的部分。论文推导出总相关信息的一个下界,并把这个下界写成可优化的对比损失,最终得到的损失形式是:对任意一组模态子集,用一个共享的表示去与其他子集的表示做对比。
由此带来三个性质,都与本数据集的设计直接相关:
- 模态数量不受限。损失的定义不依赖于模态数是二还是三,任意数量的模态都能代入;
- 表示与架构无关。每个模态先由各自的编码器(可以是任意网络)编码,再投影到公共空间,因此换编码器不影响损失本身;
- 缺失模态可处理。当某些模态不可用时,损失退化为在可用子集上计算,模型不需要为缺失单独设计分支。
论文进一步证明,对任意模态集合,Symile 学到的表示是预测其余模态的充分统计量。这一性质是方法论文的理论核心,也是本数据集把三模态配对作为核心结构的理论依据。
8.3 在本数据集上的映射
把上述性质落到数据上,可以看到每一处设计都有对应的方法动机:
| 方法性质 | 数据设计 | 位置 |
|---|---|---|
| 任意模态数 | 三模态齐全是硬性入选条件,保证任意子集都能取到 | 官方页入选条件 |
| 架构无关 | 三种模态各自张量化,形状固定,可接任意编码器 | data_npy 目录 |
| 缺失可处理 | 100 维化验向量显式编码缺失 | labs_missingness 张量 |
| 高阶联合信息 | 检索任务要求从两模态查第三模态,直接检验联合信息 | val_retrieval 与 test |
最后一行是理解这份数据的关键:检索任务把「两模态对一模态」的判别作为评测目标,正是要检验模型有没有学到三者之间的联合结构,而不只是两两相关性。
8.4 论文中的模型配置
官方公布的编码器配置如下,可作为复现的起点:
| 模态 | 编码器 | 输入 | 输出投影 |
|---|---|---|---|
| 胸片 | ResNet-50,从零训练 | 3×320×320 | 线性投影到 8192 维 |
| 心电图 | ResNet-18,从零训练 | 1×5000×12 | 线性投影到 8192 维 |
| 化验 | 三层全连接网络 | 100 维 | 线性投影到 8192 维 |
三个模态的表示被投影到同一个 8192 维空间,检索时在该空间内计算相似度。所有编码器从零训练意味着不依赖 ImageNet 预训练权重,这在数据量有限时通常会牺牲一些性能,但也避免了预训练数据与临床数据的分布差异。
因数据集规模有限,训练使用了全对负采样,即每个 batch 内所有样本两两配对作为负例。这种做法的计算代价随 batch 增大呈平方增长,但在小数据上比随机负采样更稳定。论文未在临床数据上做缺失模态实验,这一点在使用时应记住:方法宣称的缺失鲁棒性,在本数据集上没有直接的实证结果。
8.5 评测口径与结果
测试集的检索协议是:每个查询的候选为 10 条胸片,其中 1 条为对应正例、9 条为随机负例;模型为每条候选打分,取最高者作为预测;准确率的定义为预测正确占全部查询的比例。为了降低抽样波动,论文在测试集上做了十次自助重采样,报告均值与标准误。
| 方法 | 平均准确率 | 标准误 |
|---|---|---|
| Symile | 0.435 | 0.007 |
| 成对 CLIP | 0.387 | 0.003 |
| 随机基线 | 0.100 | — |
两组结果的差距约为 0.048 个百分点,相对提升约 12.5%。差距大于三倍标准误之和,可以认为差异不是抽样噪声。但也要看到,即便最好的方法也只把正确率做到 0.435,说明从心电图与化验推断胸片这件事仍然很难——胸片所反映的肺部实变、积液等改变,与入院早期的电生理和生化指标之间只有松散相关。
8.6 结果的解读边界
准确率不等同于临床可用性。0.435 是在 10 候选里选对 1 个的比例,换到全库检索会急剧下降。
基线单一。论文只与成对 CLIP 比较,没有引入其他多模态对比方法。这足以证明「成对拆解不如联合建模」,但不足以说明 Symile 优于所有替代方案。
只测了一个方向。查询是「心电图 + 化验」,候选是胸片。反向、单向(仅心电或仅化验)的结果官方未报,尽管数据支持这些实验。
§9 使用指南
9.1 复现论文结果的路径
若目标是复现 Symile 在测试集上的结果,最短路径是:
- 拿到凭证化访问权限,下载全部文件;
- 用官方
code/中的环境文件建环境,避免依赖版本差异; - 直接加载
symile_mimic_model.ckpt,在test.npy张量上跑检索评测; - 与论文的 0.435 对照,若差距超过两个标准误,先排查评测循环是否与官方一致(候选分组、正例位置、分母口径)。
第三步的检查点复现不涉及任何训练,通常在单卡上一小时内完成。若这一步就复现不出,问题多半在评测循环而非模型。
9.2 训练自己的模型的路径
若要训练新方法,建议的顺序是:
- 先跑通单模态基线。只用胸片做检索,或用化验的最近邻做检索,确认数据加载与评测循环正确;
- 再做两模态。心电图加化验作为查询,这是本数据集的原生设定;
- 最后做三模态或新目标。此时改动只涉及损失函数与编码器,评测流程保持不变。
跳过第一步是常见错误:三模态训练的调试成本高,若评测循环本身有 bug,会误判为方法不行。
9.3 数据加载的注意事项
- 内存映射。胸片张量较大,训练时用
np.load(..., mmap_mode='r')或框架的内存映射数据集,避免一次性载入; - 保持行序。所有张量文件与索引文件必须按同一顺序加载。若自行做 shuffle,须用同一个随机索引同时打乱特征与标签;
- 类型转换。胸片若以 uint8 存储,送入网络前须转 float32 并做归一化;心电已是 float32,直接使用;
- 缺失指示不要丢。化验前 50 维是填充后的值,若只取前 50 维而丢掉后 50 维,模型会把「未测」当成「测得平均水平」,这是使用该数据最常见的隐性错误。
9.4 做新实验时的报告清单
用本数据集发表结果时,建议在方法部分写明以下各项,否则他人难以复现:
| 项目 | 需写明的内容 |
|---|---|
| 数据版本 | v1.0.0 与 DOI |
| 划分 | 使用官方划分还是自建;若自建,说明是否患者级 |
| 模态组合 | 训练与测试分别用了哪些模态 |
| 编码器 | 架构、是否预训练、是否冻结 |
| 负例构造 | 采用官方 10 候选,还是自建困难负例 |
| 指标口径 | 准确率的分母是查询数还是行数;自助重采样次数 |
| 百分位重算 | 是否用训练集估计,若未用则说明 |
最后一项容易被忽略,却直接影响可比性:若用全集重算百分位,测试集特征会携带测试集信息,准确率会系统性偏高。
9.5 能够延伸的三个问题
问题一:模态的重要性排序。在三模态检索中逐一移除一个模态,观察准确率下降幅度,可以量化各模态对检索的贡献。这个实验数据完全支持,成本也低。
问题二:化验缺失模式的利用。把后 50 维的缺失指示单独作为特征,看它本身能否用于检索。若缺失模式单独就有区分力,说明「测什么」隐含着临床判断。
问题三:时间窗的敏感性。数据集固定了 24 小时与 24-72 小时两个窗口,但重建代码可修改窗口。用重建代码生成不同窗口下的子集,比较检索难度,可以回答「影像离化验越远,跨模态关联越弱吗」这一问题。这个方向的代价是要重跑母库上的筛选流程,需要母库的本地副本。
§10 总结
10.1 适用与不适用
适合用它的场景:
- 研究多模态对比学习目标,尤其是模态数超过两类的情形,需要一个配对干净、评测协议固定的临床数据集;
- 做跨模态检索的基线,需要与已发表数字直接对标;
- 研究结构化临床数据(化验)与影像、信号之间的关联,需要一个已经对齐好的三模态样本;
- 做教学方法设计,希望数据集规模适中、单卡可训、结果在一小时内跑出。
不适合用它的场景:
- 需要病例标签做诊断、分型或预后建模;
- 需要估计人群患病率、住院构成等流行病学指标;
- 需要原始分辨率影像做细节分析;
- 需要纵向序列做病程预测;
- 需要放射报告文本做生成任务。
10.2 三句话
它是什么:从 MIMIC 三个母库中筛出的三模态齐全子集,每次住院附一张胸片、一段心电图与一组化验,专为评测 Symile 对比学习目标构造。
它独特在哪:把胸片刻意后移到入院后 24-72 小时,使心电图与化验成为「先验信息」、胸片成为「待检索目标」,从而把三模态联合建模变成一个可打分的检索任务;同时附带检查点与重建代码,使结果可复现、口径可修改。
用之前要记住什么:这是强筛选后的子集而非母库缩影,三个划分之和与官方总数差 408 行,论文的准确率建立在 10 候选的简化任务上——三条都会影响结论的外推范围。
10.3 一句话选型建议
如果你的问题需要在「心电、化验、胸片」三者之间建立可计算的关联,并且接受一万量级、无标签、固定形状的输入,那么这份数据几乎是现成的最优起点;如果你的问题需要任何一项标签或纵向序列,那么应该回到母库自行构建。
附录 A:关键数字速查
规模数字见 §2.2 的规格表,此处只列正文未成表的技术参数与结果数字。
| 项目 | 数值 |
|---|---|
| 发布年份与版本 | 2025 年,v1.0.0 |
| 版本 DOI | 10.13026/3vvj-s428 |
| 检索查询与候选之比 | 1 查询 : 10 候选(1 正 9 负) |
| 化验项数 | 50 |
| 化验向量维度 | 100(50 百分位 + 50 缺失指示) |
| 胸片张量 | 3 × 320 × 320 |
| 心电图张量 | 1 × 5000 × 12 |
| 公共嵌入维度 | 8192 |
| 检索随机基线 | 0.1 |
| Symile 准确率 | 0.435(标准误 0.007) |
| 成对 CLIP 准确率 | 0.387(标准误 0.003) |
| 相对提升 | 约 12.5% |
附录 B:缩写对照
| 缩写 | 英文 | 中文 |
|---|---|---|
| CXR | Chest X-Ray | 胸片 |
| ECG | Electrocardiogram | 心电图 |
| EHR | Electronic Health Record | 电子健康记录 |
| MIMIC | Medical Information Mart for Intensive Care | 重症监护医疗信息库 |
| PA | Posteroanterior | 后前位 |
| AP | Anteroposterior | 前前位 |
| DUA | Data Use Agreement | 数据使用协议 |
| CITI | Collaborative Institutional Training Initiative | 合作机构培训计划 |
| CDF | Cumulative Distribution Function | 累积分布函数 |
| INR | International Normalized Ratio | 国际标准化比值 |
| PT | Prothrombin Time | 凝血酶原时间 |
| PTT | Partial Thromboplastin Time | 部分凝血活酶时间 |
| MCHC | Mean Corpuscular Hemoglobin Concentration | 平均红细胞血红蛋白浓度 |
| MCV | Mean Corpuscular Volume | 平均红细胞体积 |
| RDW | Red Cell Distribution Width | 红细胞分布宽度 |
| ALT | Alanine Aminotransferase | 丙氨酸氨基转移酶 |
| AST | Aspartate Aminotransferase | 天冬氨酸氨基转移酶 |
附录 C:上手核对清单
- [ ] 账号已具备凭证化访问资格,CITI 培训证明在有效期内;
- [ ] 已签署数据使用协议,并确认所在单位对数据存放有合规要求;
- [ ] 已下载全部文件,核对了版本号与 DOI;
- [ ] 张量行序、索引文件、标签文件三者已对齐,正例校验通过;
- [ ] 明确知道前 50 维百分位在缺失位置是填充值;
- [ ] 百分位映射使用训练集估计,未用全集重算;
- [ ] 训练期的随机裁剪已固定种子;
- [ ] 报告指标时写明分母是查询数而非候选行数;
- [ ] 检查点仅用于复现检索,未当作通用预训练权重。
附录 D:未覆盖内容
以下内容在官方页与论文中均未给出,使用时应自行确认或列为研究的已知边界:
- 各 split 的精确行数与总数之间的 408 行差额来源;
- 数据集中每个模态缺失的具体比例与分布;
- 每次住院实际测得的化验项数分布;
- 心电图采样率(形状为 5000 点,采样率未在官方页标注);
- 各文件的实际体积;
- 作者所属机构;
- 论文使用的数据版本与 v1.0.0 是否逐行一致;
- 反向检索与单模态检索的基线结果。
附录 E:检索模板
在文献库或搜索引擎中查证本数据集时,可用的检索式:
"Symile-MIMIC" AND physionet"Symile" AND "contrastive" AND "unlimited modalities"symile-mimic site:physionet.org"MIMIC-IV" AND "ECG" AND "chest X-ray" AND "labs" AND retrieval10.13026/3vvj-s428
若检索结果里出现把 Symile 解释为某个缩写、或把数据集规模写成母库规模的条目,应以官方 PhysioNet 页与 arXiv:2411.01053 为准。
附录 F:DAIMS 数据资产成熟度评估
DAIMS(Data Assets and Information Maturity Scorecard)从六个维度评估数据资产的可用性与治理成熟度。下表按本数据集的实际情况逐项打分,满分为 5 分。
| 维度 | 评分 | 依据 |
|---|---|---|
| 可发现性 | 5 | 有 PhysioNet 页面、版本 DOI、arXiv 配套论文与 GitHub 代码仓库,四路可查 |
| 可获取性 | 3 | 凭证化访问,须认证、培训、签署协议,流程完整但门槛高 |
| 互操作性 | 4 | 与母库共享 subject_id 与 hadm_id,可按标识回连;张量格式通用;但无标准医学术语编码(如 SNOMED、LOINC) |
| 可复用性 | 4 | 代码与检查点同包,划分与预处理写死,复现容易;但时间窗固定,改口径须重跑筛选 |
| 数据质量 | 3 | 三模态对齐与患者级划分严格,但总数与分项差 408 行,且官方未解释 |
| 治理与合规 | 5 | 明确的 DUA、CITI 培训要求、去标识化声明,义务链条完整 |
六项平均约 4.0。可发现性与治理两项接近满分,是这份数据最强的部分;数据质量一项因数字不一致被扣分,可获取性一项因门槛被扣分。需要说明的是,可获取性低并不意味着设计缺陷——临床数据的凭证化访问是行业标准做法,扣分反映的是使用成本而非发布方的疏忽。
编辑说明
核验时间与方式
核验完成于 2026 年 10 月 18 日。一手来源为 PhysioNet 的 Symile-MIMIC v1.0.0 页面与 arXiv:2411.01053 的摘要页及 HTML 正文实验章节,两处均逐字抓取。规模、时间窗、化验编码、检索集构造、许可条款、模型配置与检索结果均直接引自这两处,未采用二手转述。
数字口径冲突的存照
- 总数与三个划分之和相差 408 次住院:两数在官方页同一描述段落内并存,患者数一栏则自洽。正文按「以划分文件为准」处理,并在 §4.2 列出三种可能解释。
- 论文 95%/5% 与官方绝对行数:论文按患者比例划分,官方给绝对行数,二者方向一致但无法逐行互验。
- test_retrieval 的命名:官方文件清单中只有 test.csv,其结构同 val_retrieval.csv;不存在名为 test_retrieval.csv 的文件。本页正文统一写作「测试检索集」,只在必要的对照处提及文件名。
- 零样本的适用范围:论文的零样本表述针对测试集的检索任务,val_retrieval 是验证期使用的同构造集合,不宜一并冠以零样本之名。
- 心电图采样率:官方仅给张量形状 1×5000×12,未给采样率;按 MIMIC-IV-ECG 惯例记为 500 Hz × 10 秒,标为依母库惯例推定。
- 文件体积:官方页未提供任何文件大小信息,正文因此不写体积数字。
- 作者机构:官方页未列,正文不写机构。
未采信与待核
- MIMIC-IV 的精确住院总数未在本次核验中逐字抓取,正文只写「数十万级」,不写具体数字。
- 训练集行数是否为取整值,无官方依据,仅作为解释 408 行差额的假设之一列出。
- 论文所用数据版本与 v1.0.0 是否逐行一致,官方未声明。
版本记录
- 2026-10-18:初稿,对应数据集版本 v1.0.0(2025-01-28 发布)。
下次复核触发条件
PhysioNet 发布新版本、论文更新、或母库 MIMIC-IV 升版导致重建代码行为变化时,应重新核对规模数字与划分。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- ehrxqa — 共享标签:多模态 / 电子健康记录 / X光影像
- mimic-eye-multimodal-datasets — 共享标签:多模态 / 电子健康记录 / X光影像
- mimic-cxr-ext-mimic-cxr-db — 共享标签:多模态 / 电子健康记录 / X光影像
- mimic-iv-ext-ecg-glucose — 共享标签:多模态 / 电子健康记录 / 心电信号
- mimic-cxr — 共享标签:多模态 / X光影像
- health-data-nexus — 共享标签:多模态 / 电子健康记录
- latte-cxr — 共享标签:多模态 / X光影像
- mimic-iv-clinical-database — 共享标签:多模态 / 电子健康记录
- rsna-series — 共享标签:多模态 / X光影像
- padchest — 共享标签:多模态 / X光影像
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

