用ROC曲線解析預測模型

2020-12-25 CDA數據分析師

出品 | 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曲線,目的是增加對預測精度度量的理解,以及如何評估您可能正在構建的這些數據科學分類工具。

相關焦點

  • R與生物專題 | 第五十講 R-ROC曲線
    在「R與生物統計專題」中,我們會從介紹R的基本知識展開到生物統計原理及其在R中的實現。
  • 機器學習中的AUC-ROC曲線
    AUC-ROC曲線你已經建立了你的機器學習模型-那麼接下來呢?你需要對它進行評估,並驗證它有多好(或有多壞),這樣你就可以決定是否實現它。這時就可以引入AUC-ROC曲線了。但在此之前,我們先來了解一下為什麼預測概率比直接預測目標類要好。預測概率機器學習分類模型可以直接預測數據點的實際類別或預測其屬於不同類別的概率。後者使我們對結果有更多的控制權。我們可以確定自己的閾值來解釋分類器的結果。這更為謹慎!
  • 數據挖掘之模型評估(均方誤差、精確率、召回率及ROC曲線的含義)
    我們都知道,數據挖掘最終的目的就是建立業務模型,然後投入到實際中做一些分類或者預測的事情,但是這個模型做的好不好,我們總要評價吧?這就需要我們對建立的模型做評估,然後根據評估指標和實際的業務情況決定是否要發布這個模型,那麼常用的模型評估指標有哪些呢?他們之間的聯繫又是什麼呢?
  • 多分類結局的ROC分析
    但隨著機器學習及大數據的發展,針對多分類結局的預測情況越來越常見,而ROC分析是評價模型預測效果的常用方法,因此多分類結局的ROC分析著實需要。好奇的小編查閱了大量的資料後,發現通過python的sklearn包提供的micro-average (micro法) 和macro-average (macro法) 可以進行多分類結局的ROC分析。
  • 畫ROC曲線的R包總結
    /在這篇文章中,我將描述如何在CRAN中搜索繪製ROC曲線的包,並強調六個有用的包。下面的代碼使用包附帶的合成數據集並繪製默認的ROCR ROC曲線。在本文中,我將使用相同的數據集。輸入的術語有點折衷,但是一旦您理解了ROC.curve()函數,就可以輕鬆地繪製出一條乾淨的ROC曲線。正如vignette所指示,PRROC的創建實際上是為了做precision-recall曲線。
  • ROC評價指標最全攻略及Python實現
    所以,該指標也被引用到AI領域,用於對模型測試結果進行描述,進而反應模型的性能。針對如何繪製ROC曲線這個問題,首先需要做一下幾個步驟:根據機器學習中分類器的預測得分對樣例進行排序按照順序逐個把樣本作為正例進行預測,計算出FPR和TPR分別以FPR、TPR為橫縱坐標作圖即可得到ROC曲線所以,作ROC曲線時,需要先求出FPR和TPR。
  • 模型預測-概念梳理
    混淆矩陣對模型預測涉及的兩個內容,真實值(Actual Values)和預測值(Predicted Values)進行統計,放在R裡,即是table 對真實值和預測值的展示;一般,我們經常涉及的是二分類情況下的混淆矩陣:Actual<-c(1,1,0,0,1,1,1)Predicted<-c(1,0,1,1,0,1,1)table(Actual
  • 單變量和多變量對基因表達式的預測能力對比
    在下一節中,我們將把數據集分割成訓練和測試子集,然後在訓練集上實現單變量和多變量特徵選擇(訓練)模型,並使用平衡假陽性(FPR)和真陽性(TPR)率的roc曲線技術對測試集上的模型進行評估。性別預測:LASSO與單變量方法為了評估單變量和多變量模型的預測能力,我們需要對獨立的數據集進行訓練和評估。
  • 一文讀懂AUC-ROC
    英文原文:https://towardsdatascience.com/understanding-auc-roc-curve-68b2303cc9c5在機器學習中,性能測量是一項重要任務。當涉及到分類問題時,我們依靠AUC  -  ROC曲線來做性能評測。當我們需要檢查或可視化多類分類問題的性能時,我們使用AUC(曲線下面積)和ROC(接收器操作特性)曲線。
  • 深度學習多種模型評估指標介紹 - 附sklearn實現
    8、常用分類指標confusion_matrixSklearn中confusion_matrix函數混淆矩陣是機器學習中總結分類模型預測結果,混淆矩陣是展示了真實數據的正負類別和模型預測的分類的正負的類別(可以是多分類
  • 用lasso回歸構建生存模型+ROC曲線繪製
    有了模型,可以將篩選的基因挑出來了。所有基因存放於模型的子集beta中,用到的基因有一個s0值,沒用的基因只記錄了「.」,所以可以用下面代碼挑出用到的基因。=0]12length(choose_gene_min)13#> [1] 3314length(choose_gene_1se)15#> [1] 123.模型預測和評估3.1自己預測自己newx參數是預測對象。
  • 機器學習系列-ROC曲線以及AUC計算
    計算方法有兩種:         1:繪製ROC曲線,ROC下面的曲線面試就是AUC的值         2:假設總共有(m+n)個樣本,其中正樣本m個,負樣本n個,總共有m*n個樣本對,計數,正樣本預測為正樣本的概率值大於負樣本預測為正樣本的概率值記為1,累加計數,然後除以(m*n)就是AUC的值那麼ROC又是什麼呢?
  • TCGA+biomarker——ROC曲線
    AUC(Area Under Curve)被定義為ROC曲線下的面積。我們往往使用AUC值作為模型的評價標準是因為很多時候ROC曲線並不能清晰的說明哪個分類器的效果更好,而作為一個數值,對應AUC更大的分類器效果更好。
  • 【基礎】模型評估指標 AUC 和 ROC,這是我看到的最透徹的講解
    根據維基百科的定義,AUC(area under the curve)是ROC曲線下的面積。所以,在理解AUC之前,要先了解ROC是什麼。而ROC的計算又需要藉助混淆矩陣,因此,我們先從混淆矩陣開始談起。假設,我們有一個任務:給定一些患者的樣本,構建一個模型來預測腫瘤是不是惡性的。在這裡,腫瘤要麼良性,要麼惡性,所以這是一個典型的二分類問題。
  • 【手把手教你】使用Logistic回歸、LDA和QDA模型預測指數漲跌
    機器學習可簡單理解為利用統計模型或算法擬合樣本數據並進行預測,其模型算法根據學習任務可以分為分類、回歸和聚類。分類方法是對離散型隨機變量建模或預測的監督學習方法。分類是按照某種標準給對象貼標籤,再根據標籤來區分歸類。而所謂的學習,其本質就是找到特徵與標籤間的關係(mapping 即映射)。換句話說,分類預測模型是一個從輸入特徵到離散的輸出標籤之間的映射函數。
  • ROC曲線和AUC面積理解
    我們根據學習器的預測結果,把閾值從0變到最大,即剛開始是把每個樣本作為正例進行預測,隨著閾值的增大,學習器預測正樣例數越來越少,直到最後沒有一個樣本是正樣例。在這一過程中,每次計算出兩個重要量的值,分別以它們為橫、縱坐標作圖,就得到了「ROC曲線」。
  • ROC曲線
    關鍵詞 import matplotlib.pylab as pltfrom scipy import interpfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.metrics import roc_curve,aucfrom sklearn.model_selection
  • Matlab建立SVM,KNN和樸素貝葉斯模型分類繪製ROC曲線
    X 是351x34預測變量的矩陣。 擬合一個邏輯回歸模型來估計雷達返回的後驗概率是一個不好的概率。使用SVM模型的分數計算標準ROC曲線。在同一樣本數據上擬合樸素貝葉斯分類器。計算後驗概率(分數)[~,score_nb] = resubPredict(mdlNB);使用樸素貝葉斯分類的分數計算標準ROC曲線。
  • 10分鐘用python進行人工智慧建立預測模型
    這篇文章會用最容易的方式引導你更快地構建第一個預測模型。出乎意料的簡單!10分鐘用python進行人工智慧建立預測模型揭秘預測建模的過程我一直專注於在模型構建的初始階段投入質量時間,如假設生成/腦力激蕩會議/討論或理解領域。所有這些活動都幫助我解決問題,最終導致我設計出更強大的業務解決方案。有充分理由說明你應該事先花時間:1.
  • 多分類變量居然也可以做ROC曲線
    from sklearn.metrics import roc_auc_scoredef load_data():x_train - mu) / np.sqrt(np.maximum(var, eps)) x_test = (x_test - mu) / np.sqrt(np.maximum(var, eps)) # 定義分類器,訓練和預測