前言
最近接觸到ROC曲線相關(guān)的問題,因此下面整理出相關(guān)的文章,記錄相關(guān)原理和應(yīng)用。
數(shù)據(jù)分析最讓人著迷的一種用途是可以基于現(xiàn)有數(shù)據(jù)創(chuàng)建能夠區(qū)分不同類型情景的機器學(xué)習(xí)預(yù)測模型。通過定義明確的模型,可以確定能夠預(yù)測結(jié)果的最重要影響因素,為戰(zhàn)略假設(shè)開發(fā)有價值的洞察力,甚至可以通過友好的用戶界面將模型的邏輯實現(xiàn)到軟件應(yīng)用程序中。
首先,我們需要評估構(gòu)建好的預(yù)測模型是否具有良好準(zhǔn)確的預(yù)測能力!比如,如果我們的電子郵件程序的垃圾郵件分類器只能檢測到50%的不需要的電子郵件或請求,我們都會非常憤怒。本文將討論如何使用經(jīng)典工具來評估預(yù)測模型:接收器操作特性(ROC)曲線。
本文主要分為三個部分整理ROC曲線相關(guān)內(nèi)容,可根據(jù)自己的需要進(jìn)行挑選:
1、使用ROC曲線分析的相關(guān)文獻(xiàn)實例
2、ROC曲線的原理和歷史
3、如何繪制ROC曲線
使用ROC曲線分析的相關(guān)文獻(xiàn)實例
從一篇SCI出發(fā):Improvement of Insulin Sensitivity after Lean Donor Feces in Metabolic Syndrome Is Driven by Baseline Intestinal Microbiota Composition
這是阿姆斯特丹大學(xué)學(xué)術(shù)醫(yī)學(xué)中心在2017年發(fā)表在cell子刊上的文獻(xiàn),其中一個highlight提到:Response to lean donor FMT is driven by baseline fecal microbiota composition,使用了ROC曲線來評估預(yù)測模型的好壞。
為了比較異體FMT中菌群與效果之間的關(guān)系,首先按照FMT前后Rd值的變化將患者分為responders組和non-responders組,并比較了兩組的菌群差異,從菌群多樣性變化來看,基于Shannon指數(shù)發(fā)現(xiàn),兩組的多樣性均沒有發(fā)生顯著改變,然而,兩組基線時的菌群多樣性卻又顯著差異(圖5A),具體表現(xiàn)為non-responders的基線菌群多樣性顯著高于responders。隨后,作者使用了彈性網(wǎng)絡(luò)算法elastic net?algorithm (Zou and Hastie, 2005)區(qū)分responders和non-responders,為了避免過度擬合,在數(shù)據(jù)的訓(xùn)練分區(qū)(80%)上使用了十折交叉驗證,剩下的20%樣品用作測試數(shù)據(jù)集。要選擇的參數(shù)是 L1,L2范數(shù)和正則化閾值之間的比率。穩(wěn)定性選擇采用80% 的隨機二次抽樣方法進(jìn)行,共100次。在穩(wěn)定性選擇過程中,計算所有權(quán)重系數(shù)為非零的特征。這些計數(shù)被歸一化并轉(zhuǎn)換為穩(wěn)定系數(shù),對于總是被選擇的特征值在1.0之間,對于從未被選擇的特征值在0.0之間。通過隨機試驗評價彈性網(wǎng)絡(luò)算法所得結(jié)果的統(tǒng)計有效性。按照程序?qū)⒔Y(jié)果變量(例如,同種異體相對于自體或應(yīng)答者相對于無應(yīng)答者)隨機重組,同時保留相應(yīng)的微生物譜。重復(fù)100次,每次計算受試者-工作特征-曲線下面積(ROC AUC)評分。用于二進(jìn)制分類任務(wù)的性能度量是 ROC AUC。ROC 可以理解為一個正確分類同種異體受試者與自體受試者或有效者與無效者的概率圖。數(shù)據(jù)集中的交叉驗證是通過隨機隱藏模型中20% 的受試者并評估該組的預(yù)測質(zhì)量來完成的。ROC AUC 評分用0.5 AUC 來衡量分類模型的預(yù)測準(zhǔn)確性,對應(yīng)于一個隨機結(jié)果。定義了一個臨界值0.05,并將原始數(shù)據(jù)集的真實 AUC 與此值進(jìn)行了比較。
作者通過ROC曲線評估了基線菌群組成預(yù)測6周代謝反應(yīng)的模型,顯示AUC=0.88,模型良好。
從這篇文獻(xiàn)了解到ROC曲線可用于評估某個尋找biomarkers的預(yù)測模型的好壞。
再從一篇SCI了解:Alterations in the gut microbiome and metabolism with coronary artery disease severity
這是一篇本課題組與北京協(xié)和醫(yī)學(xué)院合作在2019年發(fā)表的文章,關(guān)注了不同冠狀動脈疾病Coronary artery disease (CAD)類型患者的腸道菌群區(qū)分差異。其中,作者通過ROC曲線評估了區(qū)分不同CAD亞型(穩(wěn)定型冠狀動脈疾病(SCAD) ,不穩(wěn)定型心絞痛(UA)和心肌梗死(MI))的特征共變化菌群和代謝物隨機森林模型,得到比較良好的預(yù)測結(jié)果。
Subgroup identification and prediction based on CAGs and CAD-associated metabotypes
為了確定腸道菌群中的 CAGs 和代謝產(chǎn)物模塊是否可以作為鑒別冠心病不同階段與正常冠狀動脈的生物標(biāo)志物,根據(jù)24個 CAGs 和72個血清代謝類型構(gòu)建了隨機森林模型對冠心病不同階段進(jìn)行分類,并利用 ROC曲線(ROC)曲線對分類進(jìn)行了檢驗(詳情見“材料和方法”一節(jié))。總共構(gòu)建了5個預(yù)測模型(Control vs. CAD, Control vs. SCAD, SCAD vs. UA, SCAD vs. ACS和UA vs. MI)。
隨后,作者再通過招募新隊列使用該模型進(jìn)行分類預(yù)測,進(jìn)一步論證該疾病亞型識別模型的潛在分類能力。
小結(jié):從這兩篇文獻(xiàn)來看,作者均通過某個分類法機器學(xué)習(xí)預(yù)測模型尋找biomarkers,然后使用ROC曲線對模型進(jìn)行評估。因此,我們可以初步得知,ROC曲線是用于檢驗構(gòu)建的預(yù)測模型好壞的一種衡量方法。那么除了這種用途,ROC曲線還能做什么呢?
為了進(jìn)一步了解并應(yīng)用ROC曲線,我們需要首先了解ROC曲線的原理和過往↓
ROC曲線的原理和歷史
關(guān)于ROC曲線相關(guān)介紹的文章非常多,這里我摘抄出個人認(rèn)為比較詳細(xì),可用性強的文章,加以理解。
一、評估預(yù)測模型的方法
首先,我們應(yīng)該了解到預(yù)測模型的類型可以分為回歸模型和分類模型(分類模型又有兩類算法:分類輸出型和概率輸出型,這里就不一一贅述),而不同模型的評估度量也是不同的,如何評估模型好壞,機器學(xué)習(xí)(二十四)——常見模型評估方法,分類模型的評估方法簡介首先需要了解自己構(gòu)建的預(yù)測模型類型來決定評估方法,并不局限于使用ROC曲線進(jìn)行評估。
ROC曲線原理:
關(guān)于ROC曲線的概念和意義可參考:ROC曲線的概念和意義
英文比較好的話也可以看看這篇:ROC curves – what are they and how are they used?
為了更直觀的理解ROC,也可以看看這個視頻:ROC and AUC, Clearly Explained!
受試者工作特征曲線(receiver operator characteristic curve, ROC曲線),最初用于評價雷達(dá)性能,又稱為接收者操作特性曲線。ROC曲線其實就是從混淆矩陣衍生出來的圖形,以真陽性率(靈敏度,Sensitivity)為縱坐標(biāo),假陽性率(1-特異度,1-Specificity)為橫坐標(biāo)繪制的曲線。
其自變量(檢驗項目)一般為連續(xù)性變量(如蛋白質(zhì)因子、菌株、代謝物等的檢測豐度或含量),因變量(金標(biāo)準(zhǔn),如某疾病亞型分類、治療響應(yīng)和無響應(yīng)、患病和未患病)一般為二分類變量。
ROC曲線圖形:隨著閾值的減小,更多的值歸于正類,敏感度和1-特異度也相應(yīng)增加,所以ROC曲線呈遞增趨勢。那條45度對角線是一條參照線,也就是說ROC曲線要與這條曲線比較。簡單的說,如果我們不用模型,直接隨機把客戶分類,我們得到的曲線就是那條參照線,然而我們使用了模型進(jìn)行預(yù)測,就應(yīng)該比隨機的要好,所以ROC曲線要盡量遠(yuǎn)離參照線,越遠(yuǎn),我們的模型預(yù)測效果越好。
ROC曲線就是用來判斷診斷的正確性,最理想的就是曲線下的面積為1,比較理想的狀態(tài)就是曲線下的面積在0.8-0.9之間,0.5的話對實驗結(jié)果沒有什么影響。
提到ROC曲線,就離不開AUC(ROC曲線下面積),其判定方法為AUC應(yīng)該大于0.5。ROC曲線是根據(jù)與對角線進(jìn)行比較來判斷模型的好壞,但這只是一種直覺上的定性分析,如果我們需要精確一些,就要用到AUC,也就是ROC曲線下面積(AUC)。
從AUC判斷分類器(預(yù)測模型)優(yōu)劣的標(biāo)準(zhǔn):
AUC = 1,是完美分類器,采用這個預(yù)測模型時,存在至少一個閾值能得出完美預(yù)測。絕大多數(shù)預(yù)測的場合,不存在完美分類器。
0.5 < AUC < 1,優(yōu)于隨機猜測。這個分類器(模型)妥善設(shè)定閾值的話,能有預(yù)測價值。
AUC = 0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預(yù)測價值。
AUC < 0.5,比隨機猜測還差;但只要總是反預(yù)測而行,就優(yōu)于隨機猜測。
看上圖,參考線的面積是0.5,ROC曲線與它偏離越大,ROC曲線就越往左上方靠攏,它下面的面積(AUC)也就越大,這里面積是0.869。我們可以根據(jù)AUC的值與0.5相比,來評估一個分類模型的預(yù)測效果。
二、ROC曲線的歷史和關(guān)鍵值
這里推薦閱讀這篇簡書:機器學(xué)習(xí)基礎(chǔ)(1)- ROC曲線理解。這里從最初雷達(dá)兵使用ROC曲線評估的故事說起,言簡意賅。
ROC曲線最初的研究是為了確定美國雷達(dá)“接收機操作員”是如何漏掉日本飛機的。在模型預(yù)測判斷中,會出現(xiàn)真陽、假陽、真陰和假陰的三種情況,而不同雷達(dá)兵都可能有自己的一套評判標(biāo)準(zhǔn),對每個接收的信號是大鳥還是轟炸機,每個雷達(dá)兵會給出自己的判斷結(jié)果,這樣每個雷達(dá)兵就都能計算出一個ROC曲線上的關(guān)鍵點(一組FPR,TPR值),把大家的點連起來,也就是最早的ROC曲線了。
ROC曲線需要了解幾個關(guān)鍵值:
敏感性:正確識別真陽性的比例。在這種情況下,健康患者的比例由診斷工具正確識別。這有時被稱為“召回”。
SN =真陽性/(真陽性+假陰性)
逆(1靈敏度)=?假負(fù)率。未被該工具檢測到的健康患者被錯誤地識別為患有CAD。假陰性也稱為II型錯誤。
特異性:正確識別真陰性的比例。在這種情況下,通過診斷工具正確識別CAD患者的比例。
SP =真陰性/(真陰性+誤報)
逆(1-特異性)=?假陽性率。CAD患者被錯誤地識別為無CAD。誤報也稱為I型錯誤。
積極預(yù)測價值:該工具報告的陽性比例,實際上是積極的。對于診斷工具報告缺乏CAD的患者組,PPV是實際上沒有患病的患者的比例。這有時被稱為“精確度”。
PPV =真陽性/(真陽性+誤報)
負(fù)面預(yù)測值:該工具報告的負(fù)面影響的比例,實際上是負(fù)面的。對于診斷工具報告存在CAD的患者組,NPV是實際上沒有CAD的患者的比例。
NPV =真陰性/(真陰性+假陰性)
這里可以借助混淆矩陣加以理解:
TP(True Positive): 真實為0,預(yù)測也為0
FN(False Negative): 真實為0,預(yù)測為1
FP(False Positive): 真實為1,預(yù)測為0
TN(True Negative): 真實為0,預(yù)測也為0
三、ROC曲線的主要作用
1、ROC曲線能很容易地查出任意界限值時的對疾病的識別能力。
2、選擇最佳的診斷界限值。
3、兩種或兩種以上不同診斷試驗對疾病識別能力的比較。在對同一種疾病的兩種或兩種以上診斷方法進(jìn)行比較時,可將各試驗的ROC曲線繪制到同一坐標(biāo)中,以直觀地鑒別優(yōu)劣,靠近左上角的ROC曲線所代表的受試者工作最準(zhǔn)確。亦可通過分別計算各個試驗的ROC曲線下的面積(AUC)進(jìn)行比較,哪一種試驗的AUC最大,則哪一種試驗的診斷價值最佳。
四、交叉驗證和過擬合問題
機器學(xué)習(xí)】Cross-Validation(交叉驗證)詳解
10折交叉驗證(10-fold Cross Validation)與留一法(Leave-One-Out)、分層采樣(Stratification)
意識到過擬合好像也是個棘手的問題,所以在這里補充一下:
簡單來講,當(dāng) train set 誤差較小,而 test set 誤差較大時,我們即可認(rèn)為模型過擬合。這句話表達(dá)的另一層意思是,模型評估指標(biāo)的方差(variance)較大,即可認(rèn)為模型過擬合。另外,無論監(jiān)督學(xué)習(xí)還是非監(jiān)督學(xué)習(xí),均存在過擬合的問題。
有一個比喻還不錯,這里也摘抄下來:
語文老師 讓同學(xué)A 解釋一個句子: ?‘某魯迅先生的文章~~~~~~~~’
欠擬合: ? ?差生: 這是個什么鬼東西,比例嗶哩嗶哩~~~~
過擬合: ? ?語文老師的解釋: ‘表面上看是~~~,但其實~~~~,本質(zhì)上~~~~~~,反映了~~~~心情,烘托了~~~氣氛~~~’
正常: ? ? ? ?當(dāng)時魯迅先生覺得天色晚了,該休息了。
那么,如何才能夠在一定程度上避免過擬合呢?這就引出了交叉驗證:
最簡單的判斷模型是否過擬合的方法,就是通過training accuracy 和 test accuracy 數(shù)值大小,直觀的判斷模型是否過擬合。例如,訓(xùn)練集的準(zhǔn)確率為90%,而測試集的準(zhǔn)確率為70%,那么我們可以認(rèn)為模型過擬合。不過,這種方法沒有明確的判斷標(biāo)準(zhǔn),完全靠個人的主觀判斷——“感覺訓(xùn)練和測試的誤差相差有點大,有可能過擬合”。
如何利用交叉驗證避免過擬合?
避免模型過擬合的方法,總結(jié)大概以下幾點:
? ?- 重新清洗數(shù)據(jù)(刪除稀疏特征、對噪聲數(shù)據(jù)進(jìn)行處理(刪除/替換))
- 重新采樣(改變采樣方法等)
- 增加訓(xùn)練數(shù)據(jù)
- 采用交叉驗證訓(xùn)練模型
- 重新篩選特征
- 降低模型復(fù)雜度(增加正則項:L1,L2)
- dropout(神經(jīng)網(wǎng)絡(luò)中,讓神經(jīng)元一定的概率不工作)
這里探討如何利用交叉驗證來避免模型過擬合:
第一個作用是對模型的性能進(jìn)行評估。當(dāng)我們通過一次劃分樣本對模型進(jìn)行訓(xùn)練和測試時,由于樣本劃分的偶然性,會導(dǎo)致我們對模型的評估不準(zhǔn)確。因此,可以采用交叉驗證對模型進(jìn)行評估(一般采用5折或10折,sklearn默認(rèn)采用的是3折),以 n 折交叉驗證結(jié)果的均值,作為模型的性能評估。
第二個作用就是用來避免過擬合。例如當(dāng)我們進(jìn)行10折交叉驗證時,訓(xùn)練了10次,得到了10個模型,每個模型的參數(shù)也是不同的,那么我們究竟用哪個模型作為我們最終的模型呢?答案是:一個都不用!我們要利用全量數(shù)據(jù)重新訓(xùn)練出一個最終模型!
ROC曲線的繪制方法
關(guān)于實現(xiàn)ROC曲線的繪制,可通過多種途徑進(jìn)行,這里列出一些可操作平臺和方法:
1、SPSS:如何用SPSS做ROC曲線分析?看這1篇就夠了!
2、R語言:R語言邏輯回歸、ROC曲線和十折交叉驗證
? ? ? ? ? ? ? ? ? ?ROC曲線基于R語言-(pROC包)
? ? ? ? ? ? ? ? ? ?R語言pROC包繪制ROC曲線
3、Python:機器學(xué)習(xí)基礎(chǔ)(1)- ROC曲線理解
? ? ? ? ? ? ? ? ? ? ROC原理介紹及利用python實現(xiàn)二分類和多分類的ROC曲線
4、Matlab:Matlab繪圖——ROC曲線繪制(官方demo)
? ? ? ? ? ? ? ? ? ??ROC曲線詳解及matlab繪圖實例
小結(jié)
ROC曲線的初步學(xué)習(xí)就到這里,我們初步了解到ROC曲線最初是用來評估雷達(dá)兵判斷的轟炸機信號準(zhǔn)確性的方法,隨后沿用到了醫(yī)學(xué)指標(biāo)的判定上,在生活中應(yīng)用廣泛。ROC曲線可用于查出任意界限值時的對疾病的識別能力,選擇最佳的診斷界限值,還可以用在評估機器學(xué)習(xí)預(yù)測模型的好壞上(目前好像這方面用的比較多)。當(dāng)然,還有一些問題值得討論,比如,何時需要使用ROC曲線,S折交叉驗證平均ROC曲線如何繪制,等等。在機器學(xué)習(xí)模型構(gòu)建過程中,訓(xùn)練集和測試集的建立,模型的交叉驗證和ROC曲線評估的結(jié)合,還需要繼續(xù)學(xué)習(xí)。
參考文獻(xiàn)
Kootte RS, Levin E, Saloj?rvi J, Smits LP, Hartstra AV, Udayappan SD, Hermes G, Bouter KE, Koopen AM, Holst JJ, Knop FK, Blaak EE, Zhao J, Smidt H, Harms AC, Hankemeijer T, Bergman JJGHM, Romijn HA, Schaap FG, Olde Damink SWM, Ackermans MT, Dallinga-Thie GM, Zoetendal E, de Vos WM, Serlie MJ, Stroes ESG, Groen AK, Nieuwdorp M. Improvement of Insulin Sensitivity after Lean Donor Feces in Metabolic Syndrome Is Driven by Baseline Intestinal Microbiota Composition. Cell Metab. 2017 Oct 3;26(4):611-619.e6. doi: 10.1016/j.cmet.2017.09.008. PMID: 28978426.
Liu H, Chen X, Hu X, Niu H, Tian R, Wang H, Pang H, Jiang L, Qiu B, Chen X, Zhang Y, Ma Y, Tang S, Li H, Feng S, Zhang S, Zhang C. Alterations in the gut microbiome and metabolism with coronary artery disease severity. Microbiome. 2019 Apr 26;7(1):68. doi: 10.1186/s40168-019-0683-9. PMID: 31027508; PMCID: PMC6486680.
Rodriguez-Ruiz A, L?ng K, Gubern-Merida A, Broeders M, Gennaro G, Clauser P, Helbich TH, Chevalier M, Tan T, Mertelmeier T, Wallis MG, Andersson I, Zackrisson S, Mann RM, Sechopoulos I. Stand-Alone Artificial Intelligence for Breast Cancer Detection in Mammography: Comparison With 101 Radiologists. J Natl Cancer Inst. 2019 Sep 1;111(9):916-922. doi: 10.1093/jnci/djy222. PMID: 30834436; PMCID: PMC6748773.
Duclos G, Bobbia X, Markarian T, Muller L, Cheyssac C, Castillon S, Resseguier N, Boussuges A, Volpicelli G, Leone M, Zieleskiewicz L. Speckle tracking quantification of lung sliding for the diagnosis of pneumothorax: a multicentric observational study. Intensive Care Med. 2019 Sep;45(9):1212-1218. doi: 10.1007/s00134-019-05710-1. Epub 2019 Jul 29. PMID: 31359081.