出品 | CDA數據分析研究院
數據科學是一個在過去幾年裡真正成長的術語,似乎每個人都想加入。最具吸引力的目標之一是利用數據資產的力量來創建能夠預測各種結果的機器學習模型。通過定義明確的模型,可以確定能夠預測結果的最重要影響因素,為戰略假設開發有價值的洞察力,甚至可以通過友好的用戶界面將模型的邏輯實現到軟體應用程式中。
然而,在任何這種魔法發生之前,我們需要知道模型創建的預測是否有益!例如,如果我們的電子郵件程序的垃圾郵件分類器只能檢測到50%的不需要的電子郵件或請求,我們都會非常憤怒。在這篇文章中,我將討論如何使用每個數據科學家應該熟悉的經典工具來評估預測模型:接收器操作特性(ROC)曲線。
說明性實例:預測冠狀動脈疾病
我在這篇文章中使用的數據集來自Bom等人對「疑似冠狀動脈疾病患者冠狀動脈斑塊形態的靶向蛋白質組學的預測價值」。
這項研究檢查了兩種不同的結果,我將重點關注這篇文章的是沒有冠狀動脈疾病(CAD)。作者評估了蛋白質組學生物標誌物在有症狀患者中檢測CAD缺失的預測能力。確定一組可以區分無CAD患者和需要立即幹預的蛋白質的蛋白質組將提供更準確和成本有效的非侵入性診斷測試。
該數據集是測試多個數據科學主題的絕佳來源。通過少量觀察,它很容易使用,但它還包含大量變量以增加複雜性。結果(使用冠狀動脈計算機斷層掃描血管造影術,或CCTA)的可行「黃金標準」被提供來測試預測。對於這篇文章,我將主要關注從單一模型構建ROC曲線,但可以在後面的帖子中使用此數據集深入研究更高級的主題。
預測精度測量概述
在開始創建曲線之前,了解一些評估預測準確性的常用指標非常重要。
積極類:我將正類定義為我試圖檢測的結果類。在這種情況下,缺少 CAD。雖然我意識到這可能會導致診斷測試領域中的「積極」和「消極」這兩個術語混淆,但這種方式定義積極類更能推廣到其他情況。
在這種情況下處理有症狀患者的默認方法是讓他們接受進一步的測試和程序。通過充分檢測沒有CAD的患者,我們將不再需要不必要的,更具侵入性的手術。
一般準確性:簡單地說,有多少科目正確分類?
敏感性:正確識別真陽性的比例。在這種情況下,健康患者的比例由診斷工具正確識別。這有時被稱為「召回」。
SN =真陽性/(真陽性+假陰性)逆(1靈敏度)= 假負率。未被該工具檢測到的健康患者被錯誤地識別為患有CAD。假陰性也稱為II型錯誤。特異性:正確識別真陰性的比例。在這種情況下,通過診斷工具正確識別CAD患者的比例。
SP =真陰性/(真陰性+誤報)逆(1-特異性)= 假陽性率。CAD患者被錯誤地識別為無CAD。誤報也稱為I型錯誤。積極預測價值:該工具報告的陽性比例,實際上是積極的。對於診斷工具報告缺乏CAD的患者組,PPV是實際上沒有患病的患者的比例。這有時被稱為「精確度」。
PPV =真陽性/(真陽性+誤報)負面預測值:該工具報告的負面影響的比例,實際上是負面的。對於診斷工具報告存在CAD的患者組,NPV是實際上沒有CAD的患者的比例。
NPV =真陰性/(真陰性+假陰性)不要擔心,如果你的大腦試圖理清所有這些指標。這些術語很容易混淆,特別是在第一次學習它們時。我發現在2x2表中可視化內容最容易。
二進位類的混淆矩陣(正=沒有CAD,負= CAD)
曲線的解剖
ROC曲線的優點在於它是一種易於理解的圖形工具,可應用於您創建的任何預測模型。以下是曲線的基礎知識:
軸:靈敏度和誤報率
首先,我們需要為情節創造空間。通過將靈敏度與1-特異性(或假陽性率)作圖來建立ROC曲線。
預測概率
現在我們需要繪製一些東西。回想一下,預測模型會將每個觀察分配給最可能的類(在這種情況下,沒有CAD與CAD的存在)。模型實際上在做的是計算屬於特定類的概率。在0和1之間選擇截止值,並且如果計算的概率超過該閾值,則將觀察值分配給該類。
您可能會發現在大多數軟體包中,默認截止值設置為0.5,邏輯是,在二進位類中,可以將觀察值分配給最可能的類。但是,正如我們所看到的,最好在考慮靈敏度和特異性之間的權衡之後選擇截止值。
通過繪製所有可能的截止值來生成ROC曲線,所述截止值是分配給每個觀察的概率。選擇不同的截止值將改變預測工具的靈敏度和特異性,因此,可以使用相關的靈敏度和1-特異性作為坐標在圖的空間中繪製每個截止概率。最靠近左上角的點(SN = 1,FPR = 0)提供精度度量之間的最大平衡。
曲線下面積(AUC)
AUC是一個類似於二元模型的一致性或c統計量的度量。這是具有正類的觀察將具有比在負類中的觀察更大的預測概率的概率。
如果AUC = 1,則表示模型有完美的預測。如果AUC = 0.5,則意味著模型無法區分類。它在邏輯回歸中的行為與r平方相似,因為添加更多預測因子會增加AUC。因此,在分析中包括對外部數據的交叉驗證或驗證非常重要。
AUC可用於評估不同的預測模型。
參考線
繪製參考線通常是個好主意,其中AOC = 0.5在ROC圖上。這提供了比較曲線的基線視覺效果。
生成ROC曲線
雖然可以使用幾個不同的程序來開發預測模型和ROC曲線,但我已經在R中實現了分析。
為了預測結果,我使用xgboost創建了一個分類模型,其中蛋白質生物標記物作為預測因子,並使用重新取代方法來預測數據集中的結果。使用預測的概率,我可以形成上面顯示的ROC曲線。
注意:該程序也設置為使用k-fold交叉驗證,或者可以更新以利用外部驗證,例如列車和測試集的70/30分割(儘管我想要更多數據)。
解釋曲線
AUC為0.738,實際上低於作者用他們的機器學習方法所發現的(堆疊可能提高了分類器的準確性)。但是,我更關心的是選擇合適的截止值並權衡工具的成本和收益。
模型的總體準確性是不錯的,但是當發生假陽性結果時,會發生CAD患者而不是通過必要的程序?讓我們同意這不會是一件好事。
為了安全起見,儘可能減少診斷工具的誤報率可能是個好主意。在生成混淆矩陣時,很容易選擇保持低誤報率的概率截止值。這將作為誰被標記為無CAD的決定標準。
通過選擇保持90%特異性(10%假陽性率)的概率截止值,分類工具能夠檢測到42%沒有CAD的患者(敏感性= 0.42)。在這種情況下,這實際上是一個非常好的結果,因為現狀是讓所有有症狀的患者接受更具侵入性的診斷程序。儘管42%的靈敏度可能聽起來很低,但在這種特定情況下,這是一個很有希望的結果。
在開發用於預測有症狀患者的CAD狀態的分類器時,最重要的是在保持低誤報率的同時實現儘可能高的靈敏度。
ROC曲線的優點在於您可以從單個圖像中可視化所有這些性能指標。將曲線與競爭模型進行比較是一種快速簡便的方法,可以選擇合適的分類或診斷工具。
我只研究了使用ROC曲線和二進位分類工具,但它可以很容易地擴展到多類方案。在同一圖形上,可以繪製與每個特定類別中的概率相對應的多條曲線。
在撰寫本文時,我詳細介紹了如何構建ROC曲線,目的是增加對預測精度度量的理解,以及如何評估您可能正在構建的這些數據科學分類工具。