ROC曲線學(xué)習(xí)總結(jié)最近在學(xué)習(xí)機器學(xué)習(xí)基礎(chǔ)知識部分的時候,看到了用于評估模型性能的ROC曲線,想起來之前上課的時候聽老師提起過,當(dāng)時沒有認(rèn)真去看,所以這次大體上了解了一下,來談?wù)勛约旱目捶ǎ⒆鲂┛偨Y(jié)。
1. ROC曲線(Receiver Operating Characteristic)的概念和繪制 ROC的全稱是“受試者工作特征”(Receiver Operating Characteristic)曲線,首先是由二戰(zhàn)中的電子工程師和雷達(dá)工程師發(fā)明的,用來偵測戰(zhàn)場上的敵軍載具(飛機、船艦),也就是信號檢測理論。之后很快就被引入了心理學(xué)來進行信號的知覺檢測。此后被引入機器學(xué)習(xí)領(lǐng)域,用來評判分類、檢測結(jié)果的好壞。因此,ROC曲線是非常重要和常見的統(tǒng)計分析方法。 首先介紹一下在模型評估上的一些基本概念: 真實情況 | 預(yù)測結(jié)果 | 含義 |
統(tǒng)計量 |
---|
正例 | 反例 |
正例 | TP(將正例正確預(yù)測為正例) | FN(將正例錯誤預(yù)測為負(fù)例) | TP + FN 表示實際數(shù)據(jù)集中正樣本的數(shù)量 | 召回率Recall / 靈敏度Sensitivity / TPR = TP/(TP+FN), 漏診率 = 1 - 靈敏度 | 反例 | FP(將負(fù)例錯誤的預(yù)測為正例) | TN(將負(fù)例正確的預(yù)測為負(fù)例) | FP + TN 表示實際數(shù)據(jù)集中負(fù)樣本的數(shù)量 | FPR = FP/(FP+TN), 特異度(Specificity) = 1 - FPR = TN/(FP+TN) |
加和含義 | TP + FP 表示預(yù)測的正類樣本數(shù) |
FN + TN 表示預(yù)測的負(fù)類樣本數(shù) | TP + FN + FP + TN 表示樣本總數(shù) |
|
統(tǒng)計量 | 精確率Precision = TP/(TP+FP) |
|
| 正確率Accuracy = (TP+TN)/(TP+TN+FP+FN), 錯誤率 = (FP+FN)/(TP+TN+FP+FN), F-measure = 2*(Precision*Recall)/(Precision+Recall) |
其中最重要的兩個公式如下: TPR=TPTP+FN,FPR=FPFP+TNTPR=TPTP+FN,FPR=FPFP+TNTPR = \frac{TP}{TP+FN} ,FPR = \frac{FP}{FP+TN}TPR=TP+FNTP,FPR=FP+TNFP 在ROC曲線圖中,每個點以對應(yīng)的FPRFPRFPRFPR值為橫坐標(biāo),以TPRTPRTPRTPR值為縱坐標(biāo) ROC曲線的繪制步驟如下: 假設(shè)已經(jīng)得出一系列樣本被劃分為正類的概率Score值,按照大小排序。 從高到低,依次將“Score”值作為閾值threshold,當(dāng)測試樣本屬于正樣本的概率大于或等于這個threshold時,我們認(rèn)為它為正樣本,否則為負(fù)樣本。舉例來說,對于某個樣本,其“Score”值為0.6,那么“Score”值大于等于0.6的樣本都被認(rèn)為是正樣本,而其他樣本則都認(rèn)為是負(fù)樣本。 每次選取一個不同的threshold,得到一組FPR和TPR,以FPR值為橫坐標(biāo)和TPR值為縱坐標(biāo),即ROC曲線上的一點。 根據(jù)3中的每個坐標(biāo)點,畫圖。
ROC曲線繪制實例 1、分析數(shù)據(jù) y_true = [0, 0, 1, 1];scores = [0.1, 0.4, 0.35, 0.8]; 2、列表 樣本 | 預(yù)測屬于P的概率(score) | 真實類別 |
---|
y[0] | 0.1 | N | y[1] | 0.4 | N | y[2] | 0.35 | P | y[3] | 0.8 | P |
3、將截斷點依次取為score值,計算TPR和FPR。 當(dāng)截斷點為0.1時: 說明只要score>=0.1,它的預(yù)測類別就是正例。 因為4個樣本的score都大于等于0.1,所以,所有樣本的預(yù)測類別都為P。 scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [1, 1, 1, 1]; 正例與反例信息如下: 由此可得: TPR = TP/(TP+FN) = 1; FPR = FP/(TN+FP) = 1; 當(dāng)截斷點為0.35時: scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [0, 1, 1, 1]; 正例與反例信息如下: 由此可得: TPR = TP/(TP+FN) = 1; FPR = FP/(TN+FP) = 0.5; 當(dāng)截斷點為0.4時: scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [0, 1, 0, 1]; 正例與反例信息如下: 由此可得: TPR = TP/(TP+FN) = 0.5; FPR = FP/(TN+FP) = 0.5; 當(dāng)截斷點為0.8時: scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [0, 0, 0, 1]; 正例與反例信息如下: 由此可得: TPR = TP/(TP+FN) = 0.5; FPR = FP/(TN+FP) = 0; 4、根據(jù)TPR、FPR值,以FPR為橫軸,TPR為縱軸畫圖。 2. 利用ROC曲線評價模型性能——AUC(Area Under Curve) AUC表示ROC曲線下的面積,主要用于衡量模型的泛化性能,即分類效果的好壞。AUC是衡量二分類模型優(yōu)劣的一種評價指標(biāo),表示正例排在負(fù)例前面的概率。一般在分類模型中,預(yù)測結(jié)果都是以概率的形式表現(xiàn),如果要計算準(zhǔn)確率,通常都會手動設(shè)置一個閾值來將對應(yīng)的概率轉(zhuǎn)化成類別,這個閾值也就很大程度上影響了模型準(zhǔn)確率的計算。 之所以采用AUC來評價,主要還是考慮到ROC曲線本身并不能直觀的說明一個分類器性能的好壞,而AUC值作為一個數(shù)量值,具有可比較性,可以進行定量的比較。 AUC值的計算方法: 將坐標(biāo)點按照橫坐標(biāo)FPR排序 。 計算第iiii個坐標(biāo)點和第i+1i+1i+1i+1個坐標(biāo)點的間距dxdxdxdx 。 獲取第iiii或者i+1i+1i+1i+1個坐標(biāo)點的縱坐標(biāo)y。 計算面積微元ds=ydxds=ydxds=ydxds=ydx。 對面積微元進行累加,得到AUC。
AUC值對模型性能的判斷標(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)于隨機猜測。
3. 利用ROC曲線選擇最佳模型首先了解一下ROC曲線圖上很重要的四個點: 第一個點(0,1)(0,1)(0,1)(0,1),即FPR=0, TPR=1,這意味著FN(False Negative)=0,并且FP(False Positive)=0。意味著這是一個完美的分類器,它將所有的樣本都正確分類。 第二個點(1,0)(1,0)(1,0)(1,0),即FPR=1,TPR=0,意味著這是一個最糟糕的分類器,因為它成功避開了所有的正確答案。 第三個點(0,0)(0,0)(0,0)(0,0),即FPR=TPR=0,即FP(False Positive)=TP(True Positive)=0,可以發(fā)現(xiàn)該分類器預(yù)測所有的樣本都為負(fù)樣本(Negative)。 第四個點(1,1)(1,1)(1,1)(1,1),即FPR=TPR=1,分類器實際上預(yù)測所有的樣本都為正樣本。
從上面給出的四個點可以發(fā)現(xiàn),==ROC曲線圖中,越靠近(0,1)的點對應(yīng)的模型分類性能越好。==而且可以明確的一點是,ROC曲線圖中的點對應(yīng)的模型,它們的不同之處僅僅是在分類時選用的閾值(Threshold)不同,每個點所選用的閾值都對應(yīng)某個樣本被預(yù)測為正類的概率值。 那么我們?nèi)绾胃鶕?jù)ROC曲線圖定量的找到當(dāng)前最優(yōu)的分類模型呢? 3.1 不同模型之間選擇最優(yōu)模型 當(dāng)然最直觀的比較方式就是基于AUC值,不同的模型對應(yīng)的ROC曲線中,AUC值大的模型性能自然相對較好。而當(dāng)AUC值近似相等時,有兩種情況:第一種是ROC曲線之間沒有交點;第二種是ROC曲線之間存在交點。在兩個模型AUC值相等時,并不代表兩個模型的分類性能也相等。 ROC曲線之間沒有交點 如下圖所示,A,B,C三個模型對應(yīng)的ROC曲線之間交點,且AUC值是相等的,此時明顯更靠近(0,1)(0,1)(0,1)(0,1)點的A模型的分類性能會更好。 
ROC曲線之間存在交點 如下圖所示,模型A、B對應(yīng)的ROC曲線相交卻AUC值相等,此時就需要具體問題具體分析:當(dāng)需要高Sensitivity值時,A模型好過B;當(dāng)需要高Specificity值時,B模型好過A。 
3.2 同一模型中選擇最優(yōu)點對應(yīng)的最優(yōu)模型 根據(jù)前面的內(nèi)容,我們可以知道,在同一條ROC曲線上,越靠近(0,1)(0,1)(0,1)(0,1)的坐標(biāo)點對應(yīng)的模型性能越好,因為此時模型具有較高的真正率和較低的假正率。那么我們?nèi)绾味康膹囊粭lROC曲線上找到這個最優(yōu)的點呢?通常需要借助ISO精度線來找到這個最優(yōu)的點 ISO精度線(ISO Accuracy Lines) ISO精度線實際上一類斜率確定而截距不確定的直線,設(shè)ISO精度線的方程為y=ax+by=ax+by=ax+by=ax+b,其中aaaa為直線的斜率,bbbb為直線的截距。 a=NEGPOSa=NEGPOSa = \frac{NEG}{POS}a=POSNEG 其中,NEGNEGNEGNEG為數(shù)據(jù)集中負(fù)樣本的數(shù)目,POSPOSPOSPOS為數(shù)據(jù)集中正樣本的數(shù)目 如下圖所示,當(dāng)a=0.5a=0.5a=0.5a=0.5時,圖中的紅線都可以作為ISO精度線 
根據(jù)ISO精度線確定最優(yōu)點 因為ROC曲線上的點都是在同一模型下改變分類閾值得到的,所以在同一條ROC曲線上確定最優(yōu)點的過程,其實就是確定最佳分類閾值的過程,這個閾值能夠讓模型在高真正率和低假正率之間取得最好的平衡,即模型的分類性能最好。 根據(jù)ISO精度線確定最優(yōu)點的步驟: 首先得到ISO精度線的斜率 a=NEGPOSa=NEGPOSa = \frac{NEG}{POS}a=POSNEG 初始化截距b=0b=0b=0b=0,即此時的直線方程為y=axy=axy=axy=ax 逐漸增大截距,即把直線向左上角移動,直到直線與ROC曲線只有一個交點,則這個交點即為我們要找的最優(yōu)點,這個最優(yōu)點對應(yīng)的分類閾值即為使得當(dāng)前模型性能最優(yōu)的分類閾值(本來剛開始考慮這個點應(yīng)該是切點,不過后來想想應(yīng)該不是,因為ROC圖本身是不連續(xù)的,相鄰節(jié)點間都是通過直線連接的)
3.3 當(dāng)測試集中的正負(fù)樣本的分布變換的時候,ROC曲線能夠保持不變 之所以把ROC曲線的這個特性特意提出來講,是因為我覺得這是ROC曲線和AUC這個評價標(biāo)準(zhǔn)最大的優(yōu)勢所在。其他的如正確率、精確率、召回率和F值都會受到樣本分布的影響,即對于同一模型,采用這些指標(biāo)進行性能評估的話,如果輸入的樣本中正負(fù)樣本分布發(fā)生變化,則最終的正確率等參數(shù)也會變化,這種最終結(jié)果會被輸入樣本分布影響的特性,顯然使得這些指標(biāo)在評估某個樣本性能時會對輸入樣本產(chǎn)生依賴,不能很客觀的反應(yīng)模型的性能(所以這也是為什么一個可信數(shù)據(jù)集非常重要的原因,因為數(shù)據(jù)集不僅影響對模型的訓(xùn)練,也會直接影響對模型性能的評估。基于這兩點,我們就可以斷言,對于同一個模型,更可信的數(shù)據(jù)集肯定能夠取得更好的效果。) 而對應(yīng)于同一個模型,當(dāng)其中的正負(fù)樣本分布發(fā)生變化時,ROC曲線能夠基本保持不變,這就保證至少在模型評估階段,樣本分布不會對這一過程產(chǎn)生太大的影響。 那么如何理解這種不變性呢?網(wǎng)上找了很多博客都沒有人解釋過,我也只能簡要的談?wù)勎业南敕ǎ蘸笕绻吹搅吮容^權(quán)威的解釋再來補充吧。 首先,ROC曲線每個點都是以某個閾值對應(yīng)的TPR為縱坐標(biāo),以對應(yīng)FPR為橫坐標(biāo),所以不變性肯定是反映在樣本分布改變時,ROC曲線圖中的點隨著閾值變化橫縱坐標(biāo)的變化保持一致。 舉個例子,當(dāng)一個數(shù)據(jù)集中有PPPP個正樣本和NNNN個負(fù)樣本時,對應(yīng)于某個閾值ThresholdThresholdThresholdThreshold,其TPRTPRTPRTPR和FPRFPRFPRFPR計算公式如下: TPR=TPTP+FN,FPR=FPFP+TNTPR=TPTP+FN,FPR=FPFP+TNTPR = \frac{TP}{TP+FN} ,FPR = \frac{FP}{FP+TN}TPR=TP+FNTP,FPR=FP+TNFP 當(dāng)我們將負(fù)樣本的數(shù)目增加十倍,即此時數(shù)據(jù)集中有PPPP個正樣本和10?N10?N10*N10?N個負(fù)樣本,根據(jù)上面的計算公式可知,在負(fù)樣本數(shù)量增加十倍之后, TPRTPRTPRTPR值的取值范圍是不變,因為TP+FNTP+FNTP+FNTP+FN不變,同時TPTPTPTP的取值為[0,P][0,P][0,P][0,P]之間的整數(shù),所以TPRTPRTPRTPR的離散取值區(qū)間在負(fù)樣本增加的情況下是不變的。 在TPRTPRTPRTPR值不變的條件下,此時對應(yīng)的ThresholdThresholdThresholdThreshold閾值基本不變(如果變化,則TPRTPRTPRTPR值不可能不變),其對應(yīng)的FPRFPRFPRFPR值的取值范圍也是不變的。根據(jù)樣本獨立同分布的假設(shè),負(fù)樣本數(shù)目改變,但負(fù)樣本的預(yù)測概率分布是不變的,即當(dāng)ThresholdThresholdThresholdThreshold不變時,FPFPFPFP值和FP+TNFP+TNFP+TNFP+TN值應(yīng)該是等比例變化的,此時FPRFPRFPRFPR值不變。
綜上,我們可以從感性認(rèn)識上證明當(dāng)樣本的分布發(fā)生變化時,ROC曲線能夠基本保持不變。 接下來給出一個實例,對比ROC曲線和PR(Precision-Recall)曲線在樣本分布變化時的不同。下圖中,(a)和(b)分別為從初始測試集中得到的ROC曲線和PR曲線,?和(d)分別為負(fù)樣本增加十倍之后得到的ROC曲線和PR曲線。由圖中可知,當(dāng)樣本分布變化時,ROC曲線基本沒有變化,而PR曲線則變化很大,這充分說明了ROC曲線在模型性能評估上的優(yōu)勢。 
ROC曲線在多分類問題上的推廣 經(jīng)典的ROC曲線適用于對二分類問題進行模型評估,通常將它推廣到多分類問題的方式有兩種: 對于每種類別,分別計算其將所有樣本點的預(yù)測概率作為閾值所得到的TPRTPRTPRTPR和FPRFPRFPRFPR值(是這種類別為正,其他類別為負(fù)),最后將每個取定的閾值下,對應(yīng)所有類別的TPRTPRTPRTPR值和FPRFPRFPRFPR值分別求平均,得到最終對應(yīng)這個閾值的TPRTPRTPRTPR和FPRFPRFPRFPR值 首先,對于一個測試樣本:1)標(biāo)簽只由0和1組成,1的位置表明了它的類別(可對應(yīng)二分類問題中的‘’正’’),0就表示其他類別(‘’負(fù)‘’);2)要是分類器對該測試樣本分類正確,則該樣本標(biāo)簽中1對應(yīng)的位置在概率矩陣P中的值是大于0對應(yīng)的位置的概率值的。
上面的兩個方法得到的ROC曲線是不同的,當(dāng)然曲線下的面積AUC也是不一樣的。 在python中,方法1和方法2分別對應(yīng)sklearn.metrics.roc_auc_score函數(shù)中參數(shù)average值為’macro’和’micro’的情況。
|