1. 程式人生 > >PR,ROC,AUC計算方法

PR,ROC,AUC計算方法

受試者工作特徵曲線 receiver operating characteristic curve,簡稱ROC曲線),又稱為感受性曲線(sensitivity curve)。得此名的原因在於曲線上各點反映著相同的感受性,它們都是對同一訊號刺激的反應,只不過是在幾種不同的判定標準下所得的結果而已。接受者操作特性曲線就是以虛報概率為橫軸,擊中概率為縱軸所組成的座標圖,和被試在特定刺激條件下由於採用不同的判斷標準得出的不同結果畫出的曲線。

ROC曲線是根據一系列不同的二分類方式(分界值或決定閾),以真陽性率(靈敏度)為縱座標,假陽性率(1-特異度)為橫座標繪製的曲線。

1.ROC曲線能很容易地查出任意界限值時的對

疾病的識別能力。

2.選擇最佳的診斷界限值。ROC曲線越靠近左上角,試驗的準確性就越高。最靠近左上角的ROC曲線的點是錯誤最少的最好閾值,其假陽性和假陰性的總數最少。

3.兩種或兩種以上不同診斷試驗對疾病識別能力的比較。在對同一種疾病的兩種或兩種以上診斷方法進行比較時,可將各試驗的ROC曲線繪製到同一座標中,以直觀地鑑別優劣,靠近左上角的ROC曲線所代表的受試者工作最準確。亦可通過分別計算各個試驗的ROC曲線下的面積(AUC)進行比較,哪一種試驗的 AUC最大,則哪一種試驗的診斷價值最佳。

1.ROC曲線繪製。依據專業知識,對疾病組和參照組測定結果進行分析,確定測定值的上下限、組距以及截斷點(

cut-off point),按選擇的組距間隔列出累積頻數分佈表,分別計算出所有截斷點的敏感性、特異性和假陽性率(1-特異性)。以敏感性為縱座標代表真陽性率,(1-特異性)為橫座標代表假陽性率,作圖繪成ROC曲線。

2.ROC曲線評價統計量計算。ROC曲線下的面積值在1.0和0.5之間。在AUC>0.5的情況下,AUC越接近於1,說明診斷效果越好。AUC在 0.5~0.7時有較低準確性,AUC在0.7~0.9時有一定準確性,AUC在0.9以上時有較高準確性。AUC=0.5時,說明診斷方法完全不起作用,無診斷價值。AUC<0.5不符合真實情況,在實際中極少出現。

3.兩種診斷方法的統計學比較。兩種診斷方法的比較時,根據不同的試驗設計可採用以下兩種方法:①當兩種診斷方法分別在不同受試者身上進行時,採用成組

比較法②如果兩種診斷方法在同一受試者身上進行時,採用配對比較法。

一,簡介

對訓練出的分類器的分類效果的評估,常見有精確度(accuracy),PR(precision- recall), precision等,一般來說訓練樣本數量越大,則的儲的

用的就是分類器的精確度(accuracy),在某些如推薦或資訊獲取領域還會組合使用precision-recall作為評價指標。因為 你用於訓練分類器的樣本本身就是總體的一個抽樣,所以這些指標的數值也僅僅是一種統計上的反映,如果你做多次抽樣訓練,跟別的隨機變數一樣,它一樣會有期 望、方差、置信區間這些概念。理論上說,訓練樣本量越大,你得到的這些指標的可信度就越高(即它們以某個概率落在的置信區間越窄)。不幸的是,實際中你未 必會有那麼多的樣本,所以機器學習工作者設計出很多種方法來應對資料量不足情況下分類器的訓練與評估,如k步交叉檢驗、留1法、boostrap等等

分類、檢索中評價的指標比較多,precision,recall,accuracy,F1,ROC,PRcurve

二,ROC介紹

很多時候,我們希望對一個二值分類器的效能進行評價,AUC正是這樣一種用來度量分類模型好壞的一個標準。現實中樣本在不同類別上的不均衡分佈(class distribution imbalance problem),使得accuracy這樣的傳統的度量標準不能恰當的反應分類器的效能。舉個例子:測試樣本中有A類樣本90個,B 類樣本10個。若某個分類器簡單的將所有樣本都劃分成A類,那麼在這個測試樣本中,它的準確率仍為90%,這顯示是不合理的。為了解決上述問題,人們從醫療分析領域引入了一種新的分類模型performance評判方法——ROC分析。在介紹ROC之前,首先討論一下混淆矩陣(Confusion matrix)。

混淆矩陣是監督學習中的一種視覺化工具,主要用於比較分類結果和例項的真實資訊(outcom vs.  ground truth)。矩陣中的每一行代表例項的預測類別,每一列代表例項的真實類別。在混淆矩陣中,每一個例項可以劃分為四種類型之一,True Positive\False Positive\False Negative\True Negetive(TP\FP\FN\TN),如圖1所示。其中,Positive代表預測例項來自正類,Negetive代表預測例項來自負類;True代表預測正確,False代表預測錯誤。

由混淆矩陣可以計算一系列的評價指標,如accurancy、precision、recall等等。

fp rate = FP/N        tp rate = TP/P

precision = TP/(TP + FN)       recall = TP/P

accuracy = (TP + TN) / (P + N)

F-measure = 2/( 1/precision + 1/recall)

幾個引數的解釋:

precision和recall是從資訊檢索來的定義,

precision為查準率-----指得是檢測的相關文獻量檢出文獻總量的比率,是衡量資訊檢索系統檢出文獻的準確                                        度的尺度。

recall 為查全率------檢測出的相關文獻量檢索系統中相關文獻總量的比率,是衡量資訊檢索系統檢出相關文                                     獻能力的尺度

可以通過一個例子來解釋

一個7類的混淆矩陣,每類樣本數量為100

confus =

69  2  4  6  1  14 43  70 6  2  7  6 64 6   66  2 5 6 112 2 18 519 12 64 8 1 80 3  27 6  3 7 2  67   8116  7  5 7  6   58

accuracy = 0.6586

numcorrect = 461

precision =0.6900    0.7000    0.6286    0.6800    0.7207    0.5877    0.6105

recall =0.6900    0.7000    0.6600    0.5100    0.8000    0.6700    0.5800

F =0.6900    0.7000    0.6439    0.5829    0.7583    0.6262    0.5949

confus矩陣中每一行和等於該類的樣本和=100;但是每一列就不是100了,每一列其實的意義,就是資訊檢索的返回的所有結果

假設我們用類別3的標籤進行搜尋,那麼會返回confus中第3列的所有資料,沒問題吧?因為分到第3類的確實是這些資料,一共有105個,因為有其他的類也分到這個類中了唄。

所以第三類的查準率=檢索出的相關文件數目(66)/檢索返回的所有的文件數目(105)=0.6288=precision(3)。

查全率那就是檢索出的文件數目(66)/資料庫中的第三類的所有文件數目(檢索出的第三類+沒有檢索出的第三類=confus第三行的和=100)=0.66=recall(3)。

三,ROC原理介紹

回到ROC上來, 百度百科對roc的解釋如下:ROC曲線指受試者工作特徵曲線(receiver operating characteristic curve), 是反映敏感性和特異性連續變數的綜合指標,是用構圖法揭示敏感性和特異性的相互關係,它通過將連續變數設定出多個不同的臨界值,從而計算出一系列敏感性和特異性,再以敏感性為縱座標、(1-特異性)為橫座標繪製成曲線,曲線下面積越大(AUC area  under roc curve),診斷準確性越高。在ROC曲線上,最靠近座標圖左上方的點為敏感性和特異性均較高的臨界值。

ROC關注兩個指標:

true positive rate ( TPR = TP / [TP + FN] ) ------正例分對的概率

false positive rate ( FPR = FP / [FP + TN] ) ------負例錯分的概率

直觀上,TPR代表能將正例分對的概率,FPR代表將負例錯分為正例的概率,FPR 預測的是正例,但是實際上是負例。這部分在負例中佔得比例。也就是將負例錯分為正例的概率。

ROC 空間中,每個點的橫座標是FPR,縱座標是TPR,這也就描繪了分類器在TP(真正的正例)和FP(錯誤的正例)間的trade-off。ROC的主要分析工具是一個畫在ROC空間的曲線——ROC curve。我們知道,對於二值分類問題,例項的值往往是連續值,我們通過設定一個閾值,將例項分類到正類或者負類(比如大於閾值劃分為正類)。因此我們可以變化閾值,根據不同的閾值進行分類,根據分類結果計算得到ROC空間中相應的點,連線這些點就形成ROC curve。ROC curve經過(0,0)(1,1),實際上(0, 0)和(1, 1)連線形成的ROC curve實際上代表的是一個隨機分類器。一般情況下,這個曲線都應該處於(0, 0)和(1, 1)連線的上方。

四,AUC介紹

ROC curve來表示分類器的performance很直觀好用。可是,人們總是希望能有一個數值來標誌分類器的好壞。於是Area Under roc Curve(AUC)就出現了。顧名思義,AUC的值就是處於ROC curve下方的那部分面積的大小。通常,AUC的值介於0.5到1.0之間,較大的AUC代表了較好的performance。

計算ROC curve的AUC值的程式碼可以在這找到。

五,ROC中最優P-0的計算

p_0為一個閾值,通過這個閾值來分類,保證TPR同時代價要比FPR儘量小

六,Precision-Recall Corve曲線的畫法

不過Precision-Recall Corve對於每一類的畫法還是很有講究的,我們知道對於二類問題,像是檢索中的問題,最後的查全率、查準率基本都是最後計算一對值就行了,但是就一對值,一個點是畫不出曲線來的,所以在實際的曲線過程中,是這樣的:

1、首先得分為正負兩類,多類問題真對每一類都可以對映過去

2、按照決策值(分類問題每一個樣本肯定會有一個支援分類的概率或者置信度等等,像是libsvm的dec_values的矩陣),按照從小到大的順序進行排序

3、然後分別計算全部樣本、全本樣本-1、全部樣本-2、...........、一直計算完畢,每一次都會有查全率查準率,就可以曲線了,這裡我說的很粗糙,詳細的可以檢視我的程式碼,當然也有函式參考的別人的,也做了說明。