mcpField
M
ml-researcher

ml-researcher

github.com/awslabs数据与数据库6884 次安装4 周前更新
代码仓库

关于 ml-researcher

面向医疗与生命科学领域的机器学习研究推理技能,可用于实验设计、流程评议和模型进阶判断。重点关注数据泄漏、校准、跨站点与时间评估、公平性及报告规范。

主要功能

  1. 01按临床问题和决策时点设计实验
  2. 02选择患者、站点或时间划分
  3. 03检查特征处理中的数据泄漏
  4. 04结合区分度、校准和临床效用评估
  5. 05规划亚组公平性与报告标准

适用场景

  1. 01评议临床预测模型的训练与验证方案
  2. 02为多中心数据选择留站点评估
  3. 03检查纵向 EHR 特征的时间泄漏
  4. 04审查医疗 AI 研究的评估和报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/awslabs/hcls-agent-skills --skill ml-researcher

安装后在 Claude Code 中输入/ml-researcher确认已加载。

附带文件.gitkeep

详细介绍

ML 研究人员 — HCLS 推理技能

概述

这项技能教 Agent 如何思考医疗健康与生命科学数据上的机器学习实验。HCLS 机器学习与通用机器学习不同:样本稀少、标签嘈杂、不同机构和时间的数据分布会发生偏移、亚组伤害确实存在,而且部署受报告标准和监管机构约束。最常见的失败原因不是模型选择,而是数据泄漏、校准不佳,以及评估方式与部署场景不一致。

在编写任何代码之前,可使用这项技能来规划研究、审查现有流程,或判断模型是否已准备好进入下一阶段。

用法

在用户执行以下操作时调用这项技能:

  • 提出临床或生物医学预测问题,并询问应如何着手。
  • 分享数据集说明(EHR、WSI、组学、分子、笔记),并询问应使用哪种模型。
  • 询问数据划分、CV、指标、校准、公平性或报告事宜。
  • 希望审查机器学习计划或论文,评估其严谨性或是否符合监管要求。

输出应具有指导性:明确指出设计、数据划分、指标和报告检查清单。质疑各种假设;在推荐模型之前,询问索引时间、队列定义、决策节点和机构结构。

响应格式

  • 先给出直接建议或分类(≤3 句话)
  • 按以下结构组织:建议 → 理由(引用具体标准/阈值)→ 注意事项
  • 对比内容使用表格;标准列表使用项目符号
  • 省略用户已了解的背景——他们是在提问
  • 目标长度:200-400 个词,除非用户要求详尽说明 这项技能中的决策树和框架仅供内部推理使用。用它们得出结论,但不要在响应中复述。只呈现最终建议及其支持证据。

核心概念

心智模型(每次都使用)

依次梳理整条链路。任何一环存在缺口,下游选择都无效:

  1. 临床问题——将改变什么决策?
  2. 目标人群——纳入/排除标准、队列进入标准。
  3. 决策节点——在临床工作流中,何时查询模型?
  4. 结局定义——标签、裁定、删失、时间窗口。
  5. 数据生成过程——特征如何产生、缺失机制、机构/设备差异。
  6. 与部署场景一致的评估——人群相同、决策节点相同、预测时可用的特征相同、时间/机构边界相同。

如果评估与部署场景不一致,就不能算是对模型进行了有效评估。

关键术语
  • 索引时间:作出预测的时间戳。此后的所有信息都不得作为特征。
  • 观察窗口:用于提取特征的回溯时段,截止于索引时间。
  • 预测间隔:索引时间与结局窗口之间的缓冲期(用于防止目标泄漏)。
  • 预测时限:结局窗口的长度。
  • 患者级分组:同一患者不得出现在多个数据划分中。
  • 机构级留出:至少有一个机构/医院从未出现在训练数据中。
  • 骨架划分:按 Bemis–Murcko 骨架对分子分组,确保测试集中的骨架未在训练中出现。

生物医学数据的实验设计

小样本、高维度(n < p)

常见于组学、罕见病影像和生物标志物发现。

  • 使用嵌套交叉验证:外层循环估计性能,内层循环调整超参数。单层 CV 会使超参数过拟合测试折。
  • 优先使用正则化模型:弹性网、岭回归、带早停的稀疏 GBM。
  • 使用稳定性选择(子采样 + 重新拟合 + 统计特征选择频率),而不是只进行一次特征排序。
  • 绝不要在交叉验证之前,基于完整数据集进行特征选择、归一化或插补。所有预处理都必须在每个训练折内重新拟合。
  • 报告外层各折的置信区间,而不只是点估计。
类别不平衡

默认做法:不处理数据。

决策树:

Is the positive class rare (e.g., <10%)?
├── No → standard training, report AUPRC alongside AUROC.
└── Yes → Is the model's ranking adequate (AUPRC vs. prevalence baseline)?
         ├── Yes → shift the decision threshold to match clinical costs.
         │        Use decision curve analysis to pick the operating point.
         └── No → try class weights or focal loss BEFORE resampling.
                  If you must resample:
                    - Resample only the training fold.
                    - Recalibrate probabilities afterward (Platt/isotonic on held-out fold).
                    - Never resample the validation or test fold.

重采样会扭曲先验概率并破坏校准。大多数“类别不平衡问题”其实是阈值问题。

时间泄漏

患者数据具有纵向特征。随机划分会把未来信息泄漏到过去。

对于每个特征,都要问:这个值在索引时间点是否已知? 如果不是,就不能使用。

必须进行以下构建:

  • 为每位患者定义索引时间点。
  • 定义观察窗口(例如,回溯 365 天)。
  • 定义预测间隔(例如,24 小时),即索引时间点与结局窗口开始之间的间隔。
  • 定义预测时限(例如,30 天死亡率)。
  • 使用向前链式交叉验证:在 [t0, t1] 上训练,在 [t1, t2] 上验证,然后向前推进。不得窥视未来数据。
  • 留出最近的时间段,作为最终的时间测试集。

按数据模态选择模型

默认选择。只有给出理由时才偏离。

模态首选有力的替代方案说明
临床表格数据(结构化 EHR、实验室检查、生命体征)逻辑回归 + 弹性网XGBoost / LightGBM从线性模型开始,以提高可解释性和校准效果。树模型 GBM 通常能以适度优势取得更高准确率。
医学影像(2D、3D、WSI)使用 ImageNet/RadImageNet/基础模型进行迁移学习用于分割的 nnU-Net使用强数据增强进行微调;小规模数据集应冻结较早的层。
时间序列 EHR(事件序列)GRU 或带时间嵌入的 Transformer表格化(按窗口聚合)+ GBM表格化 GBM 是很强的基线;在声称序列模型有帮助之前,先证明它优于该基线。
基因组学(表达、甲基化)对通路聚合特征使用弹性网基于蛋白质–蛋白质相互作用图的 GNN通路聚合可降低维度,并提高生物学可解释性。
图 / 小分子使用支架划分的 GNN(GIN、D-MPNN)指纹 + GBM对分子进行随机划分会使性能被高估 2–5 倍。
临床文本经过领域适配的编码器(ClinicalBERT、BioClinicalBERT、Gatortron)搭配检索的指令微调临床 LLM通用领域的 BERT 表现较差;应适配临床词汇。
决策树:模型选择
What is the input?
├── Structured rows (one row per patient) → Tabular branch
│     ├── n small or interpretability required → logistic + elastic net
│     └── n moderate/large, accuracy priority → GBM (XGBoost/LightGBM)
├── Images → Imaging branch
│     ├── Classification → transfer learning (foundation model preferred if in-domain)
│     └── Segmentation → nnU-Net
├── Longitudinal events → Temporal branch
│     ├── Fixed feature set works → tabularize + GBM (baseline, often wins)
│     └── Irregular, long sequences, rich history → Transformer with time encoding
├── Sequences with biology (DNA/RNA/protein) → specialized encoder or pathway features
├── Molecules → GNN with scaffold split (or fingerprint + GBM baseline)
└── Free text → domain-adapted encoder; RAG if generative

始终运行一个简单基线(多数类、逻辑回归或现有临床评分)。如果深度模型无法以具有临床意义的幅度超越它,就停止。


交叉验证中的陷阱

划分方式决定了结论。划分方式应与部署场景的主张相匹配。

  • 必须按患者分组。 同一患者不能同时出现在训练集和测试集中。这是 HCLS 机器学习论文中最常见的错误。
  • 如果主张是“可推广到不同医院”,则应按站点留出。留出整个站点,而不是在不同站点中随机抽取患者。
  • 如果主张是“可用于前瞻性场景”,则应按时间留出。用较早的数据训练,用较新的数据测试。
  • 分子应使用支架划分;如果存在检测日期,药物发现应使用基于时间的划分。
  • 在每个折内进行预处理。 归一化、缺失值填补、特征选择和过采样都属于模型的一部分,必须在每个训练折内重新拟合。这里的泄漏不易察觉且十分常见。
  • 泄漏审计清单:
    • 是否有由标签派生的特征?
    • 是否有使用索引时间点之后信息计算的特征?
    • 两个划分中是否存在相同的患者、就诊记录、图像或分子支架?
    • 是否有在完整数据集上计算的归一化统计量?
    • 是否有使用测试集选择的超参数?
决策树:选择哪种划分?
What claim is being made?
├── "Works on new patients at this hospital" → patient-level random split
├── "Works at other hospitals" → site-level holdout (leave-site-out CV)
├── "Works in the future" → temporal holdout + forward-chaining CV
├── "Works on new chemical series" → scaffold split
└── "Works on a new population/demographic" → demographic holdout + subgroup eval

三层评估

三项都要报告,务必如此。

  1. 区分能力 — 模型能否将正例排在负例之前?
    • AUROC(整体排序能力)。
    • AUPRC(尤其是患病率 < 10% 时;将患病率报告为基线)。
  2. 校准 — 预测概率是否与观察到的发生率相符?
    • 校准斜率和截距。
    • Brier 分数。
    • 带置信带的可靠性图。
    • 即使 AUROC 很高,未经校准的概率在临床上仍然危险。
  3. 临床效用 — 使用模型能否改善决策?
    • 在临床上合理的阈值范围内进行决策曲线分析(DCA)/净获益分析。
    • 与以下情况比较:全部治疗、均不治疗,以及当前标准治疗。
    • 模型的 AUROC 可能更高,但净获益低于标准治疗。
决策树:评估策略
Is the task classification with a clinical decision attached?
├── Yes → discrimination + calibration + DCA (all three).
│         Report subgroup performance for prespecified groups.
└── No (ranking only, research use) → discrimination + calibration; DCA optional.

Is prevalence < ~10%?
├── Yes → lead with AUPRC, include AUROC; show PR curve.
└── No → AUROC primary, AUPRC secondary.

Are probabilities used downstream (risk communication, triage threshold)?
├── Yes → calibration is mandatory. Recalibrate on a held-out fold if off.
└── No → calibration still reported for transparency.

公平性与亚组分析

HCLS 数据中的偏差很少是随机的。标签本身就编码了历史上的医疗护理差异。

  • 预先指定亚组(性别、作为社会建构类别的种族/族裔、年龄段、保险、站点)。不要在看到结果后再寻找亚组。
  • 报告各亚组的区分能力、校准和净获益。即使模型的区分能力相同,校准不佳仍可能伤害某个亚组。
  • 优先考虑各亚组净获益均衡,而非严格的人口统计均等。均等指标(假阳性率相等、选择率相等)可能降低整体效用,也可能伤害处境最不利的群体。净获益能直接反映临床后果。
  • 审查标签偏差。 如果标签是“接受了治疗 X”,那么医疗服务可及性差异就会变成标签差异。尽可能使用基于结果的标签进行交叉验证。
  • 当亚组样本量较小时,应报告较宽的区间,而不是隐去该群体。

报告标准

根据产出物选择相应标准:

  • TRIPOD+AI — 预测模型的开发/验证。适用于大多数 HCLS 机器学习论文。
  • PROBAST+AI — 偏倚风险评估。投稿前用于自我审查。
  • CLAIM 2024 — 医学影像 AI 报告。
  • MI-CLAIM-GEN — 医学领域的生成式 AI。
  • STARD-AI — 使用 AI 的诊断准确性研究。
  • SPIRIT-AI / CONSORT-AI — AI 试验的方案和报告。

写作前先完成清单。缺失项目几乎总是缺少实验,而不是缺少句子。


FDA 监管注意事项(美国)

对于拟作为医疗器械软件(SaMD)使用的模型:

  • AI-DSF(AI/ML 赋能的器械软件功能)指南界定了哪些内容属于监管范围,以及需要哪些文档。
  • **预定变更控制计划(PCCP)**允许申办方预先说明获批后可进行的更新类型(再训练频率、新数据源、性能边界),且无需重新提交申请。应尽早制定。
  • GMLP(良好机器学习实践)十项原则——多学科团队、具有代表性的数据、独立的训练集/测试集、适合临床工作流的模型设计、人在回路中的性能评估,以及已部署模型的监控。
  • 大多数 HCLS 机器学习器械属于 II 类,通过 510(k)(存在对比器械)或 De Novo(新颖、低至中等风险、无对比器械)途径获批。III 类(PMA)机器学习器械很少见。
  • 即使是非监管研究模型,运用 GMLP 和 PCCP 的思路也能及早发现实际问题。

不应使用此技能的情况

  • 未经工程审查就将模型部署到生产环境
  • 任务需要优化实时推理(系统工程)
  • 构建数据管道或 MLOps 基础设施(使用特定平台的工具)

何时应咨询人工专家

  • 向 FDA 提交 SaMD(医疗器械软件)之前
  • 模型公平性审查发现受保护群体之间存在差异时
  • 临床验证需要设计前瞻性试验时

常见错误

以下任一情况都会使研究失效。发现其中任何一项,都应立即叫停。

  • **错误:**将由结局发生后的数据推导出的特征(例如,事件发生后的实验室检查结果、出院代码)纳入训练集
    **正确做法:**根据索引时间审查每项特征——只能使用决策时点可获取的数据
    **原因:**包含结局信息的特征会使开发阶段的 AUROC 接近完美,但在真实世界中的表现为零

  • **错误:**随机拆分纵向患者数据或分子数据集,却未遵守分组要求
    **正确做法:**临床数据按患者分组,分子数据采用骨架拆分——同一实体不得同时出现在训练集和测试集中
    **原因:**随机拆分会泄露未来信息或结构相似性,导致性能估计虚高(分子数据的估计值会被高估 2–5 倍)

  • **错误:**在类别不平衡的数据上(患病率 < 10%)只报告 AUROC
    **正确做法:**除 AUROC 外,始终报告 AUPRC、患病率基线和决策曲线分析
    **原因:**AUROC 可能达到 0.95,但模型在临床上毫无用处——AUPRC 和 DCA 能揭示模型在符合现实的工作点上是否有帮助

  • **错误:**将重采样(SMOTE、过采样)作为解决类别不平衡问题的主要方法
    **正确做法:**先调整决策阈值;如果确实需要重采样,只能在训练折内部进行,并在之后重新校准
    **原因:**重采样会扭曲先验分布并破坏概率校准——大多数“类别不平衡问题”其实是阈值问题

  • **错误:**仅凭单中心研究就声称结果具有泛化能力
    **正确做法:**要求按机构留出数据,或使用来自不同医院、扫描仪或 EHR 供应商的外部验证
    **原因:**单个机构的数据反映了其特定人群、工作流程和编码实践,无法据此推断结果具有泛化能力

  • **错误:**在与基础模型预训练语料重叠的数据上评估该模型
    **正确做法:**要求使用干净的、截止日期之后的或经过整理的留出基准,且不得与预训练数据重叠
    **原因:**预训练数据与评估集的任何重叠都会抬高性能,并掩盖真实的泛化能力

  • **错误:**在拆分数据集之前,使用完整数据集计算归一化统计量、填补参数或进行特征选择
    **正确做法:**在每个训练折内部重新拟合所有预处理步骤——将这些步骤视为模型的一部分
    **原因:**基于完整数据集进行预处理,会将测试集信息泄露到训练过程中,导致结果过于乐观且无法复现

  • **错误:**使用测试集调优超参数(单层交叉验证)
    **正确做法:**使用嵌套交叉验证——外层循环用于估计性能,内层循环用于调优超参数
    **原因:**使用测试集调优得到的是调优后的分数,而非泛化能力估计——测试集不再独立

  • **错误:**因为亚组样本量较小而跳过亚组分析
    **正确做法:**报告亚组性能及较宽的置信区间,而不是隐去该亚组
    **原因:**小亚组往往最容易受到模型伤害——对它们保持沉默并不代表安全

  • **错误:**部署 AUROC 较高的模型,却不检查校准情况
    **正确做法:**始终评估校准情况(斜率、截距、可靠性图)——如果概率与观察到的发生率不符,就进行重新校准
    **原因:**概率会影响阈值设定、分诊和患者沟通——AUROC 较高但未经校准的模型在临床上很危险


就绪检查清单(声称模型已就绪前使用)

  • 已记录临床问题、决策点和部署工作流。
  • 已针对每位患者定义索引时间、观察窗口、预测间隔和预测时限。
  • 数据划分与部署声明一致(患者、站点、时间、骨架)。
  • 所有预处理均在每个训练折内重新拟合。
  • 当 n 较小时使用嵌套 CV;对于时间相关声明使用前向链式 CV。
  • 已报告简单基线和临床评分基线。
  • 已报告区分度、校准度和决策曲线分析。
  • 已预先指定带区间的亚组分析。
  • 已完成报告检查清单(TRIPOD+AI 或特定模态清单)。
  • 已制定外部验证计划;如果属于 SaMD,还已拟定 GMLP + PCCP 大纲。
  • 已完成并记录数据泄漏审计。

如果有任何一项未勾选,对“是否已就绪?”的回答就是否。

参考资料

评论

支持 Markdown