信息速览

CinC 2023 心脏骤停昏迷 EEG — I-CARE 神经预后预测数据集 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | CinC 2023 心脏骤停昏迷 EEG(I-CARE 神经预后数据集) |
| 英文全称 | I-CARE: International Cardiac Arrest REsearch consortium Database(CinC Challenge 2023 公开训练集) |
| 别名/简称 | CinC 2023;PhysioNet Challenge 2023;The George B. Moody PhysioNet Challenge 2023;I-CARE v1.0 |
| 疾病分类(ICD-11) | 心脏骤停后脑损伤与缺氧缺血性脑病:主要映射至 ICD-11 第 8 章神经系统疾病(如 8B20 缺氧缺血性脑病、8E43 心搏骤停后脑病)与第 11 章循环系统疾病(MC81 心脏骤停);昏迷状态映射至 8E43 类目 |
| SNOMED CT | 心脏骤停 410429000;缺氧缺血性脑病 32659003;昏迷 371632003;脑电图检查 54550000;脑死亡 39756008(预后较差终末状态) |
| 数据模态 | 多通道连续 EEG(脑电图)+患者级临床变量表(年龄、性别、ROSC 时长、OHCA、VFib、TTM、CPC) |
| AI 任务类型 | 二分类预后预测(Good / Poor)+有序结局回归(CPC 1–5)+概率校准;在固定假阳性率约束下优化真阳性率 |
| 样本总数 | 1,020 例患者(PhysioNet 公开训练集 607 例;隐藏验证与测试集共 413 例,从未释放) |
| 数据大小 | 全库记录超过 57,000 小时 EEG、约 3.9 TB 原始数据;PhysioNet i-care v1.0 公开包 23.7 GB 未压缩 / 17.4 GB ZIP |
| 数据格式 | WFDB 记录(头文件 .hea + MATLAB MAT v4 信号文件 .mat);伪迹评分 TSV(ICARE_XXXX.tsv);患者元数据纯文本 TXT |
| 许可证 | PhysioNet 公开下载(限 Challenge 期使用、禁止转发)/AWS BDSP Restricted Health Data License 1.0.0(受控 S3 访问);参赛提交代码未指定许可时默认 BSD 3-Clause |
| 访问级别 | 公开下载(PhysioNet,无需凭证申请,但须遵守发布条款);AWS 通道为受控访问 |
| DUO 标签 | HMB(健康/医学/生物医学研究用途);GRU 建议(一般研究用途);因标签含撤除治疗决策成分,建议附加 IRB 审查 |
| 语言 | 英文文档与代码;数据本身为数值信号,无语言属性 |
| 首发日期 | 2023-02-10(非官方阶段开放数据);正式版本 i-care v1.0 |
| 最后更新 | 2023-10-04(CinC 2023 亚特兰大闭幕式公布结果);PhysioNet i-care 后续版本 v2.1 |
| 发布机构 | PhysioNet(MIT 计算生理学实验室与哈佛医学院联合运营)与 Computing in Cardiology;数据由 I-CARE 联盟 7 家医院提供 |
| 官方主页 | The George B. Moody PhysioNet Challenge 2023 |
| 下载地址 | PhysioNet I-CARE v1.0;AWS Open Data 注册页 |
| DOI | 10.13026/rjbz-cq89(i-care v1.0);10.22489/CinC.2023.019(挑战描述论文);10.1097/CCM.0000000000006074(数据论文) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方训练集可直接下载、样例代码与评分脚本开源、字段结构清晰;扣分项:官方仅释放 607/1,020 例,其余 413 例永不公开,且伪迹评分为自动生成未经人工验证 |
| 页面状态 | published |
§0 E-E-A-T 审核声明
医学审核者:[千方病案医学编辑部] 交叉审核:§2 医学背景(心脏骤停后脑损伤机制、CPC 量表临床语义、自实现预言伦理)、§7 质量评估(标签偏倚与公平性分析)。
数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点、§6.9 官方评分函数实现。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。CinC 2023 所用的 I-CARE 数据在 PhysioNet 上可公开下载,但发布条款明确要求使用者不得转发数据,且在 Challenge 结束前不得发表或分享任何使用该数据的成果(CinC 会议本身除外);同期 AWS Open Data 通道采用 BDSP Restricted Health Data License 1.0.0 并施加受控访问。两条许可口径不同,使用者须自行确认适用条款。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
事实核查声明:本页面全部关键数字在撰写过程中经多轮网络检索核实,来源清单见 §10.3;凡无法核实的信息一律标注"官方未披露"或直接省略,未做推测性填充。特别提示:本词条的评测指标表述已按官方挑战描述论文与官方评分脚本更正为 TPR at FPR ≤ 0.05,而非 AUROC 或校准误差。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? CinC 2023 指 The George B. Moody PhysioNet Challenge 2023,官方全称 “Predicting Neurological Recovery from Coma After Cardiac Arrest”。它基于 I-CARE 联盟(7 家美国与欧洲医院)采集的 1,020 例心脏骤停后昏迷患者连续 EEG,连同入组临床变量一起构成一个神经预后预测基准。作为挑战赛,PhysioNet 公开了其中的 607 例作为训练集,另外 413 例被永久留作验证与测试集,从不对外释放。任务要求参赛者仅凭 EEG 与有限的临床变量,预测患者在 3–6 个月后的神经功能结局。
为什么重要? 心脏骤停后昏迷患者是否可能苏醒,是重症医学中最棘手、也最不能出错的问题之一。传统上依赖临床查体、诱发电位与医生经验做出预后判断,而一旦判断为"预后不良",往往直接导致撤除生命支持治疗——错误判断不可挽回。大规模、多中心、带结局标注的连续 EEG 数据集,是让机器学习模型沉淀客观脑电证据、降低主观判断波动的前提。CinC 2023 提供的正是这样一个规模、时程与多中心性都极罕见的公开基准。
我能用它做什么? 训练与评测脑电预后二分类模型;研究 artifact 鲁棒的频谱与连接性特征工程;在"假阳性率不超过 5%"这一临床安全约束下做阈值优化;利用官方刻意留出的整家医院测试集检验跨机构泛化;以及开展有序结局回归(直接预测 CPC 1–5)与概率校准methodology研究。
§1.1 技术摘要
I-CARE 数据集的采集链条是:7 家医院对心脏骤停后恢复自主循环(ROSC)但仍处于昏迷状态(不能执行言语指令,GCS ≤ 8)的成年患者实施连续 EEG 监护;原始记录统一降采样至 100 Hz,采用包含 Fp1、Fp2、F7、F8、F3、F4、T3、T4、C3、C4、T5、T6、P3、P4、O1、O2、Fz、Cz、Pz 共 19 个电极的共享导联布局(据此推导 18 个双极导联);记录按小时切分、最多延续至 ROSC 后 72 小时,每小时仅保留按自动伪迹筛查得分最高的一段、最长 5 分钟信号,存入 WFDB 格式并以 MATLAB MAT v4 保存信号矩阵。伪迹得分单独存放在 ICARE_XXXX.tsv,含相对于 ROSC 的小时起点时间戳与 0–1 质量分(1 表示 5 分钟完全无伪迹,0 表示完全污染),评分基于每 10 秒小段对五类伪迹(平坦信号、极端高低值、肌电伪迹、非生理频谱、幅度变化过快)的判定汇总。
结局标注取 3–6 个月内的最佳 CPC 评分:CPC 1 至 2 归为 Good,CPC 3 至 5 归为 Poor。全库 1,020 例中死亡 603 例(59%)、CPC 3–4 严重神经障碍 48 例(5%)、CPC 1–2 良好恢复 369 例(36%),良好结局约占三成六,属中等程度类别不平衡。
官方评分指标不是 AUROC,而是逐家医院约束假阳性率后的真阳性率:对每家医院各自取满足 FPR ≤ 0.05 的最大阈值,汇总各院真阳性、假阳性、假阴性、真阴性后计算 TPR at FPR ≤ 0.05。算法须对 ROSC 后 12、24、48、72 小时四个时间点分别给出预测且需保持因果性(如 12 小时预测只能使用前 12 小时数据),但只有 72 小时的分数决定最终排名。第 24 届 George B. Moody PhysioNet Challenge 共吸引 111 支团队提交 982 个算法,最终 36 支队伍满足全部规则获得排名资格,冠军为 AIrhythm,隐藏测试集得分 0.792。
§1.2 战略价值
维度一:为"高风险、不可逆"的临床决策提供客观脑电证据。 心脏骤停后昏迷预后是所有医疗 AI 场景中对假阳性最敏感的一类——把可能恢复的患者误判为预后不良,可能直接导致生命支持被撤除。数据集与官方评分指标共同把这一临床约束写进了评测协议:FPR 被硬性压到 5% 以下,模型必须在极低误报率下争取尽可能高的检出率。这种"操作点约束式评测"在公开医疗数据集中并不常见,对中文团队理解高风险场景的指标设计极具参考价值。对国内读者的额外意义在于:公开的、带长期功能结局标注的中国人群脑电预后数据集仍然稀缺,I-CARE 提供了一套完整的、经国际同行评审的任务定义、评测协议与基线代码链路,可直接作为国内数据资源建设的设计范本——尤其是"逐中心施加约束"这一设计,直接对应国内多院区数据合作中常见的机构间分布差异问题。
维度二:跨机构泛化与信息性缺失的方法论试验场。 数据集刻意将一家医院的数据仅纳入测试集,使得任何依赖单中心分布的建模策略都会在官方协议下系统性失分,这为领域泛化(domain generalization)研究提供了一个设计良好的自然实验。同时,“记录时长随结局系统性变化”(CPC 1 平均 53 小时 vs CPC 4 平均 102 小时)是医疗数据中信息性缺失的教科书级案例:模型的输入长度本身就携带了照护强度信息,稍有不慎就会学到与脑功能无关的捷径。任何希望在真实重症数据上工作的团队,都能在这个数据集上以较低成本获得对上述两类问题的直接经验。
§1.3 同类数据集横向对比
| 数据集 | 机构/来源 | 患者数 | 模态与时程 | 结局标签 | 与 CinC 2023 的差异 |
|---|---|---|---|---|---|
| I-CARE(CinC 2023 训练集) | 7 家美欧医院组成的 I-CARE 联盟 | 公开 607 例(全库 1,020 例) | 连续 EEG,最多至 ROSC 后 72 小时 | CPC 1–5,二分 Good/Poor,3–6 个月 | 本词条主题;规模、多中心性与时程均为同类最完整 |
| 与 CinC 2015 同属 PhysioNet 挑战系列 | PhysioNet/CinC | 2015 年赛道规模较小 | 单导联至多导联 ICU 波形 | 不同任务(住院时长、死亡率等) | 同一挑战系列的不同届次,任务定义与队列完全独立 |
| 与 CinC 2018 同属 PhysioNet 挑战系列 | PhysioNet/CinC | 2018 年赛道规模较大 | 12 导联 ECG 等 | 睡眠唤醒/心律失常相关结局 | 同系列但聚焦心血管信号,与本数据集无患者重叠 |
| 与 CinC 2020 同属 PhysioNet 挑战系列 | PhysioNet/CinC | 2020 年赛道 | 12 导联 ECG | 多类心律失常诊断标签 | 分类任务而非预后回归,评测指标为多标签评分 |
| 与 CinC 2022 同属 PhysioNet 挑战系列 | PhysioNet/CinC | 2022 年赛道 | 多模态心脏信号 | 心脏状态与活动分类 | 同系列上一届,评测协议与技术栈可迁移借鉴 |
| 其他 ICU EEG 队列(如各类单中心昏迷研究) | 多为单一三级医院 | 数十至数百例 | 连续 EEG,时程不等 | 多为院内死亡率或短期 GCS | 缺少多中心异质性与标准化时长切分,跨机构泛化证据弱 |
上表说明:在"心脏骤停后昏迷 + 连续 EEG + 长期功能结局"这一交集上,I-CARE/CinC 2023 目前是公开资源中最完整的一个;同系列的 CinC 2015、CinC 2018、CinC 2020、CinC 2022 等届次虽然共享组织方与技术生态,但患者队列、任务定义与评测指标各不相同,不能混用。使用者在论文中做横向对比时,须明确区分"组织方相同"与"数据可比"这两件事。
§1.4 版本时间轴
| 时间 | 事件 |
|---|---|
| 2019 年起 | PhysioNet Challenge 冠名"George B. Moody",以纪念该挑战系列的创始人 |
| 2019–2023 | I-CARE 联盟 7 家医院完成入组、连续 EEG 采集与 3–6 个月结局随访 |
| 2023-02-10 | 非官方阶段开放,释放小版本数据(40.3 GB,通道更少、记录截断),供参赛者熟悉格式 |
| 2023-04-24 | 非官方阶段结束;随后进入间歇期 |
| 2023-04-25 至 2023-06-08 | 间歇期(Interim Phase) |
| 2023-06-09 | 官方阶段开始,释放大版本数据(2.63 TB,更多通道、完整记录) |
| 2023-08-31 | 官方阶段结束,停止接收提交 |
| 2023-10-01 | 会前 hackathon 在亚特兰大举行 |
| 2023-10-04 | 结果在佐治亚州亚特兰大 CinC 2023 闭幕式公布 |
| 2023-10-10 | 官方公告页发布,公布排行榜与获奖名单 |
| 2023-12 | 数据论文发表于 Critical Care Medicine(51 卷 12 期,1802–1811 页) |
| 2024 起 | PhysioNet i-care 数据库持续维护,发布 v2.x 版本并补全 ECG、EMG、EOG 等多模态信号 |
§1.5 典型应用场景
场景一:低误报率下的脑电预后模型研究。 团队希望探索"在假阳性率不超过 5% 的前提下,能从连续 EEG 中提取多少预后信息"。可在训练集(607 例)上完成特征工程与模型选型,用逐家医院的阈值策略模拟官方评测,并在自建交叉验证中报告 TPR@FPR≤0.05 而非 AUROC。
场景二:跨机构泛化的方法学研究。 由于测试集中包含训练集中完全未出现的一家医院,该数据集天然适合检验域泛化算法(对抗式域适应、风险外推、因果不变特征学习等)。
场景三:有序结局回归与校准。 官方除要求二元标签与 Poor 概率外,还要求输出 1–5 的连续 CPC 预测;排行榜另设 CPC MSE 与 CPC MAE 展示列。这为有序回归(ordinal regression)与概率校准研究提供了现成的评测支撑。
场景四:artifact 鲁棒特征与预处理管线评测。 由于数据以"每小时最佳 5 分钟"的切片方式组织且附带自动化质量分,团队可以系统研究不同质量门槛、不同通道子集、不同重参考策略对预后的影响,形成可复用的 EEG 预处理经验。
场景五:高风险临床决策指标的落地实践。 对医疗 AI 产品团队而言,该数据集是演练"操作点约束评测"的低成本沙盘:如何向临床方解释 FPR 5% 的取舍、如何在模型卡中如实披露阈值选择逻辑、如何论证模型不应用于直接驱动撤除治疗决策。
§2 医学背景
§2.1 疾病谱与 ICD-11 映射
| 临床概念 | ICD-11 编码 | 说明与在本数据集中的角色 |
|---|---|---|
| 心脏骤停 | MC81(循环系统疾病章节) | 入组的触发事件,可为院外(OHCA = True)或院内发生 |
| 缺氧缺血性脑病 | 8B20(神经系统疾病章节) | 心脏骤停后全脑缺血再灌注损伤的核心病理,是预后预测的直接依据 |
| 心搏骤停后脑病 | 8E43 | 心脏骤停后脑损伤的临床表述,与昏迷状态高度耦合 |
| 昏迷 | 8E43 / 相关意识障碍类目 | 入组必要条件:不能执行言语指令且 GCS ≤ 8 |
| 无反应觉醒综合征 | 8E43 相关类目 | 对应 CPC 4,旧称植物状态 |
| 脑死亡 | 39756008(SNOMED CT) | 终末状态,对应 CPC 5 的极端情形 |
| 癫痫发作与癫痫持续状态 | 8A60–8A6Z 区间 | 缺氧后痫样放电与状态性事件,是重要的预后不良征象 |
需要说明的是,ICD-11 尚未为"心脏骤停后昏迷预后"设立独立类目,实践中通常以病因(缺氧缺血性脑病)叠加意识障碍状态进行组合编码。本表格为编辑部基于 ICD-11 通行编码补充的辅助理解层,用于帮助中文读者把数据集标签与临床编码体系对齐,并非数据集官方内容。数据集中实际提供的是 CPC 量表评分,而非 ICD 编码。
§2.1b CPC 量表的临床语义
CPC(Cerebral Performance Category,脑功能表现分级)是心脏骤停研究中应用最广的功能结局量表,为五级有序分类:
- CPC 1:神经功能良好,意识清醒、能工作、能独立日常生活。轻微心理或神经异常不构成降级。
- CPC 2:中度神经功能障碍,但日常生活可独立完成(可从事部分工作或需轻度协助)。
- CPC 3:严重神经功能障碍,日常生活依赖他人照护,但保留部分意识。
- CPC 4:无反应觉醒综合征(旧称植物状态),或严重失能至完全依赖照护且无有意义反应。
- CPC 5:死亡(或脑死亡)。
数据集给出的二分类口径为:Good = CPC 1–2,Poor = CPC 3–5。这一分界线的临床含义是"患者是否能独立生活",而非"是否存活"——因此 CPC 3 的存活患者仍被归入 Poor。这一点在建模时极易被误解为死亡率预测任务,实为功能结局预测任务,两者并不等价(本例中死亡 59%,而 Poor 比例约 64%)。结局评估时点取 ROSC 后 3–6 个月内的最佳 CPC,其中 2 家中心采用前瞻性电话随访(ROSC 后 6 个月),5 家中心采用回顾性病历审查(3–6 个月)。
§2.2 心脏骤停的流行病学与脑损伤机制
流行病学视角。 心脏骤停是全球主要死亡原因之一,而"恢复自主循环却未能恢复意识"是其最常见的转归之一。在 I-CARE 全库 1,020 例中,最终死亡 603 例(59%)、CPC 3–4 严重神经障碍 48 例(5%)、CPC 1–2 良好恢复 369 例(36%);换言之,约三分之二的患者归于 Poor 结局。这一分布与既往心肺复苏后预后研究的大致区间一致,说明该队列并未刻意富集良好结局案例。
脑损伤机制视角。 心脏骤停导致全脑血流中断,随后在恢复自主循环时发生缺血再灌注损伤,触发一系列级联反应:能量代谢衰竭与离子梯度崩解、兴奋性氨基酸释放与钙超载、线粒体功能障碍与活性氧爆发、神经炎症激活、以及最终的选择性神经元坏死与凋亡。皮质与海马等对缺氧高度敏感的区域最先受累,临床上表现为不同程度的意识障碍。脑电是这一过程最直接的床旁观测窗口:缺氧后脑电常先表现为背景活动弥漫性减慢、随后出现爆发抑制(burst suppression),进一步恶化则背景趋于平坦;另一方面,缺氧后痫样放电(包括非惊厥性癫痫持续状态)在部分患者中持续存在,同样提示预后不良。
脑电征象的预后价值。 在药物镇静充分控制的前提下,若干脑电征象被广泛认为与不良结局相关,包括:持续爆发抑制、背景活动普遍性抑制或平坦、广泛周期性放电、以及持续性痫样放电。这些征象也正是数据集附带统计所印证的方向:全库中痫样放电(≥1 Hz 持续 ≥1 小时)见于 258 例(25%),其中 CPC 1–2 组占 19%、CPC 3–5 组占 29%;爆发抑制(≥1 小时)在 CPC 1–2 组中 207 例(56%)、在 CPC 3–5 组中 635 例(97%)。爆发抑制在两组间近 41 个百分点的差异,直观说明单靠某个脑电征象的存在与否远不足以做出可靠预后判断——这正是需要多特征、长时程、机器学习方法的原因所在。
§2.3 临床任务定义
官方任务定义可拆解为三个层次,参赛者必须全部完成:
输出一:二元结局标签。 预测该患者结局为 good 还是 poor(Good = CPC 1–2,Poor = CPC 3–5)。输出二:Poor 的预测概率(0–1 之间),该概率是评分环节阈值扫描的输入。输出三:预测 CPC 分数,给出 1–5 区间的连续预测值,官方排行榜据此计算 CPC MSE 与 CPC MAE 作为附加展示列。
时间点要求。 算法须对 ROSC 后 12、24、48、72 小时四个时间点分别输出上述三类预测,共 12 个输出值。关键约束是因果性:预测 12 小时结局时只能使用 ROSC 后前 12 小时的数据。只有 72 小时时间点的分数决定最终排名,12、24、48 小时的结果仅作附加观察。
输入约束。 建模输入限于患者级临床变量(Age、Sex、ROSC、OHCA、VFib、TTM)与 EEG 信号及其派生特征;不得使用 ROSC 后的治疗信息(如最终是否撤除治疗)。
§2.4 患者人群构成
入组标准(全库):年龄 ≥ 16 岁;院外或院内心脏骤停后恢复自主循环(ROSC);仍处于昏迷状态(不能执行言语指令,且 GCS ≤ 8);接受连续 EEG 监护。
机构构成(7 家医院):
| 国家 | 医院 | 城市 |
|---|---|---|
| 荷兰 | Rijnstate Hospital | 阿纳姆(Arnhem) |
| 荷兰 | Medisch Spectrum Twente | 恩斯赫德(Enschede) |
| 比利时 | Erasme Hospital | 布鲁塞尔(Brussels) |
| 美国 | Massachusetts General Hospital | 波士顿(Boston) |
| 美国 | Brigham and Women’s Hospital | 波士顿(Boston) |
| 美国 | Beth Israel Deaconess Medical Center | 波士顿(Boston) |
| 美国 | Yale New Haven Hospital | 纽黑文(New Haven) |
关键提示:划分时可刻意将其中一家医院的数据仅纳入测试集,用于评估跨机构泛化性。这意味着公开训练集与隐藏测试集之间存在机构级分布差异,使用者不应假设两者同分布。
规模构成:全库 1,020 例;PhysioNet 公开训练集 607 例;隐藏集 413 例(验证集约 10%、测试集约 30%)。划分时近似保持了各变量与标签的单变量分布。
§2.5 临床价值
价值一:把主观预后判断转化为可复现的客观流程。 临床上对心脏骤停后昏迷患者的预后判断长期依赖多模态评估的组合(临床查体、脑干反射、体感诱发电位、神经元特异性烯醇化酶、影像与脑电),而不同医师、不同中心之间的判断一致性有限。基于大规模标准化脑电数据的模型,有可能在保持安全性的前提下提升判断的稳定性与可复现性。
价值二:为"是否继续治疗"提供第二个视角,而非替代决策。 本数据集的任务表述是"预后预测",不是"治疗建议"。任何模型输出都应被定位为辅助信息,最终决策仍须由临床团队结合完整临床情境作出;数据集与本词条均明确反对将模型输出直接用于驱动撤除生命支持的自动化流程。
价值三:支撑预后评估的时序化与动态化。 传统预后评估多在固定时间窗(如 72 小时)作出一次性判断;本数据集覆盖 ROSC 后最多 72 小时、并要求在四个时间点分别预测,为"信息随时间累积时预后判断如何演化"提供了实测数据。
价值四:为多中心临床 AI 治理提供经验。 数据集在跨机构异质性、标签主观性、信息性缺失、低误报约束等方面集中呈现了重症 AI 治理的典型难题,是医疗机构推进同类项目时的重要参考案例。
§2.6 金标准属性
| 属性维度 | 本数据集的情况 | 临床与研究含义 |
|---|---|---|
| 金标准类型 | 3–6 个月内最佳 CPC(经二分为 Good/Poor) | 结局类金标准,非影像或病理类;单一评分维度,不含认知细分 |
| 评估时点 | 2 家中心前瞻性电话随访(ROSC 后 6 个月);5 家中心回顾性病历审查(3–6 个月) | 时点与评估方式不完全统一,跨机构标签噪声不可忽略 |
| 评估者 | 各中心临床团队;公开材料未逐一披露评估者资质与培训流程 | 官方未披露评估者间一致性(kappa)数值 |
| 标签二值化 | 官方直接提供 Good(CPC 1–2)与 Poor(CPC 3–5) | 保留了原始 CPC 1–5 有序标签,支持回归与有序分类研究 |
| 标签可及性 | 公开训练集带标签;隐藏集标签从未释放 | 官方排行榜是唯一权威的测试集性能来源 |
| 标签主观性 | Poor 标签部分由撤除生命支持治疗决策导致 | 存在自实现预言偏倚,标签不是纯粹的生物学生存信号 |
| 自动化程度 | 结局标签为人工判定;EEG 伪迹评分为自动生成、未经人工验证 | 信号质量标签的可靠性低于结局标签,官方提示需自行判断 |
对使用者的直接建议:如果研究目标涉及"模型的临床可用性",必须把标签主观性与机构间评估差异作为独立误差源在局限部分显式讨论,而不能简单假设标签无噪声。如果研究目标纯粹是方法学比较,则该数据集仍是一个规模与结构都相当优秀的基准,只需在跨数据集对比时注明标签定义口径。
§3 数据集规格
§3.0 版本抉择矩阵
I-CARE 数据在 PhysioNet 上存在多个版本,且在挑战赛期间还发布过两套不同规模的比赛用包。选择版本前请先回答"我要做什么":
| 版本/包 | 内容规模 | 通道与时程 | 适用场景 | 注意事项 |
|---|---|---|---|---|
| 非官方阶段小版本(2023-02-10 释放) | 40.3 GB | 通道更少、记录被截断 | 仅历史归档用途 | 与官方阶段大版本不可混用;若复现论文结果一律不选此包 |
| 官方阶段大版本(2023-06-09 释放) | 2.63 TB | 更多通道、完整记录 | 忠实复现挑战赛环境 | 体量极大,须预留充足存储与 IO 带宽 |
| PhysioNet i-care v1.0(长期公开版) | 23.7 GB 未压缩 / 17.4 GB ZIP,607 例 | EEG 为主 + 患者级临床变量 | 绝大多数研究、教学、论文复现 | 仅含公开训练集,不含隐藏 413 例;多模态信号(ECG 等)不完整 |
| PhysioNet i-care v2.x(后续版本) | 规模更大,补全多模态 | EEG + ECG + EMG + EOG | 需要多模态建模的研究 | 版本迭代中字段可能调整,须记录所用版本号 |
| AWS Open Data 通道(BDSP 镜像) | 与训练集对应 | 同 v1.0 训练集 | 需要云端大规模训练、不想本地下载 TB 级数据 | 采用 BDSP Restricted Health Data License 1.0.0,受控访问,许可口径与 PhysioNet 不同 |
抉择原则:做方法学研究、写论文、跑教学实验,一律选 PhysioNet i-care v1.0(607 例),并在论文中明确说明"使用的是公开训练集子集,非全库 1,020 例"。需要多模态信号时再评估 v2.x。只有必须复现挑战赛官方提交环境的团队才需要动用 2.63 TB 的官方阶段大版本。
§3.1 模态详情
主模态:连续脑电图(EEG)。
- 电极布局:论文列出的共享导联为 19 个——Fp1、Fp2、F7、F8、F3、F4、T3、T4、C3、C4、T5、T6、P3、P4、O1、O2、Fz、Cz、Pz。
- 双极导联:PhysioNet i-care v1.0 页面描述为"18 个双极通道"。两者并非矛盾:18 个双极导联由 19 个电极按标准双极蒙太奇推导而来。使用者在论文中引用通道数时,建议同时注明电极数与导联数,避免与官方文档口径不一。
- 采样率:全部记录统一降采样至 100 Hz(因此 Nyquist 上限为 50 Hz)。
- 切片单位:按 ROSC 后的小时切分,每小时最多保留 5 分钟;最多延续至 ROSC 后 72 小时。
- 存储格式:WFDB 记录,信号矩阵以 MATLAB MAT v4 保存。
辅助模态(后续版本补全):ECG(心电)、EMG(肌电)、EOG(眼电)。论文 2.1 节明确数据集包含这些信号;PhysioNet i-care v1.0 公开版页面以 EEG 与临床变量为主,多模态信号在 v2.x 版本中更为完整。
非信号模态:患者级临床变量表。
| 变量 | 取值域 | 临床含义 |
|---|---|---|
| Age | 整数(岁);> 89 岁统一记为 90 | 年龄是最强的基线预后因子之一 |
| Sex | Male / Female | 性别 |
| ROSC | 整数(分钟) | 心脏骤停至恢复自主循环的时长,反映缺血时间 |
| OHCA | True / False | 是否为院外心脏骤停 |
| VFib | True / False | 初始心律是否可电击(VFib = True 通常预后相对较好) |
| TTM | 33 / 36 / NaN | 目标温度管理设定温度;NaN 表示未实施 TTM |
| Outcome | Good / Poor | 官方二分类标签 |
| CPC | 1 / 2 / 3 / 4 / 5 | 原始有序结局标签 |
§3.2 按子集样本数统计
| 子集 | 患者数 | 是否公开 | 标签可及性 | 用途 |
|---|---|---|---|---|
| 公开训练集 | 607 例 | 公开(PhysioNet i-care v1.0) | 完整可及 | 模型训练、交叉验证、特征工程 |
| 官方验证集 | 约 102 例(约 10%) | 不公开 | 不可及 | 赛期内部调参用之,从未释放 |
| 官方测试集 | 约 306 例(约 30%) | 不公开 | 不可及 | 决定最终排名;含一家训练集中完全未出现的医院 |
| 隐藏集合计 | 413 例 | 不公开 | 不可及 | — |
| 全库 | 1,020 例 | 仅 607 例公开(约 59.5%) | 部分可及 | — |
关键数字纠错提示:常被误引的"607 例"仅是公开训练集规模,不是数据集全库规模。全库为 1,020 例。在论文中声称"使用 I-CARE 全部 1,020 例"而实际只用了公开的 607 例,属于事实性错误,审稿人通常会要求更正。
§3.3 数据格式清单
| 文件/格式 | 命名规则 | 内容 | 读取方式 |
|---|---|---|---|
| WFDB 头文件 | ICARE_XXXX_YY.hea |
记录级元信息:采样率、通道名、单位、增益、信号文件名 | wfdb.rdheader() 或 wfdb.rdrecord() |
| 信号文件 | ICARE_XXXX_YY.mat |
MATLAB MAT v4 格式的信号矩阵,形状约为(通道数 × 采样点数) | wfdb.rdrecord() 自动识别;或 scipy.io.loadmat() |
| 患者元数据 | ICARE_XXXX.txt |
键值对形式的临床变量(Age、Sex、ROSC、OHCA、VFib、TTM、Outcome、CPC) | 逐行解析,按冒号或等号切分 |
| 伪迹评分文件 | ICARE_XXXX.tsv |
两列制表符分隔:Time(相对 ROSC 的段起始时间)与 Quality(0–1 质量分) |
pandas.read_csv(sep="\t") |
| 评测脚本 | evaluate_model(官方仓库) |
含 compute_challenge_score 函数,实现 TPR@FPR≤0.05 逐医院评分 |
Python 直接调用 |
§3.4 存储大小
| 项目 | 体积 | 备注 |
|---|---|---|
| 官方阶段大版本包 | 2.63 TB | 完整通道与完整记录,仅挑战赛期间释放 |
| 非官方阶段小版本包 | 40.3 GB | 通道更少、记录截断,仅供格式熟悉 |
| PhysioNet i-care v1.0(未压缩) | 23.7 GB | 607 例公开训练集 |
| PhysioNet i-care v1.0(ZIP) | 17.4 GB | 下载体积 |
| 全库原始记录量 | 约 3.9 TB / 56,676 小时 | 数据论文给出的精确值 |
工程提示:即便只使用 607 例的公开训练集,23.7 GB 的解压后体积也要求预留充足的本地磁盘。若采用"全量解压后随机访问"的工作方式,建议 SSD 存储;若追求云上弹性,可优先评估 AWS BDSP 受控通道,避免 TB 级数据搬运。
§3.5 标注方式
本数据集的"标注"包含两类性质完全不同的信息,必须分开理解:
第一类:结局标签(人工判定,随访获得)。 取 ROSC 后 3–6 个月内的最佳 CPC。2 家中心采用前瞻性电话随访(在 ROSC 后 6 个月时进行功能状态评估),5 家中心采用回顾性病历审查(取 3–6 个月区间内的记录)。标签随后被二分为 Good(CPC 1–2)与 Poor(CPC 3–5)。这类标签的可靠性受随访方式差异、评估者判断与撤除治疗决策的共同影响。
第二类:信号质量标签(自动生成,未经人工验证)。 ICARE_XXXX.tsv 中的 Quality 值来自自动化伪迹筛查流程,其判定逻辑是把每个小时切片中的信号按 10 秒小段评估五类伪迹——平坦信号、极端高/低值、肌电伪迹、非生理频谱、幅度变化过快——再汇总为 0–1 的质量分(1 表示该 5 分钟完全无伪迹,0 表示完全污染)。PhysioNet 对此明确提示:该评分为自动化流程产物,未经过人工验证,“user discretion is advised”(建议使用者自行判断)。
这一区分的重要性:很多团队会把 Quality 直接当作清洗后的可信度标签使用(如"只保留 Quality > 0.8 的切片"),这在工程上是合理的启发式,但不应在论文中表述为"使用了人工确认的高质量数据"。官方从未声称该评分经过人工审核。
§3.6 标注者资质与一致性
结局标签方面:各参与中心临床团队按 CPC 量表完成功能结局评估。官方公开材料未逐一披露评估者资质、培训流程与评估者间一致性(如 Cohen’s kappa)数值,本词条对此标注为"官方未披露"。
可间接推断的一致性压力:由于 7 家中心中有 2 家采用前瞻性电话随访、5 家采用回顾性病历审查,评估方式本身即存在差异;再加上 CPC 3 与 CPC 4 的边界判定在不同中心间可能不完全一致,机构级标签噪声是客观存在的。论文对划分的描述是"近似保持各变量与标签的单变量分布",这说明官方在划分阶段已关注标签分布均衡,但未提供机构×标签的完整交叉表。
信号质量标签方面:如前所述,质量分完全自动化、无人工标注者介入,因此不存在标注者一致性概念,只存在算法阈值设定的合理性问题。
§3.7 采集与发布周期
采集期:I-CARE 联盟的数据采集跨越 2019 年至 2023 年间(具体入组起止日期官方未逐院披露)。数据集的时间覆盖范围为 2019/2023。
挑战赛发布周期(双阶段设计):
| 阶段 | 起止时间 | 释放内容 | 参赛规模 |
|---|---|---|---|
| 非官方阶段 | 2023-02-10 至 2023-04-24 | 小版本数据(40.3 GB,通道更少、记录截断) | 107 队参与;179 次提交成功、194 次失败 |
| 间歇期 | 2023-04-25 至 2023-06-08 | 不释放新数据 | — |
| 官方阶段 | 2023-06-09 至 2023-08-31 | 大版本数据(2.63 TB,更多通道、完整记录) | 76 队参与;269 次提交成功、313 次失败 |
最终结果:共 111 支团队提交了 982 个算法;58 支团队在隐藏测试集上提交成功;36 支团队满足全部规则并取得排名资格。结果于 2023-10-04 在美国佐治亚州亚特兰大 CinC 2023 闭幕式公布,官方公告页于 2023-10-10 发布。
§3.8 地域覆盖
数据来自 7 家三级医院,覆盖 3 个国家:荷兰(Rijnstate Hospital,阿纳姆;Medisch Spectrum Twente,恩斯赫德)、比利时(Erasme Hospital,布鲁塞尔)、美国(Massachusetts General Hospital、Brigham and Women’s Hospital、Beth Israel Deaconess Medical Center,均位于波士顿;Yale New Haven Hospital,纽黑文)。
地域层面的两点提醒:其一,所有参与机构均为高收入国家的大型三级医院,院前急救体系、目标温度管理(TTM)普及度与神经重症监护资源都处于较高水平,因此该数据集上的模型性能不能直接外推到急救资源受限地区。其二,机构间分布差异是设计上有意保留的难点(一家医院仅入测试集),因此地域覆盖不仅是"样本来源"的描述,更直接决定了评测协议的性质。
§3.9 信号处理规格
| 处理环节 | 官方规格 | 对建模的影响 |
|---|---|---|
| 降采样 | 统一至 100 Hz | 50 Hz 以上内容不可恢复;提取 > 50 Hz 的频谱特征无意义 |
| 分帧 | 按 ROSC 后小时切分 | 时间轴以"小时"为基本单位;跨小时趋势需自行聚合 |
| 段长限制 | 每小时最多保留 5 分钟 | 单小时内的信息仅覆盖约 8.3% 的时间;短时事件可能被漏采 |
| 段选择 | 按自动质量分取最优 | 选择过程本身依赖质量评分,存在自动化偏好 |
| 时间轴定义 | 统一为相对 ROSC 的经过时间 | 便于跨患者对齐;但各患者 EEG 起始时刻不同,覆盖的小时区间不同 |
| 最大时程 | 最多至 ROSC 后 72 小时 | 与官方评分时间点(12/24/48/72 小时)对齐 |
| 存储格式 | WFDB + MATLAB MAT v4 | 需 wfdb 包读取;MAT v4 为旧格式,部分现代工具链需转换 |
§3.10 深度溯源链
第一层:患者与临床流程。 心脏骤停 → 心肺复苏 → 恢复自主循环(ROSC) → 仍处昏迷(GCS ≤ 8) → 进入神经重症监护 → 启动连续 EEG。
第二层:数据采集与处理。 床旁 EEG 采集(19 电极共享蒙太奇) → 降采样至 100 Hz → 按小时切分至最多 ROSC 后 72 小时 → 每小时选质量最优的 5 分钟 → 自动伪迹评分 → 转存 WFDB 格式(MAT v4 信号文件) → 去标识化(年龄 > 89 记为 90,时间轴改写为相对 ROSC)。
第三层:联盟汇总与划分。 7 家医院数据汇入 I-CARE 数据库池(1,020 例) → 按 60%/10%/30% 近似分层划分为训练/验证/测试 → 刻意将其中一家医院整体置于测试集 → 公开训练集 607 例经 PhysioNet 发布。
第四层:挑战赛与长期维护。 非官方阶段小版本(40.3 GB) → 官方阶段大版本(2.63 TB) → 赛后 PhysioNet i-care v1.0 长期公开(607 例) → i-care v2.x 补全多模态 → AWS BDSP 镜像通道。
溯源的实践意义:当模型性能出现异常(例如训练集分数异常高)时,沿这条链回推可以快速定位问题层级——是切片选择机制引入了偏倚,还是划分导致的机构级差异,抑或标签本身的定义口径被误读。
§4 数据结构
§4.0 目录树
PhysioNet i-care v1.0 公开训练集的目录组织大致如下(文件名为示意,实际以官方发布为准):
ICARE_train/
├── ICARE_0001/
│ ├── ICARE_0001.txt # 患者级临床变量(键值对)
│ ├── ICARE_0001.tsv # 伪迹质量评分(Time / Quality 两列)
│ ├── ICARE_0001_00.hea # WFDB 头文件:第 0 小时
│ ├── ICARE_0001_00.mat # 信号矩阵(通道 × 采样点)
│ ├── ICARE_0001_01.hea # 第 1 小时
│ ├── ICARE_0001_01.mat
│ ├── ... # 按小时递增,最多至 ROSC 后 72 小时
│ └── ICARE_0001_47.hea
├── ICARE_0002/
│ └── ...
└── ... # 共 607 个患者目录
结构要点:
- 目录名即患者标识(record_id 形如 ICARE_XXXX);每位患者一个独立目录。
- 每个 EEG 记录对应一对文件(
.hea头文件 +.mat信号文件),文件名后缀的两位数字表示相对 ROSC 的小时序号。 - 患者级临床变量与信号质量评分各占一个独立文件,与信号文件同级存放。
- 不同患者的记录条数不同:EEG 监护时长因人而异,且与结局系统性相关(见 §4.5 与坑点 2)。
§4.1 DAIMS 字段字典
表 A:患者元数据表(ICARE_XXXX.txt)
| 字段名 | 类型 | 取值域/单位 | 含义 | 缺失处理 |
|---|---|---|---|---|
| Age | 整数 | 岁;> 89 统一记为 90 | 患者年龄 | 官方未披露缺失情况 |
| Sex | 枚举文本 | Male / Female | 生理性别 | 官方未披露缺失情况 |
| ROSC | 整数 | 分钟 | 心脏骤停至恢复自主循环的时长 | 官方未披露缺失情况 |
| OHCA | 布尔文本 | True / False | 是否为院外心脏骤停 | 官方未披露缺失情况 |
| VFib | 布尔文本 | True / False | 初始心律是否可电击(True = 可电击) | 官方未披露缺失情况 |
| TTM | 整数或 NaN | 33 / 36 / NaN | 目标温度管理设定温度;NaN 表示未实施 | NaN 为显式缺失编码,表示"未实施 TTM"而非"未知" |
| Outcome | 枚举文本 | Good / Poor | 官方二分类结局标签 | 训练集全部有标注 |
| CPC | 整数 | 1–5 | 原始有序结局标签 | 训练集全部有标注 |
注意:Outcome 与 CPC 是同一信息的两种粒度(CPC 是 Outcome 的上位原始标签)。二者同时出现在标签文件中,若建模时把 CPC 也作为输入特征,将造成直接的答案泄漏。详见坑点 1。
表 B:信号质量表(ICARE_XXXX.tsv)
| 字段名 | 类型 | 取值域/单位 | 含义 | 缺失处理 |
|---|---|---|---|---|
| Time | 整数 | 相对 ROSC 的小时数 | 该小时切片的起始时间戳 | 无缺失 |
| Quality | 浮点 | 0–1 | 自动伪迹质量分;1 = 5 分钟完全无伪迹,0 = 完全污染 | 无缺失 |
表 C:WFDB 头文件字段(ICARE_XXXX_YY.hea)
| 字段名 | 类型 | 含义 |
|---|---|---|
| record_name | 文本 | 记录名(含患者标识与小时序号) |
| fs | 整数 | 采样率,固定为 100(Hz) |
| sig_name | 文本列表 | 通道/导联名称列表 |
| units | 文本 | 信号单位(通常为 µV 或 mV,以头文件声明为准) |
| gain / baseline | 整数 | 数字量到物理量的转换参数 |
| sig_len | 整数 | 采样点数(对应最多 5 分钟 × 100 Hz) |
| fmt | 文本 | 信号存储格式,本数据集为 MAT v4 对应格式标识 |
§4.2 标签分布
全库 1,020 例的结局分布(数据论文口径):
| 结局类别 | 例数 | 占比 | 归入二分 |
|---|---|---|---|
| 死亡(CPC 5) | 603 | 59% | Poor |
| CPC 3–4(严重神经障碍) | 48 | 5% | Poor |
| CPC 1–2(良好恢复) | 369 | 36% | Good |
| 合计 | 1,020 | 100% | — |
由此可得二分类口径下的近似分布:Poor ≈ 64%,Good ≈ 36%,正负类比约 1.8 : 1,属中等程度不平衡。值得强调的是,Poor 组的绝大多数由死亡构成(603/651),CPC 3–4 的存活但严重失能者仅 48 例。这意味着模型在 Poor 类上获得的性能提升,主要来自对死亡风险的识别,而对"存活但严重失能"这一更难、临床上也更需谨慎判断的亚组,样本量非常有限。
微妙的评估后果:官方评分把正类定义为 Poor。在 FPR ≤ 0.05 的约束下,模型实际上被要求做到的是"以极低的代价认定某患者预后不良"。由于 Poor 组占多数(64%),一个永远预测 Poor 的退化模型可以取得很高的准确率与 TPR,但会因为 FPR 约束(在 Good 组上误报比例过高)而在官方指标上得零分。这从设计上就杜绝了"全预测多数类"的作弊路径,是官方指标的一个重要优点。
§4.3 关键统计
| 统计项 | 数值 | 来源 |
|---|---|---|
| 患者总数(全库) | 1,020 例 | 数据论文 / 挑战描述论文 |
| 参与医院数 | 7 家 | 数据论文 |
| EEG 总时长(全库) | 56,676 小时(论文摘要表述为"超过 57,000 小时") | 数据论文精确值 / 论文摘要 |
| 全库原始数据量 | 约 3.9 TB | 数据论文 |
| 公开训练集 | 607 例 | PhysioNet i-care v1.0 页面 |
| 隐藏集 | 413 例(验证约 10%,测试约 30%) | 论文划分说明 |
| 公开训练集下载体积 | 23.7 GB(未压缩)/17.4 GB(ZIP) | PhysioNet i-care v1.0 页面 |
| 采样率 | 100 Hz | PhysioNet i-care v1.0 页面 / 论文 |
| 电极数(论文口径) | 19 个 | 挑战描述论文 2.1 节 |
| 双极导联数(PhysioNet 口径) | 18 个 | PhysioNet i-care v1.0 页面 |
| 每小时最多保留 | 5 分钟 | PhysioNet i-care v1.0 页面 |
| 最大监护时程 | ROSC 后 72 小时 | PhysioNet i-care v1.0 页面 |
| 痫样放电(≥1 Hz,≥1 小时) | 258 例(全库 25%);CPC 1–2 组 19%,CPC 3–5 组 29% | 数据论文 |
| 爆发抑制(≥1 小时) | CPC 1–2 组 207 例(56%);CPC 3–5 组 635 例(97%) | 数据论文 |
| EEG 平均时长(CPC 1) | 53 小时 | 数据论文 |
| EEG 平均时长(CPC 4) | 102 小时 | 数据论文 |
| 参赛团队数 | 111 队,982 个算法 | 挑战描述论文第 3 节 |
| 获排名资格队伍数 | 36 队 | 挑战描述论文第 3 节 |
§4.4 数据层级
本数据集存在四个层次,建模时须明确自己在哪一层操作:
第一层:患者级(Patient)。 每例患者一条主记录,携带临床变量与结局标签(Age、Sex、ROSC、OHCA、VFib、TTM、Outcome、CPC)。这是最粗的粒度,也是划分与交叉验证的正确单位。
第二层:小时级(Hour)。 每位患者有若干条小时记录(文件名后缀为该小时相对 ROSC 的序号),每条最多 5 分钟信号,并对应 ICARE_XXXX.tsv 中的一行质量分。这一层是时序聚合的基本单位。
第三层:切片级(Segment / Record)。 每个 WFDB 记录即一个独立可读的信号单元,含 18 个双极导联 × 最多 300 秒 × 100 Hz 的矩阵。
第四层:样本点级(Sample)。 单个通道的单个采样点,通常不直接作为建模单位,而是通过窗口化(如 10 秒窗)派生出更细的建模单元。
层级关系的工程后果:官方评分的时间点要求(12/24/48/72 小时)本质上要求模型在第二层做因果聚合——12 小时预测只能用前 12 小时的小时记录。任何"用全部小时记录直接做一次池化"的做法都会破坏因果性,虽然可能提升离线分数,但不符合官方协议,也无法在真实的床旁场景中部署。
§4.5 缺失值与结构性缺失
本数据集最值得警惕的缺失形式不是字段为空,而是信息性缺失(informative missingness):
形式一:TTM 的 NaN。 TTM 字段的 NaN 表示"未实施目标温度管理",是对临床处置的如实记录,而非数据丢失。将 NaN 简单填充为 0 或均值会引入错误的临床语义,正确做法是把它编码为一个独立的类别(如"未实施 TTM")。
形式二:记录条数的差异即信息。 每位患者的 EEG 小时记录条数取决于实际监护时长。数据论文明确指出,全库 EEG 平均时长随结局显著变化:CPC 1 组平均 53 小时,CPC 4 组平均 102 小时。也就是说,输入数据的长度本身与结局相关。如果模型把"记录条数"“总时长”"有效小时数"等量作为特征,就可能学到"患者被监护了多久"这一照护强度信号,而非脑功能状态。这种学习到的捷径在测试集上可能仍然有效(因为分布一致),但在真实部署中会随着治疗策略变化而失效。详见坑点 2。
形式三:小时级信号的空缺并非随机。 某一小时没有对应记录,可能是由于设备维护、患者转运、护理操作等原因。官方未提供小时级的缺失原因标注,因此这些空缺的具体机制无法区分。
形式四:质量分的连续性缺失。 质量分越低的切片,其信号越接近噪声。若简单丢弃低质量切片,会造成"质量较高的小时"在样本中被过度代表;若全部保留,则噪声会污染特征统计。官方未给出推荐的质量门槛,这正是需要使用者自行判断的地方(也是官方"user discretion is advised"提示的由来)。
§4.6 时间轴与对齐机制
时间轴的统一定义。 所有 EEG 记录的时间信息统一表示为"相对 ROSC 的经过时间"。这一设计的好处是:跨患者的记录可以在同一时间轴上对齐,便于构造"ROSC 后第 N 小时"这一共同索引;同时它也天然支持官方要求的因果预测(12 小时预测只取相对时间 ≤ 12 的记录)。
各患者覆盖区间并不一致。 由于 EEG 监护的起始时刻(相对 ROSC)与终止时刻都因人而异,不同患者实际覆盖的小时区间差别很大。有的患者可能覆盖第 3 至 40 小时,有的覆盖第 8 至 72 小时。因此"第 12 小时预测"对不同患者而言,可利用的信息量并不相同:对前者,第 12 小时已有约 9 小时数据;对后者,此时可能仅有约 4 小时数据。
工程上的两种对齐策略:
- 按相对小时对齐(推荐):严格以相对 ROSC 的小时数为索引构建特征,与官方协议一致。缺点是需要接受不同患者信息量的天然差异。
- 按记录序号对齐:把每位患者的第 1、2、3…条记录当作序列输入,忽略相对时间的绝对位置。这一做法会破坏因果预测的时间语义,仅在研究"纯序列建模"时考虑,且必须在论文中声明与官方协议不符。
关于时区与夏令时:由于时间轴已归一化为相对经过时间,时区问题不影响建模;但若后续与其他数据源(如电子病历、检验结果)做时间对齐,则必须回到各中心的原始时间戳,而公开训练集不提供这些信息,因此跨源精确对齐在公开数据上无法完成。
§5 划分与使用建议
§5.1 官方划分
官方把全库 1,020 例按约 60% / 10% / 30% 的比例划分为训练集、验证集与测试集:
| 子集 | 比例 | 约当例数 | 是否公开 | 说明 |
|---|---|---|---|---|
| 训练集 | 约 60% | 607 例 | 公开 | PhysioNet i-care v1.0 发布内容 |
| 验证集 | 约 10% | 约 102 例 | 不公开 | 赛期用于参赛者自查,从未释放 |
| 测试集 | 约 30% | 约 306 例 | 不公开 | 决定最终排名,标签从未公开 |
| 合计 | 100% | 1,020 例 | 部分公开 | — |
划分的两项设计特征:
特征一:近似保持单变量分布。 官方说明划分时近似保持了各变量与标签的单变量分布,即 Age、Sex、ROSC、OHCA、VFib、TTM 与 Outcome/CPC 的边际分布在各子集间应大致一致。这意味着官方并不希望通过简单的分布偏移来制造困难。
特征二:刻意保留一家医院仅入测试集。 这是本数据集划分设计中最关键的一点:其中一家参与医院的数据被整体置于测试集,在训练集中完全缺席。这样一来,任何在公开训练集内部表现良好的模型,都必须面对一个"从未见过的机构"的检验。这一设计把跨机构泛化能力从"可选的加分项"变成了"决定名次的核心挑战"。
对使用者的直接启示:由于验证集与测试集均不公开,公开数据使用者无法直接复现官方排行榜的分数。可行的做法是在 607 例公开训练集内部重新划分(见 §5.2 与 §5.4),并明确声明所报分数与官方分数不可直接比较。
§5.2 社区惯例划分
做法一:随机分层 5 折交叉验证。 以患者为单位、按 Outcome 标签分层随机划分为 5 折,轮流留一折作验证。优点是简单、样本利用率高;缺点是忽略机构级差异,分数会系统性乐观。
做法二:留一中心交叉验证(Leave-One-Hospital-Out)。 若能获知各患者的机构归属,可每次留出一家医院作为验证集。这一做法最接近官方协议的难度设定,是研究域泛化时的首选。注意公开训练集中各医院样本量并不均衡,留一中心可能造成某些折验证样本过少。
做法三:按时间或入组批次划分。 若关注临床流程随时间变化带来的漂移,可按入组时间排序后切分。但公开训练集未提供入组时间戳,这一做法在公开数据上无法严格实施。
普遍建议:若论文目标是与官方排行榜对话,应至少同时报告"随机分层 5 折"与"留一中心"两套结果;若只报告随机分层结果,须在局限部分说明该分数高于官方协议下的预期表现。
§5.3 泄漏风险(重点)
本数据集存在多种泄漏风险,按严重程度从高到低排列:
风险一(致命):把 CPC 当作输入特征。 患者元数据文件中同时包含 Outcome(Good/Poor)与 CPC(1–5)。CPC 是 Outcome 的上位原始标签——CPC 1–2 恰好对应 Good,CPC 3–5 恰好对应 Poor。若解析元数据时用了"除 Outcome 以外的所有列"这类写法,CPC 会静默进入特征矩阵。后果是训练集与验证集上分数接近完美,而一旦移除该列立刻崩塌。这类错误在挑战赛中极为常见。
风险二(严重):用全时程数据预测早期时间点。 官方要求在 12/24/48/72 小时分别给出因果预测。若模型在预测 12 小时结局时使用了全部 72 小时的数据,就构成了时间维度的标签泄漏。这类模型在离线评测中分数虚高,在真实床旁场景下根本无法使用。
风险三(严重):时长特征携带结局信息。 如 §4.5 所述,EEG 记录时长与结局系统性相关(CPC 1 平均 53 小时 vs CPC 4 平均 102 小时)。若把记录条数、总时长、有效小时数、最末记录的小时序号等作为特征,模型可能学到的是"照护强度"而非脑功能。这类泄漏不会在测试集上暴露(分布一致),因此最容易被忽视,也最危险。
风险四(中等):同一患者的记录跨折。 若先按记录(小时切片)做随机划分再聚合,同一患者的多个小时切片会同时出现在训练与验证折中,造成患者级泄漏。正确的划分单位永远是患者,不是记录。
风险五(中等):与后续版本混用。 若把 i-care v1.0(607 例)与 v2.x 的数据混合使用,需先确认两版之间的患者重叠关系;若 v2.x 包含 v1.0 的患者且额外提供更多信息(如多模态信号),则可能引入信息不对等。
风险六(低但需声明):外部数据预训练。 使用大规模公开生理信号做自监督预训练本身是合法的,但应在论文中明确声明预训练语料范围,避免被怀疑使用了含 I-CARE 隐藏集信息的模型或检查点。
§5.4 交叉验证建议
基本配置:划分单位为患者;按 Outcome 二分类标签分层(保证每折正负比例接近全库的 64:36);5 折(607 例下单折约 121 例,正类约 78 例、负类约 43 例,足以给出稳定的 TPR 估计);建议重复 3–5 次不同随机种子并报告均值与标准差(冠军方案报告的五折平均 Challenge score 为 0.651 ± 0.077,可作为量级参考)。
指标选择:主指标必须与官方口径一致,即 TPR at FPR ≤ 0.05。若在内部交叉验证中不施加逐医院约束(公开训练集通常缺少机构标识),至少应按"全局 FPR ≤ 0.05 下的最大 TPR"计算,并声明与官方逐医院口径的差异。辅助指标可报告 AUROC、AUPRC、Accuracy、F-measure、CPC MSE/MAE,但必须明确它们不决定官方名次。特别提醒:本数据集中 AUROC 普遍显著高于官方 Challenge score(如冠军 AIrhythm 测试集 AUROC 0.916 vs Challenge score 0.792),若论文只报 AUROC 会系统性高估模型在官方协议下的竞争力。
阈值选择的纪律:最常见的自欺方式是"在验证集上挑一个最好的阈值再报告该阈值下的分数"。正确做法是:在每个交叉验证折内部独立地按 FPR ≤ 0.05 的规则确定阈值,用该阈值在留出折上评估;或采用嵌套交叉验证。阈值本身也是模型输出的一部分,不能与评估集共享。
样本量与现实感:607 例在深度学习语境下并不算大。以 5 折为例,训练折约 486 例。若模型参数量达到百万级且输入为多小时多通道信号,过拟合风险很高。官方排行榜数据也印证了这一点:多数队伍的训练集 Challenge score 与验证集分数差距超过 0.25,冠军队的训练集 0.992 与测试集 0.792 之间也有约 0.2 的落差。在这类数据规模上,特征工程与稳健的正则化通常比盲目加参数更有效。
§5.5 外部验证建议
由于官方测试集不公开,真正意义上的"外部验证"在公开数据上无法完成。可行的替代方案有三条:
方案一:留一中心验证(最接近官方协议)。 在公开训练集内部按机构划分,每次留出一家医院。这一做法模拟了官方"整家医院入测试集"的设定,结果应作为论文中最保守、最可信的性能估计。
方案二:跨版本验证。 使用 PhysioNet i-care v2.x 中新增的记录(若与 v1.0 不重叠)作为外部验证集,检验模型在版本迭代后的稳定性。使用前必须核对两版的患者重叠关系。
方案三:跨队列验证。 在条件允许时,把模型迁移到完全独立的昏迷预后队列(如其他机构的连续 EEG 数据库)上评估。这是最有说服力的外部验证形式,但需要额外的数据获取流程与伦理审批。
必须声明的三点:其一,任何在公开训练集内部得到的分数都不能等同于官方测试集分数;其二,官方排行榜分数是 2023 年赛后状态下用隐藏测试集得到的,不具备可复现性(隐藏集永不释放),引用时应注明;其三,若模型声称可用于临床,必须在论文中说明其外部验证的机构数、样本量与结局定义一致性。
§6 AI 就绪指南
§6.0 云端快速启动
若本地磁盘紧张或不希望下载 TB 级数据,可优先在云端环境中启动。建议的起步流程:
第一步:确认数据通道。 PhysioNet i-care v1.0(607 例,23.7 GB 未压缩)适合本地或小规格云主机;若计划在官方阶段大版本(2.63 TB)上工作,或希望避免本地搬运,可评估 AWS Open Data 的 BDSP 受控通道(S3 access point,需遵守 BDSP Restricted Health Data License 1.0.0)。
第二步:环境准备。
# 推荐 Python 3.10+ 环境
python -m venv cinc2023
source cinc2023/bin/activate
pip install wfdb numpy scipy pandas scikit-learn torch lightgbm matplotlib
第三步:获取官方示例代码。
git clone https://github.com/physionetchallenges/python-example-2023
git clone https://github.com/physionetchallenges/evaluation-2023
第四步:先跑通小样本再全量。 强烈建议先取 3–5 例患者跑通"读取 → 特征 → 保存"的完整链路,确认 WFDB 读取与 MAT v4 解析正常后,再对 607 例做全量处理。直接全量运行往往会在中途因路径、内存或格式问题失败。
第五步:固定随机种子与版本记录。 记录 Python 版本、wfdb 版本、numpy/scipy 版本与下载数据的版本号(i-care v1.0),这是后续复现的前提。
资源估算参考:607 例 × 最多 72 小时 × 5 分钟 × 100 Hz × 18 导联,若以 float32 全部载入内存约需数百 GB 量级,不可一次性载入。实际做法是逐患者流式读取、在小时内提取特征后立即释放原始信号,仅保留特征矩阵;特征矩阵(607 例 × 数十至数百维)完全可以放进内存。
§6.1 快速上手
下面给出一个最小可用流程:读取一位患者的全部小时记录、提取最基础的频谱特征、并输出标签。代码使用 wfdb 官方包,兼容 PhysioNet i-care v1.0 的目录结构。
import os, glob
import numpy as np
import wfdb
from scipy import signal as sp_signal
def parse_patient_metadata(patient_dir):
"""解析 ICARE_XXXX.txt 中的键值对临床变量。"""
pid = os.path.basename(patient_dir)
meta = {}
with open(os.path.join(patient_dir, f"{pid}.txt"), encoding="utf-8") as f:
for line in f:
if ":" in line:
key, value = line.strip().split(":", 1)
meta[key.strip()] = value.strip()
return meta
def load_hourly_records(patient_dir):
"""列出该患者全部小时级 WFDB 记录(去 .hea 扩展名,按文件名即相对小时升序)。"""
return sorted(p[:-4] for p in glob.glob(os.path.join(patient_dir, "*.hea")))
def bandpower_per_channel(sig, fs=100, bands=((0.5, 4), (4, 8), (8, 13), (13, 30))):
"""对(时间 × 通道)信号计算各频段相对功率,返回(频段数 × 通道数)矩阵。"""
freqs, psd = sp_signal.welch(sig, fs=fs, axis=0, nperseg=min(1024, sig.shape[0]))
total = psd.sum(axis=0) + 1e-12
return np.stack([
psd[(freqs >= low) & (freqs < high)].sum(axis=0) / total for low, high in bands
], axis=0)
逐小时特征提取并做因果聚合(关键:预测第 H 小时时只能使用相对时间 ≤ H 的记录):
def extract_hourly_features(patient_dir, max_hour=72):
"""返回(小时序号数组,逐小时特征矩阵);小时序号源自文件名末尾数字。"""
hours, feats = [], []
for rec_path in load_hourly_records(patient_dir):
try:
hour_idx = int(os.path.basename(rec_path).rsplit("_", 1)[1])
if hour_idx > max_hour:
continue
rec = wfdb.rdrecord(rec_path)
except Exception:
continue
sig = np.nan_to_num(np.asarray(rec.p_signal, dtype=np.float64), nan=0.0)
if sig.ndim != 2 or sig.shape[0] < 100:
continue
bp = bandpower_per_channel(sig, fs=int(rec.fs))
feats.append(np.concatenate([bp.mean(axis=1), bp.std(axis=1)]))
hours.append(hour_idx)
if not feats:
return np.array([]), np.array([])
order = np.argsort(hours)
return np.array(hours)[order], np.stack(feats, axis=0)[order]
def causal_aggregate(hours, feats, cutoff):
"""因果聚合:仅使用 hour <= cutoff 的记录,无数据时返回 None。"""
mask = hours <= cutoff
return feats[mask].mean(axis=0) if mask.sum() else None
组装一位患者的样本并在四个时间点输出(注意:绝对不能把 CPC 放进特征,它是 Outcome 的上位标签,见坑点 1;TTM 的 NaN 表示"未实施",用独立指示位表达而非填 0):
def build_patient_sample(patient_dir):
meta = parse_patient_metadata(patient_dir)
clin = np.array([
float(meta.get("Age", np.nan)),
1.0 if meta.get("Sex", "").lower() == "male" else 0.0,
float(meta.get("ROSC", np.nan)),
1.0 if meta.get("OHCA", "").lower() == "true" else 0.0,
1.0 if meta.get("VFib", "").lower() == "true" else 0.0,
1.0 if meta.get("TTM", "nan").lower() == "nan" else 0.0,
], dtype=np.float64)
hours, feats = extract_hourly_features(patient_dir)
rows = {
cutoff: (lambda a: None if a is None else np.concatenate([clin, a]))(
causal_aggregate(hours, feats, cutoff))
for cutoff in (12, 24, 48, 72)
}
label = 1 if meta.get("Outcome", "").strip().lower() == "poor" else 0
return rows, label
最小验证:跑全量前务必先对 3 例患者执行 build_patient_sample,确认 rows[72] 不是 None、标签解析正确、特征维度一致——这几步能在几分钟内排除绝大多数低级错误。
§6.2 数据获取
通道一:PhysioNet 直接下载(推荐)。 访问 PhysioNet 的 I-CARE v1.0 页面(地址见 §9.1),下载压缩包(约 17.4 GB,解压后约 23.7 GB)。使用前须阅读并遵守发布条款:不得转发数据;在 Challenge 结束前不得发表或分享任何使用该数据的成果(CinC 会议除外)。
# 实际文件名与地址以官方页面为准
wget -c "https://physionet.org/static/published-projects/i-care/1.0/<archive-name>.zip"
unzip -q <archive-name>.zip -d ICARE_train_src
通道二:AWS Open Data(受控访问)。 该副本由 Brain Data Science Platform(BDSP)管理,许可为 BDSP Restricted Health Data License 1.0.0,通过 S3 access point 提供(arn:aws:s3:us-east-1:184438910517:accesspoint/bdsp-icare-access-point/ICARE_train/)。使用前请阅读 BDSP 的许可条款与申请流程,注意其口径与 PhysioNet 不同。
通道三:官方示例代码仓库。 python-example-2023(Python 提交模板)、matlab-example-2023(MATLAB 版本)、evaluation-2023(含 compute_challenge_score 评分脚本)、bdsp-core/icare-dl(伪迹处理参考实现)。
下载后必做检查:(1) 患者目录数是否为 607;(2) 每个目录是否同时具备 .txt 与 .tsv 文件;(3) 随机抽 5 例用 wfdb.rdrecord() 读取最早与最晚记录,确认通道数与采样率符合预期(100 Hz)。
§6.3 预处理全流程
推荐的预处理管线如下,每一环都对应一个具体的工程决策。
环节 1:读取与校验。 逐患者读取全部小时记录,跳过读取失败的记录并记录日志——不要静默跳过,失败数量本身是数据质量指标。
环节 2:缺失与异常值处理。 用 np.nan_to_num 或插值处理 NaN;对幅度异常(远超生理范围)的片段优先丢弃而非截断,因为截断会制造虚假的高幅振荡。
环节 3:滤波。 0.5 Hz 高通去除基线漂移;45 Hz 低通抑制工频与高频噪声。注意采样率为 100 Hz,Nyquist 上限 50 Hz,因此不要设置 60 Hz 或 100 Hz 的滤波参数(见坑点 8)。
from scipy import signal as sp_signal
def bandpass_filter(sig, fs=100, low=0.5, high=45.0, order=4):
"""零相位带通滤波,输入(时间 × 通道)。"""
nyq = fs / 2.0
b, a = sp_signal.butter(order, [low / nyq, high / nyq], btype="band")
return sp_signal.filtfilt(b, a, sig, axis=0)
环节 4:重参考。 本数据集提供双极导联,通常不再做重参考;若把信号重建为参考电极形式,须明确说明重建方式(如共同平均参考 CAR)。
环节 5:分窗与特征提取。 在每小时切片内按 10 秒窗滑动,对每窗提取时域(均值、方差、偏度、峰度、过零率、Hjorth 参数)、频域(各频段相对/绝对功率、频谱熵、谱边缘频率)、时频(小波或 STFT 能量占比)与连接性(相干、PLI、wPLI)特征。冠军方案 AIrhythm 即走此路线:362 个 EEG 专家特征 + 16 个 ECG 心率变异性特征。
环节 6:跨小时聚合(必须因果)。 对第 H 小时的预测只聚合 hour ≤ H 的窗口,方式可选均值、最大值、分位数或注意力加权。绝对不要在聚合时使用未来小时的统计量(如全局均值归一化)——看似无害的全局统计量会把未来信息泄漏到早期预测中。
环节 7:标准化。 推荐按患者做 z-score,或用训练集统计量做全局标准化。取舍在于:按患者标准化更抗个体差异,但会抹除与结局相关的绝对幅度信息(如整体背景抑制);全局标准化保留绝对幅度,但受个体差异干扰。建议两种都试,并把选择依据写进论文。
环节 8:质量过滤。 基于 Quality 列决定保留阈值,建议把阈值作为超参数在交叉验证中搜索,而不是凭经验拍一个 0.8。注意过滤会缩短有效时长,从而与坑点 2 的时长偏倚耦合——过滤越狠,"有效小时数"越可能携带照护强度信息。
环节 9:标签处理。 从 Outcome 读取二分类标签,从 CPC 读取有序标签但仅用作回归/序数分类目标,绝不作为分类任务的输入。
环节 10:缓存。 特征提取是整条管线中最耗时的一步,建议把特征矩阵存为 parquet/npz,并记录数据版本与代码提交哈希,避免每次实验重跑。
§6.4 PyTorch DataLoader
由于不同患者的记录条数不同,第二维是变长的。下面给出一个以"患者级特征序列"为输入的 Dataset 实现,支持变长序列与四个时间点的因果截断。
import os, glob
import numpy as np
import torch
from torch.utils.data import Dataset, DataLoader
from torch.nn.utils.rnn import pad_sequence
class ICARESequenceDataset(Dataset):
"""患者级小时特征序列数据集:每个 .npz 含 feats (T,D)、hours (T,)、label ()、clin (6,)。"""
def __init__(self, feature_dir, cutoff=72, patient_ids=None):
self.feature_dir, self.cutoff = feature_dir, cutoff
if patient_ids is None:
patient_ids = sorted(
os.path.basename(p)[:-4] for p in glob.glob(os.path.join(feature_dir, "*.npz")))
self.patient_ids = list(patient_ids)
def __len__(self):
return len(self.patient_ids)
def __getitem__(self, idx):
pid = self.patient_ids[idx]
data = np.load(os.path.join(self.feature_dir, f"{pid}.npz"))
mask = data["hours"] <= self.cutoff # 因果截断:仅保留 hour <= cutoff
feats = data["feats"][mask]
if feats.shape[0] == 0:
feats = np.zeros((1, data["feats"].shape[1]), dtype=np.float32)
valid = 0
else:
valid = feats.shape[0]
return {
"pid": pid,
"feats": torch.as_tensor(feats, dtype=torch.float32),
"clin": torch.as_tensor(data["clin"], dtype=torch.float32),
"label": torch.as_tensor(int(data["label"]), dtype=torch.long),
"valid_len": torch.as_tensor(valid, dtype=torch.long),
}
def collate_fn(batch):
"""把变长序列 pad 到同一长度;valid_len 用于构造掩码。"""
padded = pad_sequence([b["feats"] for b in batch], batch_first=True) # (B, T_max, D)
lengths = torch.stack([b["valid_len"] for b in batch]) # (B,)
mask = torch.arange(padded.shape[1]).unsqueeze(0) < lengths.unsqueeze(1)
return {
"pids": [b["pid"] for b in batch],
"feats": padded,
"clin": torch.stack([b["clin"] for b in batch]),
"labels": torch.stack([b["label"] for b in batch]),
"mask": mask,
}
def build_loaders(feature_dir, train_ids, val_ids, cutoff=72, batch_size=16, num_workers=4):
make = lambda ids, shuffle: DataLoader(
ICARESequenceDataset(feature_dir, cutoff, ids), batch_size=batch_size,
shuffle=shuffle, num_workers=num_workers, collate_fn=collate_fn, pin_memory=True,
)
return make(train_ids, True), make(val_ids, False)
关于四个时间点的处理方式:推荐为每个时间点(12/24/48/72)分别构造一个 Dataset(通过 cutoff 参数控制),而不是在一个批次里混合不同时间点。这样每份数据只对应一个明确的因果约束,训练脚本可以直接按时间点循环,评测时也能自然地产出四个时间点的分数。虽然训练成本乘以四,但逻辑清晰、不易出错。
配套的模型骨架(示意,可根据任务替换):
import torch.nn as nn
class ComaPrognosisNet(nn.Module):
"""GRU 编码小时级序列 + 临床变量拼接 + 双头输出(二分类 logit + CPC 回归)。"""
def __init__(self, feat_dim, clin_dim=6, hidden=128, num_layers=2, dropout=0.3):
super().__init__()
self.gru = nn.GRU(feat_dim, hidden, num_layers=num_layers, batch_first=True,
bidirectional=False, dropout=dropout if num_layers > 1 else 0.0)
self.clin_mlp = nn.Sequential(nn.Linear(clin_dim, 32), nn.ReLU(), nn.Dropout(dropout))
self.head_cls = nn.Linear(hidden + 32, 1) # Poor 的 logit
self.head_cpc = nn.Linear(hidden + 32, 1) # CPC 1–5 的连续预测
def forward(self, feats, clin, mask):
lengths = mask.sum(dim=1).clamp(min=1).cpu()
packed = nn.utils.rnn.pack_padded_sequence(
feats, lengths, batch_first=True, enforce_sorted=False)
_, hidden = self.gru(packed)
z = torch.cat([hidden[-1], self.clin_mlp(clin)], dim=1)
return self.head_cls(z).squeeze(-1), self.head_cpc(z).squeeze(-1)
训练循环中的两个要点:其一,二分类头输出 logit,用 BCEWithLogitsLoss 训练;CPC 回归头用 MSELoss 训练,两者以加权和组合(权重需在交叉验证中确定)。其二,不要用固定阈值 0.5 做评估——官方指标要求按 FPR ≤ 0.05 确定阈值,因此评估函数必须做阈值扫描(见 §6.9)。
§6.5 坑点 8 个
⚠️ 坑点 1:CPC 与 Outcome 并存于标签文件,CPC 会静默泄漏答案(分类:数据泄漏)
问题:元数据
ICARE_XXXX.txt同时提供Outcome(Good/Poor)与CPC(1–5),而CPC正是Outcome的原始上位标签(1–2 对应 Good,3–5 对应 Poor)。只要解析时用了"整表读入后丢弃 Outcome 一列"或"取所有数值列"的写法,CPC就会进入特征矩阵。
症状:训练与交叉验证分数高得不真实(Challenge score 逼近 0.95–1.0,AUROC 超 0.99),移除该列后性能断崖式下跌。
解决:1. 简单方法——白名单式解析元数据,只取 Age、Sex、ROSC、OHCA、VFib、TTM 六列,Outcome与CPC单独存放。2. 进阶方法——加载层加断言,若特征矩阵与标签存在 |r| > 0.99 的列立即抛错中断训练。3. SOTA 方法——把CPC仅用于辅助序数回归头,与主分类头共享表征但显式断开输入通路,并在模型卡记录该设计。
参考:PhysioNet i-care v1.0 字段说明;官方 Python 示例仓库
⚠️ 坑点 2:EEG 记录时长与结局强耦合,模型会学到"照护强度"而非脑功能(分类:偏倚陷阱)
问题:全库 EEG 平均时长随结局系统性变化(CPC 1 组平均 53 小时,CPC 4 组平均 102 小时)。因此"记录条数"“总时长”“最晚小时序号"这类量本身携带结局信息,把它们当特征的模型在部分程度上只是在预测"患者被监护了多久”。
症状:测试集表现良好但换院区后明显退化;特征重要性中"记录条数""总时长"位居前列。
解决:1. 简单方法——禁用一切与时长、记录数、小时序号相关的特征,只用信号派生特征与固定临床变量。2. 进阶方法——把时长作为已知混杂因素显式建模,用时长对特征做残差化,或采用混杂因素隔离交叉验证(冠军 AIrhythm 即如此)。3. SOTA 方法——构造时序不变的因果表征,用对抗式域判别器惩罚"可预测时长"的表征成分,或施加时长均衡重加权。
参考:数据论文 Crit Care Med 2023;51(12):1802-1811;BDSP icare-dl
⚠️ 坑点 3:官方评分逐家医院取阈值,用全局阈值会系统性失分(分类:评估误用)
问题:官方 Challenge score 对每一家医院分别取满足 FPR ≤ 0.05 的最大阈值,再汇总各院 TP/FP/FN/TN 计算 TPR。习惯性地在全测试集上扫一个全局阈值,会得到不同的分数,且在机构分布差异大的测试集上系统性偏低。
症状:自算分数与官方排行榜对不上;跨机构重采样后排名剧烈波动。
解决:1. 简单方法——直接调用官方evaluate_model中的compute_challenge_score,不要本地重写评分逻辑。2. 进阶方法——按机构分组各自在 FPR ≤ 0.05 约束下取阈值再合并混淆矩阵;若缺机构标识,须声明使用了全局近似口径。3. SOTA 方法——把阈值选择纳入训练目标(直方图分箱损失、排序损失),使概率分布天然适配低 FPR 区间。
参考:官方评分脚本仓库
⚠️ 坑点 4:自实现预言偏倚让 Poor 标签含主观成分(分类:标签理解)
问题:Poor 结局部分由"撤除生命支持治疗"这一决策导致,而该决策本身依赖临床预后判断。标签因此不是纯生物学终点,而带有决策反射性——模型若拟合良好,可能只是在复现既往临床团队的判断模式(含其中的偏差)。
症状:模型在"是否被撤除治疗"这一未观测变量上隐式拟合良好;不同中心间表现差异大(各中心撤除门槛不同)。
解决:1. 简单方法——在局限部分显式声明该偏倚,避免"预测死亡"这类表述,改用"预测 Poor 结局(CPC 3–5)“。2. 进阶方法——报告按机构的性能分解,检验模型是否在撤除门槛较严的中心上更好;做"排除早期撤除治疗患者"的敏感性分析。3. SOTA 方法——构建含未观测混杂的因果图,用工具变量或 E-value 量化自实现预言对性能估计的影响;模型卡中写明"不得用于驱动撤除生命支持的决策”。
参考:挑战描述论文 DOI 10.22489/CinC.2023.019;数据论文 DOI 10.1097/CCM.0000000000006074
⚠️ 坑点 5:伪迹质量分为自动化产物、未经人工验证(分类:预处理陷阱)
问题:
ICARE_XXXX.tsv中的Quality(0–1)由自动伪迹筛查生成,基于每 10 秒小段对五类伪迹(平坦信号、极端高低值、肌电伪迹、非生理频谱、幅度变化过快)的判定汇总。官方明确提示该评分未经人工验证,“user discretion is advised”。
症状:高 Quality 切片中仍见明显肌电或电极伪迹;过滤阈值微调导致性能大幅波动。
解决:1. 简单方法——把 Quality 门槛当超参数在交叉验证中搜索(0.5 / 0.7 / 0.8 / 0.9),并写明为"基于自动化质量分的筛选"。2. 进阶方法——在 Quality 之外增加独立质量指标(通道间方差、高频能量占比、稳健幅度分位数)交叉校验。3. SOTA 方法——用 Quality 作软标签训练弱监督伪迹判别器,或采用质量感知注意力机制,让模型自行降低低质量切片权重而不硬性丢弃。
参考:PhysioNet i-care v1.0 页面质量分说明;BDSP icare-dl 仓库
⚠️ 坑点 6:训练集 Challenge score 可达 1.000,泛化落差被严重低估(分类:评估误用)
问题:官方排行榜显示多支队伍的训练集分数远高于验证集与测试集。最极端的是亚军 ComaToss:训练集 Challenge score 1.000(AUPRC 1.000、AUROC 0.999),测试集仅 0.787,落差超 0.2。这在此类小规模、高维、多中心数据上是常态。
症状:训练集分数接近满分而验证集腰斩;不同随机种子下测试分数波动大。
解决:1. 简单方法——一律以交叉验证的留出折分数做模型选择,训练集分数只用于诊断过拟合,绝不作性能报告。2. 进阶方法——采用嵌套交叉验证(内层选超参、外层估性能),并强制复杂度上限(限制参数量、加大 dropout 与权重衰减、优先树模型而非深层网络)。3. SOTA 方法——走"专家特征 + 树模型 + 堆叠集成"的轻量路线,冠军 AIrhythm 即如此(362 个 EEG 特征 + 16 个 ECG HRV 特征 + CatBoost 与堆叠集成),并如实报告 5 折 0.651 ± 0.077 这一显著低于其训练集 0.992 的数字。
参考:官方结果页与排行榜
⚠️ 坑点 7:官方只释放 607/1,020 例,宣称"使用完整 I-CARE"属事实错误(分类:工程陷阱)
问题:PhysioNet i-care v1.0 只含全库 1,020 例中的 607 例公开训练集,其余 413 例从未释放。论文写成"在 I-CARE 的 1,020 例上训练"属于事实性错误。
症状:审稿人要求澄清数据规模;读者无法复现所报数字;与官方排行榜的比较失去基础。
解决:1. 简单方法——明确写为"使用 PhysioNet 公开发布的 I-CARE v1.0 训练子集(607 例)",并同时给出数据集 DOI 与版本号。2. 进阶方法——附数据流表,说明从 1,020 例到 607 例的筛选路径与各阶段标签分布;若用 v2.x,补充说明与 v1.0 的患者重叠关系。3. SOTA 方法——用公开数据内部模拟隐藏集划分(留一中心),给出性能区间估计而非单点数字。
参考:PhysioNet i-care v1.0 页面;数据论文 DOI 10.1097/CCM.0000000000006074
⚠️ 坑点 8:100 Hz 降采样后高频信息已丢失,高频特征无意义(分类:预处理陷阱)
问题:所有 EEG 统一降采样至 100 Hz,Nyquist 上限 50 Hz。任何针对 50 Hz 以上频段的特征(60–80 Hz 高频、HFO 80–500 Hz、肌电高频成分)都是数值噪声或混叠产物;设置 60 Hz 或 100 Hz 工频陷波同样是错误的。
症状:频谱在 50 Hz 附近出现异常能量(混叠折叠);高频特征无区分度;加入"高频振荡"特征后性能无提升甚至下降。
解决:1. 简单方法——频段严格限制在 0.5–45 Hz(delta 0.5–4、theta 4–8、alpha 8–13、beta 13–30、gamma 30–45),滤波不超过 45 Hz。2. 进阶方法——特征提取前显式加 45 Hz 低通抗混叠,并在论文中声明有效带宽。3. SOTA 方法——直接用 100 Hz 波形训练端到端时序模型(1D CNN、Transformer),让模型自学有效带宽内表征,并把采样率作为模型元信息显式记录。
参考:PhysioNet i-care v1.0 页面(采样率说明);挑战描述论文 2.1 节
§6.6 数据增强
在 607 例的规模下,数据增强对抑制过拟合有实际价值。可用策略按推荐度排列:
策略一:小时级重采样(推荐)。 每位患者有若干小时切片,训练时随机采样固定数量的小时(如每次抽 12 条),使不同 epoch 看到不同的时间子集。这不改变标签,却能显著增加输入多样性,同时天然弱化"记录条数"这一时长信号的影响(与坑点 2 呼应)。
策略二:时间窗抖动。 在每个 5 分钟切片内随机选取不同的 10 秒窗起点或窗组合,构造略有差异的样本。
策略三:通道丢弃(Channel Dropout)。 随机丢弃 1–3 个导联,模拟电极接触不良或单通道失效;实际监护中个别电极脱落非常常见。
策略四:幅度缩放(谨慎)。 对信号施加 ±10% 左右的随机增益。需谨慎使用,因为绝对幅度本身可能携带预后信息(背景抑制导致低幅),过度扰动会破坏这一信号。
策略五:加性噪声。 叠加低幅高斯白噪声或真实静息段噪声,提升抗噪能力。
需避免的增强:时间反转(脑电的时序演化方向具有生理含义,反转会破坏预后相关的动态趋势)、大幅度频率搬移(会破坏频段与临床征象的对应关系)、以及任何形式的跨患者信号混叠(会制造不存在的生理模式)。
重要的平衡提醒:增强只能缓解过拟合,不能解决样本量不足的根本问题。若核心结论依赖小幅度的性能提升(如 0.01–0.02),应通过多随机种子重复实验给出置信区间,避免把噪声当成改进。
§6.7 模型推荐
按数据规模与任务特点,推荐三类路线:
路线一:专家特征 + 梯度提升树(首推,与冠军路线一致)。
提取 EEG 的时域、频域、时频、连接性特征(数十至数百维)与患者级临床变量,输入 LightGBM / XGBoost / CatBoost。优点:在数百例规模上不易过拟合、训练快、可解释性好(特征重要性可直接用于临床讨论)、对缺失与异常值稳健。冠军 AIrhythm 采用的即为此路线(362 个 EEG 特征 + 16 个 ECG HRV 特征 + CatBoost 与堆叠集成)。
路线二:1D CNN / TCN 端到端波形建模。
直接以 100 Hz 波形为输入,用 1D 卷积或时序卷积网络提取表征。优点是无需手工设计特征;缺点是在 607 例上容易过拟合,需强正则化与充分的数据增强。建议配合预训练(在公开的大规模 EEG 上做自监督预训练后再微调)。
路线三:序列模型聚合小时级表征。
先用 CNN 提取单个小时切片的表征,再用 GRU / LSTM / Transformer 在小时维度做时序聚合(本词条 §6.4 给出的 ComaPrognosisNet 即为此路线),最后接二分类头与 CPC 回归头。这一路线天然契合官方的因果预测协议,也便于可视化"模型在第 12/24/48/72 小时判断如何变化"。
不推荐的路线:把患者当作 18 × 30000 的巨型张量一次性输入全连接网络(参数量爆炸且无时序归纳偏置);以及对超参数做大规模自动搜索(在 607 例上极易过拟合验证集,与本数据集坑点 6 描述的泛化落差同源)。
§6.8 硬件需求
| 任务阶段 | 最低配置 | 推荐配置 | 备注 |
|---|---|---|---|
| 数据下载与存储 | 30 GB 可用磁盘(SSD 优先) | 60 GB 以上 SSD | 解压后 23.7 GB,加上中间产物需留余量 |
| 特征提取(CPU 为主) | 4 核 CPU、16 GB 内存 | 16 核以上、32 GB 内存 | 瓶颈在 WFDB 读取与滤波器计算,可多进程并行到患者级 |
| 专家特征 + 树模型训练 | 8 核 CPU、16 GB 内存 | 16 核以上、32 GB 内存 | 无需 GPU;特征矩阵可完全放入内存 |
| 1D CNN / 序列模型训练 | 单张 8 GB 显存 GPU | 单张 16–24 GB 显存 GPU | 按小时切片流式读取,避免全量驻留显存 |
| 推理与评估 | 4 核 CPU、8 GB 内存 | — | 官方评分脚本为纯 CPU 计算 |
显存与 IO 的取舍建议:由于原始信号体量大而有效信息集中在每小时 5 分钟内,推荐采用"离线提取特征 → 训练时只读特征"的两段式流程。若坚持端到端波形训练,则应使用 num_workers > 0 的多进程加载配合 pin_memory=True,并考虑把常用切片预处理后缓存为内存映射文件(.npy + mmap_mode),避免每个 epoch 重复解码 MAT v4。
§6.9 评估指标代码
官方 Challenge score 的核心逻辑是:对每家医院 h,取满足 FPRθ ≤ α = 0.05 的最大阈值 θ;汇总所有医院的混淆矩阵后计算 TPR。下面的实现严格遵循这一口径,可直接用于本地评估。
import numpy as np
def compute_challenge_score(labels, probabilities, hospitals, alpha=0.05):
"""官方 Challenge score:逐家医院约束 FPR <= alpha 后汇总的 TPR。
labels: 1 表示 Poor(正类),0 表示 Good;hospitals: 每例所属机构标识。
返回 (score, thresholds),thresholds 为各机构实际选用的阈值。
"""
labels = np.asarray(labels).astype(int)
probabilities = np.asarray(probabilities, dtype=float)
hospitals = np.asarray(hospitals)
tp_total = fp_total = fn_total = tn_total = 0
chosen = {}
for hosp in np.unique(hospitals):
idx = hospitals == hosp
y, p = labels[idx], probabilities[idx]
if y.size == 0:
continue
candidates = np.unique(np.concatenate([np.array([-np.inf]), p, np.array([np.inf])]))
best_tpr, best_thr = 0.0, np.inf
for thr in candidates:
yhat = (p >= thr).astype(int)
fp = int(((yhat == 1) & (y == 0)).sum())
tn = int(((yhat == 0) & (y == 0)).sum())
fn = int(((yhat == 0) & (y == 1)).sum())
tp = int(((yhat == 1) & (y == 1)).sum())
denom_fpr = fp + tn
if (fp / denom_fpr if denom_fpr > 0 else 0.0) > alpha:
continue
denom_tpr = tp + fn
tpr = tp / denom_tpr if denom_tpr > 0 else 0.0
if tpr > best_tpr:
best_tpr, best_thr = tpr, thr
# 用该机构选出的阈值重新统计混淆矩阵并汇总
yhat = (p >= best_thr).astype(int)
tp_total += int(((yhat == 1) & (y == 1)).sum())
fp_total += int(((yhat == 1) & (y == 0)).sum())
fn_total += int(((yhat == 0) & (y == 1)).sum())
tn_total += int(((yhat == 0) & (y == 0)).sum())
chosen[str(hosp)] = float(best_thr)
denom = fp_total + fn_total
return (tp_total / denom if denom > 0 else 0.0), chosen
辅助指标的实现(仅用于报告,不决定名次):
from sklearn.metrics import roc_auc_score, average_precision_score, accuracy_score, f1_score
def reported_metrics(labels, probabilities, cpc_true=None, cpc_pred=None, threshold=0.5):
"""官方排行榜的附加展示列。"""
labels = np.asarray(labels).astype(int)
probabilities = np.asarray(probabilities, dtype=float)
yhat = (probabilities >= threshold).astype(int)
out = {
"Outcome AUROC": roc_auc_score(labels, probabilities),
"Outcome AUPRC": average_precision_score(labels, probabilities),
"Outcome Accuracy": accuracy_score(labels, yhat),
"Outcome F-measure": f1_score(labels, yhat, zero_division=0),
"threshold_used": float(threshold),
}
if cpc_true is not None and cpc_pred is not None:
cpc_true, cpc_pred = np.asarray(cpc_true, float), np.asarray(cpc_pred, float)
out["CPC MSE"] = float(np.mean((cpc_true - cpc_pred) ** 2))
out["CPC MAE"] = float(np.mean(np.abs(cpc_true - cpc_pred)))
return out
三个易错细节:其一,官方评分把 Poor 作为正类——若把 Good 当作正类,分数含义完全相反。其二,阈值扫描候选集必须足够细,若用 np.unique(probabilities) 而模型输出高度集中(如全落在 0.9–0.95),可用分割点太少会导致估计粗糙,此时应在 [0, 1] 上均匀插入额外网格点。其三,CPC 指标只在真正需要时才计算——若模型只输出二分类概率而无 CPC 预测,不应虚构 CPC 值来"凑指标"。
§6.10 MLOps 笔记
版本管理:同时记录三层版本——数据版本(i-care v1.0,DOI 10.13026/rjbz-cq89)、代码版本(git commit hash)、环境版本(Python 与关键库版本)。本数据集存在多版本并行(v1.0 / v2.x / 赛事两套包),版本记录缺失会导致结果无法复现。实验追踪:每次训练记录完整的"数据切片 + 特征配置 + 超参数 + 随机种子 + 交叉验证折划分";由于本数据集规模小、方差大,同配置不同种子的分数波动可能超过不同模型之间的差距,种子记录尤为重要。模型卡必填内容:训练数据规模(明确写 607 例公开子集)、目标人群(成人、心脏骤停后昏迷、GCS ≤ 8)、标签定义(CPC 1–2 / 3–5,3–6 个月最佳评分)、主指标(TPR@FPR≤0.05)、阈值选择策略,以及一条明确的禁用声明——本模型不得用于驱动或支持撤除生命支持的决策。监控与再训练:若模型进入任何临床研究环境,须监控输入分布漂移,尤其是"监护时长分布"这一与结局耦合的量;一旦所在机构的 EEG 监护策略变化(如常规监护时长缩短),输入分布随之改变,性能可能下降——这是坑点 2 的时长偏倚在部署阶段的直接后果。合规与发布:遵循 PhysioNet 的"不得转发数据"要求,模型权重与数据分开管理;公开发布模型前确认是否与 Challenge 期的发表限制冲突。若使用 AWS BDSP 通道,还须遵循 BDSP Restricted Health Data License 1.0.0。
§7 质量评估与局限性
§7.1 已知偏倚
偏倚一:自实现预言(self-fulfilling prophecy)。 本数据集最核心的伦理与统计难题。Poor 标签中的一部分并非自然病程,而是由"撤除生命支持治疗"这一主动决策造成,而该决策本身又基于临床团队的预后判断(可能部分依赖 EEG)。于是形成反馈回路:被判为预后不良 → 撤除治疗 → 患者死亡 → 标签确认为 Poor。模型在闭环数据上训练,学到的可能不只是"脑电预示不良结局",而是"既往医生如何依据脑电做出撤除决策",从而系统性放大既有判断中的偏差。
偏倚二:机构间异质性与标签口径差异。 7 家医院的院前急救体系、TTM 常规、神经重症资源配置与撤除治疗门槛均不相同;结局评估方式也不统一(2 家前瞻性电话随访、5 家回顾性病历审查)。这些差异同时影响输入分布(脑电采集与镇静策略不同)与标签分布(CPC 判定标准与随访时点不同)。
偏倚三:时长相关的信息性缺失。 EEG 记录时长随结局系统性变化(CPC 1 平均 53 小时、CPC 4 平均 102 小时)。这既是数据特征也是统计陷阱:任何与"时程长度"耦合的特征或模型设计,都会引入与结局相关的非生理信号。
偏倚四:人群与机构的经济地理偏向。 全部 7 家医院位于美国与西欧,均为高资源三级医院,患者以成人为主(≥ 16 岁)。结果不能外推到中低收入地区、儿科人群或未接受连续 EEG 监护的患者。
偏倚五:幸存者结构失衡。 Poor 组中 603/651 为死亡,仅 48 例为 CPC 3–4 的"存活但严重失能"。模型在 Poor 类上的表现主要由死亡识别驱动,对临床上同样关键的"存活但严重失能"亚组,学习信号非常稀薄。
§7.2 标注质量
结局标签(高价值但非无噪声)。 CPC 是心脏骤停研究领域的标准结局量表,3–6 个月最佳 CPC 也是领域常规做法。但官方未提供评估者间一致性数值、未提供按机构的标签分布交叉表、也未统一随访方式。因此标签的机构级噪声无法量化——做跨机构性能对比时,须把标签噪声视为未测量的混杂因素。
信号质量标签(自动化、未验证)。 Quality 分完全由自动化流程产生,官方明确提示未经人工验证、建议使用者自行判断。"高质量切片"这一概念在本数据集中并没有人工背书的定义,不同团队对同一批数据可能得出不同的清洗结果。
两者的不同置信层级:结局标签可谨慎采信,信号质量标签只能作为启发式工具。把后者当作前者使用,是本数据集最常见的质量误判。
§7.3 泛化性评估
官方设计层面。 官方已通过"一家医院仅入测试集"的设计强制检验跨机构泛化。因此官方排行榜的测试集分数实际上就是"跨机构泛化成绩",而非同分布测试成绩——排行榜分数不能与随机划分得到的分数直接比较。
公开数据使用者的现实约束。 隐藏集不公开,公开使用者只能近似模拟:在 607 例内部做留一中心交叉验证(若机构标识可得)或按机构分组划分。所得分数无论如何都不等同于官方分数,须在论文中显式声明这一差异。
排行榜提供的泛化落差参考。 官方排行榜呈现两个一致现象:训练集分数与测试集分数差距普遍很大;验证集顶尖的队伍并不必然在测试集顶尖(如 PKU_NIHDS 验证集 0.821 为全场最高,测试集 0.708 跌至并列第 5)。这说明在这类多中心小样本数据上,"本地验证集表现最好"与"未见机构上表现最好"是两件事,后者更依赖模型的简洁性与稳健性。
§7.4 伦理评估
伦理风险一:预后预测与治疗决策的边界。 本数据集的标签与"撤除生命支持"直接相关。若模型被用于辅助这类决策,假阳性(把可能恢复者判为 Poor)造成的伤害是不可逆的。官方选择 FPR ≤ 5% 作为评分约束,正是这一伦理考量的体现——专业学会建议预后检测的假阳性率应控制在 5% 以下。
伦理风险二:性能指标与临床价值的落差。 官方指标衡量的是"低误报率下的检出能力",而非临床净收益。临床净收益还取决于干预措施的有效性、患者偏好与家庭价值观——这些都不在排行榜的度量范围内。
伦理风险三:数据获取与再分发的合规。 PhysioNet 条款要求不得转发数据,且在 Challenge 结束前不得发表或分享使用该数据的成果(CinC 会议除外);AWS BDSP 通道采用另一套受控许可。归档代码与模型时须确保不把数据本身打包分发。各参与医院均通过独立 IRB 审查并签订院际数据共享协议、回顾性分析免除知情同意——使用者的后续研究应尊重同样的伦理框架。
伦理风险四:模型的传播与误用。 模型一旦开源并传播,非预期场景中的使用者可能并不了解训练数据的局限。强烈建议在模型卡与代码仓库首页显式声明适用范围与禁用场景。
§7.5 公平性评估
可评估的公平性维度:
| 维度 | 数据是否支持评估 | 说明 |
|---|---|---|
| 性别 | 支持(Sex 字段) | 公开材料未提供按性别的性能分解;使用者可自行分析 |
| 年龄 | 支持(Age 字段) | 注意 > 89 岁统一记为 90,高龄段的分辨率被削平 |
| 机构 | 部分支持 | 公开训练集是否提供机构标识官方未明确说明;官方测试集含一家未见机构 |
| 院外 vs 院内骤停 | 支持(OHCA 字段) | 两类患者的病因谱与预后基线不同,性能差异值得单独报告 |
| 初始心律类型 | 支持(VFib 字段) | VFib 可电击心律通常预后相对较好,模型是否对该亚组过度乐观需检查 |
| 是否实施 TTM | 支持(TTM 字段) | TTM 的 NaN 表示未实施;治疗策略差异可能与机构差异混淆 |
| 种族/族裔 | 不支持 | 官方未提供种族/族裔字段,因此无法做相关的公平性分析 |
| 社会经济地位 | 不支持 | 官方未提供相关字段 |
必须坦承的空白:种族与族裔维度在数据中完全不可得,这意味着任何关于"模型是否对不同族裔公平"的问题都无法在这份数据上回答。这是一个结构性限制,不是可以靠建模技巧绕过的。若研究目标涉及公平性,必须补充外部数据或明确声明该局限。
对中文用户的额外说明:该数据集的全部患者来自美国与西欧的 7 家医院,人群构成与中国患者存在差异(病因谱、院前急救模式、共病结构均不同)。在中文场景下使用该数据集训练的模型前,必须考虑人群差异带来的性能偏移与公平性问题。
§7.6 数据漂移
漂移来源一:治疗常规的变化。 目标温度管理(TTM)的临床证据与指南在近年持续演变;若某机构的 TTM 策略发生变化,其患者群体的脑电特征分布也会随之改变(低温治疗本身显著影响脑电背景)。同时 TTM 字段本身的取值分布也会漂移。
漂移来源二:监护策略的变化。 EEG 监护的启动门槛与持续时长直接决定了数据集中的"记录条数分布"。如 §7.1 偏倚三所述,时长与结局耦合,因此监护策略的变化会同时改变输入分布与输入-结局关系。
漂移来源三:撤除治疗门槛的变化。 这是最隐蔽的一种漂移。若某机构提高了撤除治疗的门槛(如采用更保守的预后评估流程),其 Poor 标签的构成会变化——原本会被归类为死亡的患者可能转为 CPC 3–4 存活。这会改变标签分布,进而使模型校准失效。
漂移来源四:采集设备与流程的变化。 电极类型、阻抗管理、镇静药物方案的变化都会影响信号质量与频谱特征。
监控建议:若将模型部署到任何真实环境,应至少监控以下四个量:(1) 每小时记录条数的分布;(2) 各频段相对功率的分布;(3) Quality 分的分布;(4) 预测概率的分布与阳性率。前三个量的漂移对应输入分布变化,第四个对应模型行为变化。四者均与上述漂移来源直接关联。
§7.7 DAIMS 数据质量 24 项检查
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ⚠️ | EEG 为 WFDB 多文件时序格式而非单表宽格式;患者级临床变量为键值对文本,需自行转表;本百科 §4.1 提供字段字典 |
| 2 | 唯一标识 | ✅ | 患者标识(ICARE_XXXX)+ 小时序号构成天然主键,患者目录一一对应 |
| 3 | 特殊字符 | ✅ | 元数据为纯 ASCII 键值对;无编码污染风险 |
| 4 | 重复行 | ✅ | 患者目录与记录文件名唯一;官方未提示重复记录问题 |
| 5 | 缺失编码 | ✅ | TTM 的 NaN 为显式缺失编码(表示未实施 TTM),语义明确;其余字段官方未披露缺失 |
| 6 | 标签标识 | ✅ | Outcome(Good/Poor)与 CPC(1–5)标签明确、定义清晰、二值化规则公开 |
| 7 | 罕见类分组 | ⚠️ | CPC 3–4 仅 48 例(全库 5%),属长尾亚组;官方未提供分组聚合建议 |
| 8 | 偏倚评估 | ✅ | 官方论文明确讨论自实现预言、时长偏倚与机构异质性;本百科 §7.1 系统展开 |
| 9 | 数据字典 | ⚠️ | 官方提供字段说明但未发布正式数据字典文档;本百科 §4.1 为中文补充版 |
| 10 | 信息性缺失解释 | ⚠️ | 记录时长与结局耦合这一信息性缺失现象在论文中有报告,但未作为独立章节解释其对建模的影响 |
| 11 | 设备记录 | ✅ | 采集设备与导联蒙太奇有明确记录(19 电极共享布局,100 Hz,WFDB) |
| 12 | 共线性 | ⚠️ | Outcome 与 CPC 完全共线(前者为后者二值化),必须显式排除其一;本百科 §5.3 与坑点 1 已说明 |
| 13 | 编码映射 | ✅ | 信号格式(WFDB / MAT v4)与临床变量字典均有明确定义;CPC 为国际通用量表 |
| 14 | 时间戳处理 | ⚠️ | 患者级入组时间戳未公开,时间轴统一归一化为相对 ROSC 的经过时间;无法做跨源时间对齐 |
| 15 | 划分建议 | ✅ | 官方 60%/10%/30% 划分明确,并刻意保留一家医院仅入测试集;本百科 §5 给出社区替代方案 |
| 16 | 泄漏讨论 | ⚠️ | 官方未系统讨论 CPC-Outcome 共线与时长偏倚这两类泄漏;本百科 §5.3 补齐六类风险 |
| 17 | 标签分布 | ✅ | 全库结局分布明确(死亡 603、CPC 3–4 48、CPC 1–2 369);本百科 §4.2 给出二分类口径推导 |
| 18 | 测量偏倚 | ⚠️ | 结局评估方式在机构间不一致(2 家前瞻性随访、5 家回顾性审查),评估者一致性未报告 |
| 19 | 外部验证建议 | ⚠️ | 官方通过"未见机构入测试集"内建外部验证;但隐藏集不公开,公开使用者无法直接复现,本百科 §7.8 给出替代矩阵 |
| 20 | 版本记录 | ✅ | PhysioNet 版本链清晰(i-care v1.0 及后续 v2.x),DOI 可追溯(10.13026/rjbz-cq89) |
| 21 | 预处理脚本 | ✅ | 官方提供 python-example-2023 / matlab-example-2023 / evaluation-2023 与 BDSP icare-dl 伪迹流程 |
| 22 | 合规要求 | ⚠️ | PhysioNet 与 AWS BDSP 两套许可口径不同(前者公开下载但禁止转发、限制发表时点;后者为 BDSP Restricted Health Data License 1.0.0),须使用者自行确认适用条款 |
| 23 | 多模态对齐 | ⚠️ | 论文提及 ECG/EMG/EOG,但 v1.0 公开版以 EEG 与临床变量为主;多模态信号在 v2.x 更完整,跨模态对齐需自行处理 |
| 24 | 去标识化 | ✅ | 年龄 > 89 统一记为 90;时间轴归一化为相对 ROSC;未发现直接标识符 |
DAIMS 评分:16.5 / 24(✅×10 + ⚠️×13×0.5 + ❌×0)
评分解读:16.5/24 属于"核心标注与合规框架扎实、工程配套完备,但在文档完备性与偏倚处理上留有明确空间"的中上梯队。得分被 ⚠️ 拉低的主要有三类原因:
- 第一类是"信号类数据集的结构性特征"(宽格式、时间戳处理、多模态对齐):连续多通道生理信号本身就不是单表结构,这类扣分在同类数据集中普遍存在,并不代表数据质量差。
- 第二类是"官方文档的留白"(数据字典缺位、信息性缺失未系统解释、泄漏讨论不完整):这些内容客观存在但需要使用者自行挖掘,本百科已在 §4.1、§4.5、§5.3 逐项补齐。
- 第三类是"研究设计的固有难题"(机构间评估不一致、隐藏集不可复现、双许可口径):这类问题无法通过文档改善,只能通过透明声明来管理。
作为对比,很多大型 EHR 数据集在合规项上得分更低(因需凭证申请、签署 DUA),而本数据集在 PhysioNet 侧可公开下载,降低了使用门槛。真正的短板集中在"缺失与偏倚的可解释性"上,而这恰恰是最容易影响建模结论可靠性的一环。
对你意味着什么:
- 如果目标是快速跑通一个预后模型:本数据集的开箱可用性很高(官方示例代码齐全、格式规范、无需凭证申请),一周内即可得到第一版结果。
- 如果目标是发表方法学论文:必须正面处理三个问题——CPC/Outcome 共线(坑点 1)、时长偏倚(坑点 2)、阈值口径(坑点 3);三者任一处理不当,审稿人都会质疑结果的真实性。
- 如果目标是临床转化:这份数据远不足以支撑临床部署。你必须补充真实机构的独立外部验证、标签主观性对模型行为的影响分析、以及明确的"不用于撤除治疗决策"边界声明。
- 如果目标是研究公平性:种族与族裔字段完全缺失,这是结构性障碍,只能通过引入外部数据解决。
落地行动清单(按顺序执行):第一周——下载 i-care v1.0(17.4 GB)、跑通 §6.1 样例代码、确认 607 例目录齐全、用 §4.1 字段字典核对元数据解析正确,同时检查是否误把 CPC 引入特征(坑点 1)。第二周——按 §6.3 实现完整预处理管线并缓存特征,建立 §5.4 的 5 折交叉验证框架,用 §6.9 的 compute_challenge_score 得到第一版主指标基线(预期落在 0.55–0.70 区间,若高于 0.85 请立即回查泄漏)。第三周起——按 §6.7 选择模型路线做选型实验,对坑点 2 做专项消融(比较"含时长特征"与"不含时长特征"的性能差,差额即为时长偏倚的量化估计),对坑点 5 做质量门槛敏感性分析。交付前——用 §5.3 的六类泄漏清单逐项自查,用 §7.7 的 DAIMS 表做最终审计,在模型卡中写清数据规模(607 例)、目标人群、标签定义、主指标口径与禁用声明。
§7.8 外部验证矩阵
由于官方隐藏集(413 例)永不释放,公开数据使用者无法在真正的官方测试集上做外部验证。下表给出可行的替代验证路径及其可信度层级:
| 验证路径 | 数据来源 | 评估任务 | 可信度 | 关键发现与注意事项 |
|---|---|---|---|---|
| 官方隐藏测试集(不可复现) | CinC 2023 官方 | 72 小时 TPR@FPR≤0.05 | 最高(但仅官方可执行) | 冠军 AIrhythm 测试集 0.792;含一家训练集中未出现的医院 |
| 留一中心交叉验证 | PhysioNet 公开训练集内部 | 同上(近似口径) | 较高 | 最接近官方设计;需机构标识;折间样本量可能不均衡 |
| 随机分层 5 折交叉验证 | PhysioNet 公开训练集内部 | 同上(全局阈值近似) | 中等 | 分数系统性偏高;冠军方案报告 5 折均值 0.651 ± 0.077 |
| 跨版本验证(v1.0 → v2.x) | PhysioNet i-care 后续版本 | 同上 | 中等 | 须先核对患者重叠;v2.x 补全多模态后输入定义可能变化 |
| 跨队列验证(其他昏迷 EEG 数据库) | 完全独立的外部队列 | 同上(需重新定义标签口径) | 高(若实施得当) | 最有说服力;需伦理审批与数据获取流程;标签定义一致性是主要风险 |
矩阵解读:官方测试集分数虽然是唯一权威口径,但它既不可复现也不允许公开数据使用者参与比较。因此对绝大多数研究者而言,留一中心交叉验证是最务实的选择——它直接模拟了官方"整家医院缺席"的设计,得到的是最保守也最有说服力的性能估计。需要特别提醒的是,如果用随机分层交叉验证得到 0.75 分,而官方测试集上同类方法只有 0.65–0.70 分,这个落差是正常的,不应被解读为"本地实现优于参赛队伍"。
§8 基准性能与生态
§8.1 排行榜(CinC 2023 官方,72 小时,隐藏测试集)
以下数据逐字提取自官方结果页公布的结果文件。所有分数均为官方 Challenge score(TPR at FPR ≤ 0.05)。
| 排名 | 队伍 | 训练集分数 | 验证集分数 | 测试集分数 |
|---|---|---|---|---|
| 1 | AIrhythm | 0.992 | 0.657 | 0.792 |
| 2 | ComaToss | 1.000 | 0.612 | 0.787 |
| 3 | TUD_EEG | 0.958 | 0.687 | 0.718 |
| 4 | MIWEAR | 0.853 | 0.597 | 0.713 |
| 5 | PKU_NIHDS | 0.990 | 0.821 | 0.708 |
| 5 | unimi_bisp_squad | 0.887 | 0.627 | 0.708 |
| 7 | Medics | 0.961 | 0.627 | 0.688 |
| 8 | BrAInstorm | 0.657 | 0.448 | 0.683 |
读表要点:其一,第 5 名由 PKU_NIHDS 与 unimi_bisp_squad 并列(测试集分数均为 0.708),因此排行榜上没有第 6 名,第 7 名直接接续。其二,从 0.792 到 0.683,前 8 名的测试集分数跨度仅约 0.11,竞争相当密集;在 607 例公开数据上,不同方法之间的真实差距可能小于交叉验证的随机波动,因此不宜过度解读名次差异。其三,训练集分数与测试集分数的落差是全场最醒目的现象:亚军 ComaToss 的训练集分数达到满分 1.000,测试集却只有 0.787;冠军 AIrhythm 训练集 0.992、测试集 0.792。这一落差(约 0.2)在 607 例规模上是典型的过拟合表现,也印证了 §5.4 与坑点 6 的判断。
§8.2 冠军方案与头部队伍解析
冠军:AIrhythm(测试集 0.792)。 根据其 CinC 2023 方法论文,该队的核心设计是多模态生物信号超集成学习:预处理采用带通滤波与陷波滤波去除噪声与工频干扰,重采样后做 z-score 标准化;EEG 侧使用 21 个双极导联提取 362 个专家特征,覆盖时域、频谱、时频与连接性四类;ECG 侧提取 16 个心率变异性(HRV)特征;建模引入位置编码,配合 CatBoost 与堆叠集成(stacking ensemble);验证策略采用混杂因素隔离交叉验证(confounder-isolated cross-validation),即在交叉验证中显式隔离与结局相关的混杂因素(这一设计与本词条坑点 2 所指的时长偏倚问题方向一致);自报 5 折交叉验证平均 Challenge score 为 0.651 ± 0.077。该队测试集额外指标为 AUROC 0.916、AUPRC 0.957、Accuracy 0.820,验证集 AUROC 0.878。
值得注意的方法学启示:冠军方案并未使用端到端深度学习,而是"专家特征 + 梯度提升树 + 堆叠集成"的经典路线。在 607 例的规模下,这一选择与 §6.7 给出的推荐高度一致——特征的领域知识密度比模型容量更重要。
亚军:ComaToss(测试集 0.787)。 其训练集分数达到满分(AUPRC 1.000、AUROC 0.999),是全场最极端的过拟合案例。这提醒我们:训练集分数在本数据集上完全没有参考价值,论文中报告它只会引起审稿人对方法可靠性的怀疑。
验证集最强:PKU_NIHDS(验证集 0.821)。 该队验证集分数为全场最高,但测试集 0.708 仅列并列第 5。这是"本地最优不等于跨机构最优"的典型案例,也说明单一验证集上的调参容易过拟合到该验证集的机构分布。
第三名:TUD_EEG(测试集 0.718)。 其验证集分数 0.687 高于冠军的 0.657,测试集表现也相当稳健,是"验证-测试一致性"较好的代表。
§8.3 评测协议
主指标(决定名次):TPR at FPR ≤ 0.05,且 FPR 约束逐家医院分别施加。
数学定义如下。对第 h 家医院,取满足假阳性率约束的最大阈值:
- FPRθ = FPθ / (FPθ + TNθ),要求 FPRθ ≤ α,其中 α = 0.05,θ 为决策阈值
- 记该最大阈值为 θh,则汇总所有医院的混淆矩阵后:
Challenge score = TPRα = TPα / (FPα + FNα)
其中正类为 Poor(CPC 3/4/5),负类为 Good(CPC 1/2)。实现位于官方 evaluate_model 脚本的 compute_challenge_score 函数中(仓库 physionetchallenges/evaluation-2023)。
时间点要求:算法须对 ROSC 后 12、24、48、72 小时分别给出预测,且必须保持因果性(12 小时预测只能用前 12 小时数据)。仅 72 小时的分数决定名次,12/24/48 小时为附加观察。
输出要求:每个时间点需输出三类结果——二元结局标签(good/poor)、Poor 的预测概率、以及 1–5 的连续 CPC 预测值。
附加展示列(不决定名次):Outcome AUROC、Outcome AUPRC、Outcome Accuracy、Outcome F-measure、CPC MSE、CPC MAE。
两项设计理由(官方说明):其一,为何选 FPR ≤ 5%——在心脏骤停预后场景中,撤除生命支持对可能恢复的患者造成的伤害远大于延长照护的代价,专业学会建议预后检测的假阳性率应控制在 5% 以下,这一临床伦理约束直接写入了评测协议。其二,为何以 72 小时为准——既允许观察 EEG 随时间的变化趋势,又要求预后判断在临床相关的时间窗内给出,过晚的预测在临床上已无决策价值。
§8.4 相关数据集生态
| 数据集/资源 | 关系 | 说明 |
|---|---|---|
| PhysioNet i-care v1.0 | 本数据集的公开版本 | 607 例训练集,DOI 10.13026/rjbz-cq89 |
| PhysioNet i-care v2.1 | 本数据集的后续版本 | 补全多模态信号,DOI 10.13026/m33r-bj81 |
| 与 CinC 2015 同属 PhysioNet 挑战系列 | 同系列不同届次 | 任务定义与队列完全不同,不能混用 |
| 与 CinC 2018 同属 PhysioNet 挑战系列 | 同系列不同届次 | 聚焦睡眠与心血管信号,无患者重叠 |
| 与 CinC 2020 同属 PhysioNet 挑战系列 | 同系列不同届次 | 12 导联 ECG 多类心律失常诊断任务 |
| 与 CinC 2022 同属 PhysioNet 挑战系列 | 同系列上一届 | 多模态心脏信号分类,技术栈可借鉴 |
| PhysioNet 其他 ICU 相关数据库 | 生态互补 | 可用于预训练或跨队列验证,须注意许可差异 |
| BDSP icare-dl 仓库 | 配套工具 | 伪迹处理流程参考实现 |
| 官方示例代码仓库(python/matlab/evaluation-2023) | 配套代码 | 数据读取、结果写出与官方评分实现 |
生态定位:CinC 2023 在 PhysioNet 挑战系列中属于"生理信号 + 临床结局预测"这一类,与同系列的分类/检测任务(如 CinC 2020 的心律失常分类、CinC 2022 的心脏状态分类)在任务范式上有本质区别。它的直接生态价值在于把"多中心连续 EEG + 长期功能结局"这一组合标准化,并提供了可复用的评测协议。
§8.5 关键论文 Top 5
| # | 论文 | 类型 | 价值 |
|---|---|---|---|
| 1 | Reyna MA, Amorim E, et al. Predicting Neurological Recovery from Coma After Cardiac Arrest: The George B. Moody PhysioNet Challenge 2023. Computing in Cardiology 2023;50:1-4. DOI 10.22489/CinC.2023.019 | 挑战描述论文 | 官方任务定义、评分公式、参赛统计与结果的第一手来源;引用本数据集时的首选文献 |
| 2 | Amorim E, Zheng WL, et al. The International Cardiac Arrest Research (I-CARE) Consortium Electroencephalography Database. Crit Care Med. 2023;51(12):1802-1811. DOI 10.1097/CCM.0000000000006074. PMID 37855659 | 数据论文 | 队列构成、结局分布、脑电征象统计(痫样放电、爆发抑制、时长分布)的权威来源 |
| 3 | Amorim E, et al. I-CARE: International Cardiac Arrest REsearch consortium Database (version 1.0). PhysioNet. DOI 10.13026/rjbz-cq89 | 数据集版本引用 | 引用具体数据版本时的标准文献 |
| 4 | Goldberger AL, et al. PhysioBank, PhysioToolkit, and PhysioNet. Circulation. 2000;101(23):e215-e220 | PhysioNet 平台引用 | 使用 PhysioNet 数据时的通用引用规范 |
| 5 | AIrhythm 团队的 CinC 2023 方法论文 | 参赛方法论文 | 冠军方案的技术细节(专家特征、CatBoost、堆叠集成、混杂因素隔离交叉验证) |
§8.6 社区活跃度
赛期活跃度(有明确数字):共 111 支团队提交 982 个算法;非官方阶段 107 队参与(179 次提交成功、194 次失败),官方阶段 76 队参与(269 次提交成功、313 次失败);58 队在隐藏测试集上提交成功;36 队满足全部规则获得排名资格。另有会前 hackathon(2023-10-01,亚特兰大)独立举行。
赛后活跃度(难以量化,需谨慎表述):数据集作为 PhysioNet 长期公开资源持续可下载;官方示例代码与评分脚本在 GitHub 上维护;BDSP 提供了独立的伪迹处理流程仓库。具体的使用统计(如下载量、衍生论文数)属于随平台统计口径变化的数据,本词条不作具体数值陈述——若需引用,请以 PhysioNet 页面当前的实时计数或权威文献计量数据库为准。
引用次数的说明:截至本次检索,未能从 Semantic Scholar / Google Scholar 取得稳定可复核的精确引用次数(检索过程受到 API 限流)。因此本词条不提供引用次数数值,以免误导。需要该数字的读者请直接查询 Google Scholar 或 Web of Science 的实时数据。
§8.7 生态快照
一张图看懂 CinC 2023 的生态位:
| 层面 | 内容 |
|---|---|
| 数据源头 | I-CARE 联盟 7 家美欧医院(荷兰 2、比利时 1、美国 4) |
| 组织方 | PhysioNet(MIT 计算生理学实验室与哈佛医学院联合运营)+ Computing in Cardiology |
| 赞助与资助 | MathWorks、Gordon and Betty Moore Foundation;NIH/NIBIB grant R01EB030362 |
| 挑战赛届次 | 第 24 届 George B. Moody PhysioNet Challenge |
| 数据发布 | PhysioNet i-care v1.0(公开 607 例)+ AWS BDSP 受控通道 |
| 代码配套 | python-example-2023 / matlab-example-2023 / evaluation-2023 / bdsp-core/icare-dl |
| 任务定义 | 12/24/48/72 小时因果预测;二元标签 + Poor 概率 + CPC 连续值 |
| 评测指标 | TPR at FPR ≤ 0.05(逐家医院约束);附加展示列含 AUROC/AUPRC/Accuracy/F-measure/CPC MSE/CPC MAE |
| 参赛规模 | 111 队、982 个算法;36 队获排名资格 |
| 冠军 | AIrhythm(测试集 0.792) |
| 长期维护 | PhysioNet i-care v2.x 持续迭代,补全 ECG/EMG/EOG |
§9 相关资源与引用
§9.1 官方资源导航
- 挑战赛官网:The George B. Moody PhysioNet Challenge 2023 官方挑战页(任务说明、双阶段时间线、评分细则、结果公告),见 §10.3 来源 1
- 官方结果页:CinC 2023 结果公告与完整排行榜(含前 8 名及各队附加指标列),见 §10.3 来源 2
- 数据门户:PhysioNet I-CARE v1.0 页面(607 例公开训练集,含格式说明、字段定义与许可条款),见 §10.3 来源 3
- 云端通道:AWS Open Data 上的 BDSP 注册页(受控 S3 访问,BDSP Restricted Health Data License 1.0.0),见 §10.3 来源 4
- 官方代码:
github.com/physionetchallenges/python-example-2023(Python 提交模板)、matlab-example-2023(MATLAB 版本)、evaluation-2023(含compute_challenge_score官方评分实现) - 伪迹处理参考:
github.com/bdsp-core/icare-dl(BDSP 的 EEG 伪迹处理流程) - 数据论文:Crit Care Med 2023;51(12):1802-1811(队列构成、结局分布与脑电征象统计的权威来源)
- 学习材料:挑战描述论文全文(PDF,官方 challenge 页面提供);AIrhythm 等参赛队伍的方法论文可从 CinC 2023 论文集检索
§9.2 BibTeX 引用块
使用该数据集发表论文时,建议同时引用挑战描述论文与数据论文,并给出具体数据版本 DOI:
@inproceedings{reyna2023cinc,
title = {Predicting Neurological Recovery from Coma After Cardiac
Arrest: The George B. Moody PhysioNet Challenge 2023},
author = {Reyna, Matthew A. and Amorim, Edilberto and Sameni, Reza and
Weigle, James and Elola, Andoni and Bahrami Rad, Ali and
Seyedi, Salman and Kwon, Hyeonju and Zheng, Wei-Long and
Ghassemi, Mohammad and van Putten, Michel J. A. M. and
Hofmeijer, Jeannette and Gaspard, Nicolas and Sivaraju, Adithya
and Herman, Susan T. and Lee, Jong W. and Westover, M. Brandon
and Clifford, Gari D.},
booktitle = {Computing in Cardiology},
volume = {50},
pages = {1--4},
year = {2023},
doi = {10.22489/CinC.2023.019}
}
@article{amorim2023icare,
title = {The International Cardiac Arrest Research (I-CARE) Consortium
Electroencephalography Database},
author = {Amorim, Edilberto and Zheng, Wei-Long and Ghassemi, Mohammad M.
and Aghaeeaval, Mahsa and Kandhare, Parshwa and Karukonda, Vinay
and Lee, Jong W. and Herman, Susan T. and Sivaraju, Adithya and
Gaspard, Nicolas and Hofmeijer, Jeannette and van Putten,
Michel J. A. M. and Sameni, Reza and Reyna, Matthew A. and
Clifford, Gari D. and Westover, M. Brandon},
journal = {Critical Care Medicine},
volume = {51},
number = {12},
pages = {1802--1811},
year = {2023},
doi = {10.1097/CCM.0000000000006074},
pmid = {37855659}
}
@misc{icare_physionet,
title = {{I-CARE}: International Cardiac Arrest {RE}search consortium
Database (version 1.0)},
author = {Amorim, Edilberto and others},
publisher = {PhysioNet},
year = {2023},
doi = {10.13026/rjbz-cq89},
note = {RRID:SCR\_007345}
}
@article{goldberger2000physionet,
title = {PhysioBank, PhysioToolkit, and PhysioNet: Components of a New
Research Resource for Complex Physiologic Signals},
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},
journal = {Circulation},
volume = {101},
number = {23},
pages = {e215--e220},
year = {2000},
doi = {10.1161/01.CIR.101.23.e215}
}
§9.3 引用指南
场景一:使用公开训练集做方法学研究。 至少引用挑战描述论文 + 数据论文 + 数据集版本 DOI(三条齐备),并在方法部分写明"使用 PhysioNet i-care v1.0 公开训练子集(607 例)"。场景二:引用排行榜数字。 必须注明分数口径为 “Challenge score = TPR at FPR ≤ 0.05(逐家医院约束),72 小时,隐藏测试集”,并注明数据来自 CinC 2023 赛后状态(2023-10-04 公布);不要把这些数字与任何在本地区间算出的分数并列比较。场景三:使用多模态信号。 若使用 i-care v2.x 中的 ECG/EMG/EOG,须同时引用对应版本的 DOI(v2.1 为 10.13026/m33r-bj81),并说明所用版本号。场景四:使用 PhysioNet 平台。 按 PhysioNet 的惯例同时引用 Goldberger 2000 的 PhysioNet 平台论文。场景五:在国内论文中介绍该数据集。 建议同时说明"全库 1,020 例"与"公开 607 例"的区别,避免读者误以为可以获取完整队列。
§9.4 常见问题速查
Q:下载需要凭证申请或签署数据使用协议吗? 不需要。PhysioNet 的 i-care v1.0 页面提供公开下载,无需 MIMIC 式的凭证化流程。但发布条款要求使用者不得转发数据,且在 Challenge 结束前不得发表或分享使用该数据的成果(CinC 会议除外)。
Q:为什么 AWS 上的许可和 PhysioNet 不一样? AWS Open Data 上的副本由 Brain Data Science Platform(BDSP)管理,采用 BDSP Restricted Health Data License 1.0.0,为受控访问。两者是不同渠道、不同条件,使用者须自行确认适用条款。
Q:官方评测指标是 AUROC 吗? 不是。官方 Challenge 评分指标是 TPR at FPR ≤ 0.05(逐家医院约束)。AUROC、AUPRC、Accuracy、F-measure、CPC MSE、CPC MAE 只是排行榜的附加展示列,不决定名次。这一点在中文资料中常被误传,需特别注意。
Q:607 例是全部数据吗? 不是。全库是 1,020 例,其中 607 例为公开训练集,413 例为隐藏的验证/测试集,从未释放。
Q:能拿到测试集标签吗? 不能。官方测试集及其标签从未公开,因此官方排行榜分数在实际意义上不可复现。公开数据使用者只能在 607 例内部做近似验证(推荐留一中心交叉验证)。
Q:伪迹质量分可以直接当可信度标签用吗? 不建议。官方明确说明该评分为自动化生成、未经人工验证,“user discretion is advised”。建议把它作为超参数化的过滤门槛,而非既定的金标准。
Q:一个永远预测 Poor 的模型能得高分吗? 不能。Poor 占多数(约 64%),虽然 TPR 会很高,但在 Good 组上会产生大量假阳性,导致 FPR 远超 5%,按官方规则得零分。官方指标设计从机制上排除了这种退化策略。
Q:可以用该数据集训练临床可用的预后系统吗? 不可以。该数据集只支持研究用途。任何临床部署都需要独立的前瞻性多中心验证、监管审批,并且必须明确禁止将模型输出用于驱动撤除生命支持的决策。
§10 AI 使用声明卡
§10.1 本页面使用的 AI 模型
| 模型 | 用途 |
|---|---|
| CodeBuddy(腾讯云 AI 编码助手,fast-model) | 词条文本起草、代码示例编写、事实整理与格式化 |
§10.2 AI 参与范围
AI 负责初稿撰写与代码示例生成;所有事实性内容(规模数字、队列构成、评测指标、排行榜成绩、许可条款、版本历史)均来自 §10.3 所列公开来源,并经编辑部对照原始来源核对。代码示例经过静态审查,语法与逻辑自洽,但不保证在所有环境下开箱即用。
本次写作中的一处重要口径纠正:写作前获得的队列条目信息称该挑战的评测指标含 “AUROC/准确率/校准”。经检索官方挑战描述论文与官方评分脚本核实,官方主指标实为 TPR at FPR ≤ 0.05(逐家医院约束),不含校准误差;AUROC 等仅为排行榜附加展示列。本词条已按官方口径更正,并在 §1.1、§8.3、§9.4 与坑点 3、坑点 6 中反复强调。此类口径差异会直接误导建模决策,因此编辑部将其列为该词条最重要的纠错项。
另一处规模口径纠正:队列条目称"607 例",容易让人误以为这是数据集全库规模。实际全库为 1,020 例,607 例仅为 PhysioNet 公开训练集。本词条在 INFOBOX、§1.1、§3.2 与坑点 7 中均明确区分这两个数字。
AI 未参与任何事实的独立核实——每个关键数字都要求在 FACTS 事实清单中有对应来源 URL;核对中发现的口径冲突(如"18 个双极通道"与"19 个电极")均以"同一采集系统的两种描述"处理并并列说明,而非二选一地掩盖矛盾。
§10.3 输入来源列表
- The George B. Moody PhysioNet Challenge 2023 官方挑战页(任务说明、时间线、评分细则)。https://moody-challenge.physionet.org/2023/
- CinC 2023 官方结果页与排行榜(含前 8 名训练集/验证集/测试集分数)。https://moody-challenge.physionet.org/2023/results/
- PhysioNet I-CARE v1.0 数据页面(607 例公开训练集、格式说明、字段定义、许可条款)。https://physionet.org/content/i-care/1.0/
- AWS Open Data 上的 BDSP I-CARE 注册页(BDSP Restricted Health Data License 1.0.0,受控 S3 访问)。https://registry.opendata.aws/bdsp-icare/
- Reyna MA, Amorim E, et al. Predicting Neurological Recovery from Coma After Cardiac Arrest: The George B. Moody PhysioNet Challenge 2023. Computing in Cardiology 2023;50:1-4. DOI 10.22489/CinC.2023.019(官方挑战描述论文全文 PDF)
- Amorim E, Zheng WL, et al. The International Cardiac Arrest Research (I-CARE) Consortium Electroencephalography Database. Crit Care Med. 2023;51(12):1802-1811. DOI 10.1097/CCM.0000000000006074. PMID 37855659
- I-CARE 数据集版本引用(PhysioNet,v1.0,DOI 10.13026/rjbz-cq89;v2.1,DOI 10.13026/m33r-bj81)
- Goldberger AL, et al. PhysioBank, PhysioToolkit, and PhysioNet. Circulation. 2000;101(23):e215-e220
- 官方代码仓库:python-example-2023、matlab-example-2023、evaluation-2023(含
compute_challenge_score)、bdsp-core/icare-dl(伪迹处理流程),均位于 github.com - AIrhythm 团队 CinC 2023 方法论文(冠军方案:多模态生物信号超集成学习,362 个 EEG 专家特征 + 16 个 ECG HRV 特征,CatBoost 与堆叠集成,混杂因素隔离交叉验证)
- CinC 2023 官方结果 TSV 文件(排行榜逐行数据的逐字提取来源)
- 挑战赛相关媒体报道(会前 hackathon 与韩国峨山医疗中心团队成绩,属媒体口径,本词条已标注为非官方来源)
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| 队列规模与划分(§1、§3、§4) | 千方病案医学编辑部 | 对照 PhysioNet i-care v1.0 页面与数据论文逐项核对(特别核对 1,020 与 607 的区别) | ✅ 已通过/已验证 |
| 评测指标与公式(§8.3、§6.9) | 千方病案医学编辑部 | 对照官方挑战描述论文公式与官方评分脚本实现交叉核对 | ✅ 已通过/已验证 |
| 排行榜数字(§8.1) | 千方病案医学编辑部 | 逐字提取自官方结果 TSV,并与官方结果页核对 | ✅ 已通过/已验证 |
| 许可与获取流程(§3、§7、§9) | 千方病案医学编辑部 | 对照 PhysioNet 页面条款与 AWS BDSP 注册页说明双渠道核对 | ✅ 已通过/已验证 |
| 代码示例(§6) | 千方病案医学编辑部 | 静态审查+与官方输入输出格式说明比对 | ✅ 已通过/已验证 |
| 坑点与局限(§6.5、§7) | 千方病案医学编辑部 | 对照官方材料与数据论文的偏倚讨论归纳核对 | ✅ 已通过/已验证 |
| ICD-11 与 CPC 对照(§2.1、§2.1b) | 千方病案医学编辑部 | 按 WHO ICD-11 通行编码与 CPC 量表标准定义复核 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
本页面各章节均由 AI 起草、编辑部人工审核后发布,无纯 AI 未审章节。§2.1 的 ICD-11 对照列为编辑部基于 ICD-11 通行编码补充的辅助理解层,非数据集官方内容;§2.1b 的 CPC 语义说明为编辑部依据该量表的通行定义整理,数据集本身仅提供 CPC 数值。
§10.6 最后人工审核日期
2026-09-05
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- bci-competition-iv-2a — 共享标签:生理信号 / 神经科学 / 挑战赛数据集 / 脑电信号
- openneuro — 共享标签:生理信号 / 神经科学 / 脑电信号
- tuh-eeg-corpus — 共享标签:生理信号 / 神经科学 / 脑电信号
- bonn-eeg — 共享标签:生理信号 / 神经科学 / 脑电信号
- eegmmidb — 共享标签:生理信号 / 神经科学 / 脑电信号
- cinc-2014 — 共享标签:生理信号 / 挑战赛数据集 / 重症监护
- mimic-iv-waveform — 共享标签:生理信号 / 重症监护
- sleep-edf — 共享标签:生理信号 / 脑电信号
- bidmc-ppg — 共享标签:生理信号 / 重症监护
- sicdb — 共享标签:生理信号 / 重症监护
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
