技能简介
EHR 建模最难的常常不是模型,而是任务定义和数据标准化。第 30 期把 pyhealth、baseline 模型和解释图放到一页里,更适合先把工作流打通。
传统方式通常需要 2–3天搭工作流,而把流程说清楚后,AI 辅助可以在 约20–30分钟 内先跑出第一轮可汇报结果。
🧭 开始前先确认这 4 件事
结局和时间窗要先讲清楚
是 30 天再入院、院内死亡还是某种不良事件,标签定义必须先固定。
队列纳入与排除标准要统一
不同 visit、不同患者级别的拆分方式会直接影响任务样本数和泄漏风险。
可用特征范围要先确认
诊断、药物、检验和人口学变量是否都能用,关系到模型路线选择。
验证方案不能最后再补
patient-level split、时间切分、calibration 和解释图最好从第一轮就规划。
📦 一轮像样输出至少应交付这 4 样
任务定义摘要
明确队列、标签、输入特征和预测窗口,是所有模型对比的前提。
baseline 与深度模型比较表
把 logistic、RF 与 sequential model 放在同一张指标表里。
AUC / calibration / 解释图
不只关注判别能力,也兼顾可解释性和临床可用性。
一页汇报摘要
适合组会、proposal 或论文初稿 Results 段直接引用。
💡 适用场景
MIMIC 练手项目
先用标准化数据结构把 readmission 或 mortality 预测跑通。
再入院风险建模
当你需要快速定义任务并比较 baseline 与 sequential model 时最实用。
真实世界研究原型
适合把多表临床数据先收敛成一个可运行的预测任务。
模型解释与沟通
SHAP 图和个体解释可以帮助临床团队理解预测依据。
⚙️ 核心实操流程
先把 EHR 任务定义清楚
第一步你先别选模型。 先定义清楚:你到底在预测什么,输入是什么。 任务数据集已经按照 visit / patient 逻辑整理好了
调用 `pyhealth`: 读取 MIMIC 风格的示例电子病历数据, 定义“30 天再入院风险预测”任务, 整理诊断、药物、检验和人口学特征。
先跑 baseline 和深度模型对比
做临床 AI 最怕一件事: 模型很花哨,但你不知道它到底有没有比 baseline 更强。 所以第二步直接把 baseline 和 sequential model 放在一起比
继续用 `pyhealth` 和 `scikit-learn`: 训练 30 天再入院预测模型, 比较 logistic regression、random forest 和 Transformer / RETAIN 类模型, 输出 AUC、AUCPR 和 calibration 指标。
把模型解释补上
你不能只给临床老师一个 AUC。 你还得告诉他:为什么这个病人高风险。 特征重要性图和个体解释一出,模型立刻从黑箱变成可讲的结果
调用 `shap`: 对表现最好的 baseline 模型生成特征重要性图, 并解释一个高风险患者为什么被预测为高再入院风险。
输出一页可汇报结果摘要
最后你把结果收成一页。 以后无论是组会、proposal 还是论文初稿,直接往里贴。 而你的同门还在单独截图 ROC 曲线
把刚才的模型比较结果整理成一页汇报摘要,包含: - 任务定义 - 样本量 - 最佳模型 - 核心指标 - 主要特征解释 并附一段适合汇报 / 论文 Results 的文字。
建议录制的关键画面
- EHR 示例数据结构
- pyhealth task 定义界面
- 模型训练与比较结果
- AUC / calibration 图
- SHAP 解释图
- 一页汇报摘要
建议准备的关键截图
- task 定义摘要
- 模型指标对比表
- AUC / AUCPR 图
- SHAP 重要性图
🧯 最常见的 4 类翻车点
患者级泄漏没处理
如果同一患者不同 visit 同时进入训练和测试,模型成绩会被显著高估。
标签定义含糊
时间窗和结局口径不清楚时,后续所有指标都缺乏稳定解释。
只跑高级模型不做 baseline
没有 baseline 参照时,很难证明复杂模型真的带来了增益。
只有 AUC 没有校准和解释
临床团队通常更关心模型为什么这么判以及概率是否可信。
🔗 相关技能
💡 代码包内含 README.md,说明目录结构、主要文件与使用建议。解压后即可继续整理或二次演示。