←纪事

为什么大多数临床AI验证研究都在误导人

AUROC、PPV,以及验证指标许下的承诺与临床医生实际感受之间的落差

Chroneme / 纪事

AUROC:人人都在报,几乎没人真懂

临床AI公司发布验证结果时,摆在最显眼位置的指标几乎总是AUROC,即受试者工作特征曲线下面积。AUROC达到0.95,听上去相当出色,于是它频频出现在融资路演、新闻稿和学术会议的报告里,被当作系统“管用”的证据。医院管理者、投资人,甚至一些临床医生,看到0.95,就认定这个系统有95%的时候能正确识别目标疾病。

这种理解是错的。

AUROC衡量的是区分度:随机抽一个阳性病例和一个阴性病例,系统把阳性排在前面的能力。它是对所有可能的分类阈值的汇总,而其中绝大多数阈值在实践中根本不会用到。其他条件相同,AUROC为0.95的系统确实比0.80的系统更会排序。但关于医院实际部署时采用的那个具体阈值上会发生什么,AUROC一个字也没说;关于系统在这家医院实际服务的人群中表现如何,它同样只字未提。

0.95到了床旁是什么样子

设想一个脓毒症预警系统,AUROC为0.95,灵敏度85%,特异度90%。写在论文里,这组数字相当漂亮。现在把它放进一个真实的ICU,那里脓毒症的患病率是5%。

每筛查1,000名病人,有50人患脓毒症,950人没有。系统正确识别出这50名脓毒症病人中的42.5名,也正确排除了950名非脓毒症病人中的855名。但与此同时,它从这950人中制造了95次假警报。阳性预测值,也就是被标记的病人确实患有脓毒症的概率,是42.5 / (42.5 + 95) = 30.9%。

用这个系统的临床医生,每碰到一次真警报,大约就要碰到两次假警报。在忙碌的ICU里,如果一个系统的报警有70%是错的,用不了几周它就会被当成噪音。0.95的AUROC并没有作假,但它掩盖了假阳性带来的负担,而正是这份负担,决定了到底会不会有人用它。

早在我投身AI之前,还在接受临床训练时,就亲眼见过这一幕。电子病历的警报疲劳已经严重到这种程度:医生们练出了肌肉记忆,连警报写了什么都不看,就直接点“忽略”。

处处是警报,便等于没有警报。

在哪里开发,就在哪里验证

大多数临床AI验证研究,用的是开发该系统的那家机构自己的数据。原因很实际:开发者拿得到自家数据,熟悉自家的记录习惯,内部验证又更快、更省钱。但这会造成一种系统性偏倚,把报告出来的性能抬高。

医院与医院之间的差别,会深刻地影响算法的表现。记录习惯各不相同:有的机构每小时记一次生命体征,有的每四小时才记一次。开化验的习惯不同,电子病历的配置也没有统一标准。一个模型如果只用单一机构的数据训练和测试,它学到的模式里,真实的临床信号和这家机构特有的种种“杂质”混在一起。内部验证把两者一并收了进去,只有外部验证,才能分辨出哪些信号是真的。

最能说明问题的,是Epic的脓毒症预测模型。在内部训练和验证时,它显示出很强的区分度。可当密歇根大学的研究人员拿自己医院的病人独立评估同一个模型时,AUROC跌到了0.63,仅略优于随机猜测。这项研究由Wong et al.于2021年发表在JAMA Internal Medicine上,结果显示,该模型漏掉了三分之二的脓毒症病例,制造的假警报又多到让临床医生的信任迅速流失。

Korean Journal of Radiology上的一篇系统综述,考察了516项已发表的影像诊断AI研究,发现只有6%在独立的外部数据集上检验过算法。依据其余94%的研究做采购决定的医院,实质上买下的是未经核实的性能宣传。

数字是真的,照样能误导人

一家公司报出的数字可以完全准确,却依然给人留下错误的印象。这无关造假,关乎的是怎么摆。

挑着报亚组:一个整体AUROC为0.82的系统,在65岁以上、合并至少三种基础疾病的病人中,也许能达到0.91。公司拿出“高风险人群”的0.91来报告,严格说来并没有错,却让人以为这个系统在全部病人中的表现比实际更好。

只报灵敏度和特异度,不报PPV:一家公司说“灵敏度92%,特异度88%”,句句属实,听起来也很亮眼。另一家公司说“患病率4%时,PPV为28%”,描述的却是同一个系统。换作你做销售演示,会先亮出哪一个数字?

一份负责任的验证报告,要给出系统在实际部署所用阈值上的表现,而不只是所有可能阈值上的汇总;要给出它在不同类型的医院、不同病人群体中的表现,而不只是一个合并后的笼统数字;还要说明验证是内部的还是外部的。大多数报告都做不到。

引进临床AI之前,该怎么评估

大多数在评估临床AI的医疗系统,看到的是一份只有一个性能数字的幻灯片。那个数字通常是AUROC,一个绝大多数临床医生和医院管理者从未受过解读训练的指标。它衡量的是系统按风险给病人排序排得好不好,而不是系统真正报警时准不准。AUROC高,并不说明这个系统在你的医院、面对你的病人、在你将要采用的阈值上表现良好。

更要紧的是下面这些问题。这个系统是否在没有参与开发的医院里测试过?如果只做过内部验证,它的表现到了你这里未必站得住。不同的医院记录方式不同,开化验的频率不同,服务的人群也不同。一个系统在开发它的那家医院里管用,对它在别处是否管用,几乎证明不了什么。

你的护士每个班要面对多少次假警报?如果系统在每个病区发出20条警报,其中15条是错的,用不了几周,你的员工就会学会对所有警报视而不见。要问的是系统实际所用阈值下的假阳性率,而不是验证论文里理论上的最佳情形。

它实际能提前多久发现问题?在危机发生前2小时察觉病情恶化的系统,有一定价值;提前一天甚至更早察觉的系统,则给了你的团队时间,去采取一整套完全不同的干预措施。要问的是真实部署中提前时间的中位数,而不是回顾性分析里的数字。

你的临床医生能看到系统为什么标记某位病人吗?如果看不到,那么不管准确率多高,采用率都会很低。医生受的训练,是评估证据,而不是对着一个无从解释的分数采取行动。

校准、提前时间,以及没人报告的那些指标

机器学习界一直在不遗余力地优化区分度指标。AUROC和AUPRC回答的是:系统能不能把阳性病例和阴性病例分开?对临床部署来说,这是必要条件,但远远不够。

校准衡量的是,预测概率在绝对意义上是否可靠。一个校准良好的系统,若给一组病人估出30%的脓毒症风险,那么这组人里应当大约有30%真的发生脓毒症。校准差,意味着这些数字不能照单全收;而一位要在观察等待和积极干预之间作出抉择的临床医生,需要知道“70%的风险”是不是真的意味着70%。校准可以用校准曲线、Brier评分和Hosmer-Lemeshow统计量来评估,但在临床AI的论文里却很少报告。这种缺席,本身就该被当作一个危险信号。

提前时间衡量的是,与常规方法相比,系统能提前多久发现病情。对于号称能“早期预警”的系统,关键不只在于它能否识别病情恶化,更在于它比标准的临床评估早了多少。一个AUROC稍低、却能多争取20小时提前时间的系统,挽救的生命可能比一个AUROC更高、却几乎没有提前发现优势的系统更多。

我们也用同样的标准要求自己。我们自己的验证结果,包括校准和提前时间,会在完成后公布。

资料来源:对Epic脓毒症模型的评估见Wong et al.,JAMA Internal Medicine,2021。外部验证比例的数据来自Kim et al.,Korean Journal of Radiology,2019。