AUROC:人人都在報,幾乎沒人真懂
臨床AI公司發表驗證結果時,擺在最顯眼位置的指標幾乎總是AUROC,也就是接受者操作特徵曲線下面積。AUROC達到0.95,聽起來相當出色,於是它頻頻出現在募資簡報、新聞稿和學術研討會的演講裡,被當作系統「有效」的證據。醫院管理者、投資人,甚至一些臨床人員,看到0.95,就認定這套系統有95%的時候能正確辨識目標疾病。
這種理解是錯的。
AUROC衡量的是鑑別力:隨機抽一個陽性個案和一個陰性個案,系統把陽性排在前面的能力。它是對所有可能分類閾值的彙總,而其中絕大多數閾值在實務上根本不會用到。在其他條件相同下,AUROC為0.95的系統確實比0.80的系統更會排序。但對於醫院實際部署時採用的那個特定閾值上會發生什麼,AUROC一個字也沒說;對於系統在這家醫院實際服務的族群中表現如何,它同樣隻字未提。
0.95到了床邊是什麼樣子
設想一套敗血症偵測系統,AUROC為0.95,敏感度85%,特異度90%。寫在論文裡,這組數字相當漂亮。現在把它放進一間真實的加護病房,那裡敗血症的盛行率是5%。
每篩檢1,000名病人,有50人罹患敗血症,950人沒有。系統正確辨識出這50名敗血症病人中的42.5名,也正確排除了950名非敗血症病人中的855名。但同時,它從這950人中製造了95次假警報。陽性預測值,也就是被標記的病人確實罹患敗血症的機率,是42.5 / (42.5 + 95) = 30.9%。
使用這套系統的臨床人員,每碰到一次真警報,大約就要碰到兩次假警報。在忙碌的加護病房裡,一套發出警示時有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。
