ROC與AUC原理


來自:https://blog.csdn.net/shenxiaoming77/article/details/72627882

來自:https://blog.csdn.net/u010705209/article/details/53037481

 

在分類模型中,roc曲線和auc曲線作為衡量一個模型擬合程度的指標。

分類模型評估:

 指標  描述  Scikit-learn函數
 Precision  AUC  from sklearn.metrics import precision_score
 Recall  召回率  from sklearn.metrics import recall_score
 F1  F1值  from sklearn.metrics import f1_score
 Confusion Matrix  混淆矩陣  from sklearn.metrics import confusion_matrix
 ROC  ROC曲線  from sklearn.metrics import confusion_matrix
 AUC  ROC曲線下的面積  from sklearn.metrics import auc

 

 

回歸模型評估:

指標 描述 Scikit-learn函數
Mean Square Error (MSE, RMSE) 平均方差 from sklearn.metrics import mean_squared_error
Absolute Error (MAE, RAE) 絕對誤差 from sklearn.metrics import mean_absolute_error, median_absolute_error
R-Squared R平方值 from sklearn.metrics import r2_score

 

 

roc和auc定義

roc全稱是“受試者工作特征”(recevier operating characteristic)。roc曲線的面積就是auc(area under the curve)。auc用於衡量“二分類問題”機器學習算法性能(泛化能力)。

 

1. 了解roc首先了解混淆矩陣:

例如用一個分類模型來判別一個水果是蘋果還是梨,混淆矩陣將會模型的預測結果總結成如下表所示的表格。

     模型預測結果  模型預測結果
    蘋果
真是結果 蘋果 10 2
真是結果 3 15

通過上述表格可以看出,樣本的數量一共是10+2+3+15=3010+2+3+15=30個樣本。其中蘋果有10+2=1210+2=12個,梨有3+15=183+15=18個。該模型預測的蘋果的數量是10+3=1310+3=13個,有1010個是預測正確的,33個是預測錯誤的。該模型預測的梨的數量是2+15=172+15=17個,其中有1515個是預測正確的,22個是預測錯誤的。

混淆矩陣

對於一個二分類的模型,其模型的混淆矩陣是一個2×22×2的矩陣。如下圖所示: 

    Predicted condition Predicted condition
    positive negative
True condition positive True Positive True Negative
True condition negative False Positive False Negative

混淆矩陣比模型的精度的評價指標更能夠詳細地反映出模型的”好壞”。模型的精度指標,在正負樣本數量不均衡的情況下,會出現容易誤導的結果

  • True Positive:真正類(TP),樣本的真實類別是正類,並且模型預測的結果也是正類。
  • False Negative:假負類(FN),樣本的真實類別是正類,但模型將其預測成為負類。
  • False Positive:假正類(FP),樣本的真實類別是負類,但模型將其預測成正類。
  • True Negative:真負類(TN),樣本的真實類別是負類,並且模型將其預測成為負類。

混淆矩陣中,衍生出各種評價的指標。

 

精度:

模型預測正確的個數 / 樣本的總個數,

一般情況下,模型的精度越高,說明模型的效果越好。

 

召回率:

模型預測為正類的樣本的數量,占總的正類樣本數量的比值。

 

Recall越高,說明有更多的正類樣本被模型預測正確,模型的效果越好。

 

TPR:

樣本中的真實正例類別總數即TP+FN。TPR即True Positive Rate,TPR = TP/(TP+FN)。 

 

FPR:
同理,樣本中的真實反例類別總數為FP+TN。FPR即False Positive Rate,FPR=FP/(TN+FP)。

 

截斷點:

還有一個概念叫”截斷點”。機器學習算法對test樣本進行預測后,可以輸出各test樣本對某個類別的相似度概率。比如t1是P類別的概率為0.3,一般我們認為概率低於0.5,t1就屬於類別N。這里的0.5,就是”截斷點”。 
總結一下,對於計算ROC,最重要的三個概念就是TPRFPR截斷點

截斷點取不同的值,TPRFPR的計算結果也不同。將截斷點不同取值下對應的TPRFPR結果畫於二維坐標系中得到的曲線,就是ROC曲線。橫軸用FPR表示。

 

2. sklearn計算roc

sklearn給出了一個計算roc的例子:

y = np.array([1, 1, 2, 2])
scores = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)

 

通過計算,得到的結果(TPRFPR截斷點)為

fpr = array([ 0. ,  0.5,  0.5,  1. ])
tpr = array([ 0.5,  0.5,  1. ,  1. ])
thresholds = array([ 0.8 ,  0.4 ,  0.35,  0.1 ])    #截斷點

 

將結果中的FPR與TPR畫到二維坐標中,得到的ROC曲線如下(藍色線條表示),ROC曲線的面積用AUC表示(淡黃色陰影部分)。

 

 

詳細計算過程:

y = np.array([1, 1, 2, 2])
scores = np.array([0.1, 0.4, 0.35, 0.8])

 

(1). 分析數據

y是一個一維數組(樣本的真實分類)。數組值表示類別(一共有兩類,1和2)。我們假設y中的1表示反例,2表示正例。即將y重寫為:

y_true = [0, 0, 1, 1]

 

score即各個樣本屬於正例的概率。

(2). 針對score,將數據排序

樣本 預測屬於P的概率(score) 真實類別
y[0] 0.1 N
y[2] 0.35 P
y[1] 0.4 N
y[3] 0.8 P

(3). 將截斷點依次取值為score值

將截斷點依次取值為0.1, 0.35, 0.4, 0.8時,計算TPR和FPR的結果。

 

3.1. 截斷點為.01

說明只要score>=0.1,它的預測類別就是正例。 
此時,因為4個樣本的score都大於等於0.1,所以,所有樣本的預測類別都為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

 

3.2. 截斷點為0.35

說明只要score>=0.35,它的預測類別就是P。 
此時,因為4個樣本的score有3個大於等於0.35。所以,所有樣本的預測類有3個為P(2個預測正確,1一個預測錯誤);1個樣本被預測為N(預測正確)。

 

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

 

3.3. 截斷點為0.4

說明只要score>=0.4,它的預測類別就是P。 
此時,因為4個樣本的score有2個大於等於0.4。所以,所有樣本的預測類有2個為P(1個預測正確,1一個預測錯誤);2個樣本被預測為N(1個預測正確,1一個預測錯誤)。

 

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

 

3.4. 截斷點為0.8

說明只要score>=0.8,它的預測類別就是P。所以,所有樣本的預測類有1個為P(1個預測正確);3個樣本被預測為N(2個預測正確,1一個預測錯誤)。

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). 心得

用下面描述表示TPR和FPR的計算過程,更容易記住

  • TPR:真實的正例中,被預測正確的比例
  • FPR:真實的反例中,被預測正確的比例

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM