0、模型評價指標【AUC原理、roc曲線等】


分類模型評估:

 指標  描述  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

 

混淆矩陣

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

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

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

  • True Positive:真正(TP),樣本是正的正樣本,預測也是正的正樣本。
  • False Negative:假負(FN),樣本是正的正樣本,預測為負的正樣本。
  • False Positive:假正(FP),樣本是正的負樣本,預測為正的負樣本。
  • True Negative:真負類(TN),樣本是正的負樣本,預測為負的負樣本。
真正率(True  Positive Rate,TPR):TPR=TP/(TP+FN),即被預測為正的正樣本數 /正樣本實際數
假正率(False Positive Rate,FPR) :FPR=FP/(FP+TN),即被預測為正的負樣本數 /負樣本實際數
假負率(False Negative Rate,FNR) :FNR=FN/(TP+FN),即被預測為負的正樣本數 /正樣本實際數
真負率(True  Negative Rate,TNR) :TNR=TN/(TN+FP),即被預測為負的負樣本數 /負樣本實際數
 

Accuracy(准確率):

正確預測的正反例數 / 樣本的總數。

准確率是預測正確的結果占總樣本的百分比,但很多項目場景不適用!最主要原因是樣本不平衡。舉個簡單例子,一個總樣本中,正樣本占90%,負樣本占10%,樣本嚴重不平衡。這時候如果將全部正樣本預測為正樣本,即可達到90%的准確率。所以樣本不均衡,准確率會失效。

Precision(精確率):Percision = TP/(TP+FP)

正確預測的正例數 / 預測正例總數。可理解為查准率。在預測為正的記錄中,有多少實際為正。

召回率:Recall = TP / (TP+FN)

正確預測的正例數 / 實際正例總數。可理解為查全率。在實際為正的記錄中,有多少預測為正。

  

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

F1 score:2/F1 = 1/Precision + 1/Recall

精確率和召回率的調和值。由於Precision和Recall是一對不可調和的矛盾,很難同時提高二者(不一定吧),故提出F1來試圖綜合二者,F1是P和R的調和平均。F1更接近於兩個數較小的那個,所以精確率和召回率接近時值最大。很多推薦系統會用的評測指標。

 

對ROC曲線、AUC的理解

True Positive Rate(真陽率)、False Positive(偽陽率):

  • [公式] (recall)
  • [公式]

TPRate的意義是所有真實類別為1的樣本中,預測類別為1的比例;FPRate的意義是所有真實類別為0的樣本中,預測類別為1的比例。

按照定義,AUC即ROC曲線下的面積,而ROC曲線的橫軸是FPRate,縱軸是TPRate,當二者相等時,即y=x,如下圖:

 表示的意義是:對於不論真實類別是1還是0的樣本,分類器預測為1的概率是相等的。

我們希望分類器達到的效果是:對於真實類別為1的樣本,分類器預測為1的概率(即TPRate),要大於真實類別為0而預測類別為1的概率(即FPRate),即y>x,因此大部分的ROC曲線長成下面這個樣子:

最理想的情況下,既沒有真實類別為1而錯分為0的樣本——TPRate一直為1,也沒有真實類別為0而錯分為1的樣本——FP rate一直為0,AUC為1,這便是AUC的極大值


如何得到roc曲線

假設采用邏輯回歸分類器,其給出針對每個實例為正類的概率,那么通過設定一個閾值如0.6,概率大於等於0.6的為正類,小於0.6的為負類。對應的就可以算出一組(FPR,TPR),在平面中得到對應坐標點。隨着閾值的逐漸減小,越來越多的實例被划分為正類,但是這些正類中同樣也摻雜着真正的負實例,即TPR和FPR會同時增大。閾值最大時,對應坐標點為(0,0),閾值最小時,對應坐標點(1,1)。

step1:假設已經得出一系列樣本被划分為正類的概率,然后按照大小排序,下圖是一個示例,圖中共有20個測試樣本,“Class”一欄表示每個測試樣本真正的標簽(p表示正樣本,n表示負樣本), “Score”表示每個測試樣本屬於正樣本的概率。
step2:我們從高到低,依次將“Score”值作為閾值threshold,當測試樣本屬於正樣本的概率大於或等於這個threshold時,我們認為它為正樣本,否則為負樣本。舉例來說,對於圖中的第4個樣本,其“Score”值為0.6,那么樣本1,2,3,4都被認為是正樣本,因為它們的“Score”值都大於等於0.6,而其他樣本則都認為是負樣本。每次選取一個不同的threshold,我們就可以得到一組FPR和TPR,即ROC曲線上的一點。這樣一來,我們一共得到了20組FPR和TPR的值,將它們畫在ROC曲線的結果如下圖:
隨着樣本數量增多,逐漸接近理想ROC曲線。

AUC計算方式:(如何證明2、3方式等價於1)
  • 面積計算:矩形面積累加,計算復雜,基本不用。
  • 統計正負樣本對PK情況:統計一下所有的 M×N(M為正類樣本的數目,N為負類樣本的數目)個正負樣本對中,有多少個組中的正樣本的score大於負樣本的score。當二元組中正負樣本的 score相等的時候,按照0.5計算。然后除以MN。實現這個方法的復雜度為O(n^2)。實際也不會用。
  • rank求取:

降序rank--> 去掉(正,正)樣本對數--> 求取比例

  • 按概率從高到矮排個降序, 對於正樣本中score最高的,排序為rank_n, 比它概率小的有M-1個正樣本(M為正樣本個數), (rank_n- M) 個負樣本。
  • 正樣本概率第二高的, 排序為rank_n-1, 比它概率小的有M-2個正樣本,(rank_n-1 - M + 1) 個 負樣本。
  • 以此類推正樣本中概率最小的, 排序為rank_1,比它概率小的有0個正樣本,rank_1 - 1 個負樣本。
  • 總共有MxN個正負樣本對(N為負樣本個數)。把所有比較中 正樣本概率大於負樣本概率 的例子都算上, 得到公式 (rank_n - M + rank_n-1 - M + 1 .... + rank_1 - 1) / (MxN) 就是正樣本概率大於負樣本概率的可能性了。 化簡后(因為后面是個等差數列)得:

其實就是,按正樣本score降序排列情況下,負樣本pk失敗的數目總數占所有樣本對的比例

 

AUC對正負樣本比例不敏感的原因

橫軸FPR只關注負樣本,與正樣本無關;縱軸TPR只關注正樣本,與負樣本無關。所以橫縱軸都不受正負樣本比例影響,積分(求和)當然也不受其影響。

 

AUC概率意義
隨機挑選一個正樣本和一個負樣本,分類器將正樣本排在前面的概率。
基於概率意義的到AUC的計算公式:

 

 

參考:

https://www.cnblogs.com/keye/p/9367347.html

https://www.zhihu.com/question/39840928

https://www.jianshu.com/p/5e12cd6c3ed1 

 


免責聲明!

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



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