機器學習之模型評估方法總結

一、分類模型評估指標

1、混淆矩陣(confusion matrix)

TP(True Positive) ---- 將正類預測爲正類數
FN(False Negative) ---- 將正類預測爲負類數
FP(False Positive) ---- 將負類預測爲正類數
TN(True Negative) ---- 將負類預測爲負類數
這裏寫圖片描述
分類模型總體判斷的準確率:反映分類器統對整個樣本的判定能力,能將正的判定爲正,負的判定爲負
Accuracy=TP+NPTP+TN+FP+FNAccuracy = \frac{TP+NP}{TP+TN+FP+FN}
精確率(Precision):指的是所得數值與真實值之間的精確程度;預測正確的正例數佔預測爲正例總量的比率,一般情況下,精確率越高,說明模型的效果越好。
公式如下:
P=TPTP+FPP = \frac{TP}{TP + FP}

召回率(Recall ):預測對的正例數佔真正的正例數的比率,一般情況下,Recall越高,說明有更多的正類樣本被模型預測正確,模型的效果越好。
公式如下:
R=TPTP+FNR = \frac{TP}{TP+FN}

False discovery rate (FDR):錯誤發現率,表示在模型預測爲正類的樣本中,真正的負類的樣本所佔的比例。一般情況下,錯誤發現率越小,說明模型的效果越好。
公式如下:
FDR=FPTP+FPFDR = \frac{FP}{TP + FP}

False omission rate (FOR):錯誤遺漏率,表示在模型預測爲負類的樣本中,真正的正類所佔的比例。即評價模型”遺漏”掉的正類的多少。一般情況下,錯誤遺漏率越小,模型的效果越好。
公式如下:
FOR=FNFN+TNFOR = \frac{FN}{FN + TN}

Negative predictive value (NPV):陰性預測值,在模型預測爲負類的樣本中,真正爲負類的樣本所佔的比例。 一般情況下,NPV越高,說明的模型的效果越好。
公式如下:
NPV=TNFN+TNNPV=\frac{TN}{FN + TN}

False positive rate (FPR), Fall-out:假正率,表示的是,預測爲正例的負樣本數,佔模型負類樣本數量的比值。一般情況下,假正類率越低,說明模型的效果越好。
公式如下:
Fallout=FPFP+TNFall-out = \frac{FP}{FP + TN}

False negative rate (FNR), Miss rate:假負類率,缺失率,模型預測爲負類的樣本中,是正類的數量,佔真實正類樣本的比值。缺失值越小,說明模型的效果越好。
公式如下:
FNR=FNFN+TNFNR = \frac{FN}{FN + TN}

True negative rate (TNR):一般情況下,真負類率越高,說明的模型的效果越好
公式如下:
TNR=TNFN+TNTNR = \frac{TN}{FN + TN}

F1是精確率和召回率的調和均值,即:
2F1=1P+1R\frac{2}{F_1} = \frac{1}{P} + \frac{1}{R}
F1=2TP2TP+FP+FNF_1 = \frac{2TP}{2TP+FP+FN}

舉例:
如有150個樣本數據,這些數據分成3類,每類50個。分類結束後得到的混淆矩陣爲:
這裏寫圖片描述

每一行之和爲50,表示50個樣本,第一行說明類1的50個樣本有43個分類正確,5個錯分爲類2,2個錯分爲類3。

混淆矩陣的每一列代表了預測類別,每一列的總數表示預測爲該類別的數據的數目;每一行代表了數據的真實歸屬類別,每一行的數據總數表示該類別的數據實例的數目。每一列中的數值表示真實數據被預測爲該類的數目:如下圖,第一行第一列中的43表示有43個實際歸屬第一類的實例被預測爲第一類,同理,第二行第一列的2表示有2個實際歸屬爲第二類的實例被錯誤預測爲第一類。

那麼針對以上的混淆矩陣,我們怎樣取計算召回率以及假正率值呢?
針對類1:共有150個測試樣本,類1爲50個,那類2和類3就屬於其他樣本共爲100個,此時
R=TPTP+FN=4343+7=0.86R = \dfrac{TP}{TP+FN} = \dfrac{43}{43+7}=0.86;fpr=FPFP+TN=22+98=0.02fpr = \dfrac{FP}{FP+TN} = \dfrac{2}{2+98}=0.02

混淆矩陣的缺點:
一些positive事件發生概率極小的不平衡數據集(imbalanced data),混淆矩陣可能效果不好。比如對信用卡交易是否異常做分類的情形,很可能1萬筆交易中只有1筆交易是異常的。一個將所有交易都判定爲正常的分類器,準確率是99.99%。這個數字雖然很高,但是沒有任何現實意義。

2、ROC

ROC曲線指受試者工作特徵曲線 / 接收器操作特性曲線(receiver operating characteristic curve),是反映敏感性和特異性連續變量的綜合指標,是用構圖法揭示敏感性和特異性的相互關係,它通過將連續變量設定出多個不同的臨界值,從而計算出一系列敏感性和特異性,再以敏感性爲縱座標、(1-特異性)爲橫座標繪製成曲線,曲線下面積越大,診斷準確性越高。

ROC曲線的縱軸是真正例率TPR,橫軸是假正例率FPR。
TPR=TPTP+FNTPR = \frac{TP}{TP+FN}
FPR=FPFP+TNFPR = \frac{FP}{FP + TN}

這裏寫圖片描述
給定m+個正例,m-個反例,根據學習器預測的概率將樣本從大到小排列。先把閥值設到最大,使得所有的樣本都被預測爲負,此時TPR,FPR都爲0,在座標(0,0)處標記一個點。接着將閥值依次設置爲每個樣例的概率值,計算TPR,FPR兩個值作爲座標點,將所有點連接起來即得到ROC曲線
這裏寫圖片描述
我們可以看出,左上角的點(TPR=1,FPR=0),爲完美分類,也就是這個醫生醫術高明,診斷全對。

點A(TPR > FPR),醫生A的判斷大體是正確的。中線上的點B(TPR=FPR),也就是醫生B全都是蒙的,蒙對一半,蒙錯一半;下半平面的點C(TPR < FPR),這個醫生說你有病,那麼你很可能沒有病,醫生C的話我們要反着聽,爲真庸醫。

上圖中一個閾值,得到一個點。現在我們需要一個獨立於閾值的評價指標來衡量這個醫生的醫術如何,也就是遍歷所有的閾值,得到ROC曲線。
還是一開始的那幅圖,假設如下就是某個醫生的診斷統計圖,直線代表閾值。我們遍歷所有的閾值,能夠在ROC平面上得到如下的ROC曲線。
曲線距離左上角越近,證明分類器效果越好。
這裏寫圖片描述
如上,是三條ROC曲線,在0.23處取一條直線。那麼,在同樣的低FPR=0.23的情況下,紅色分類器得到更高的TPR。也就表明,ROC曲線越往上,分類器效果越好。
(2)根據ROC曲線評估模型
a.若一個學習器的ROC曲線被另一個學習器的曲線完全包住,則後者優於前者。
b.若兩個學習器的ROC曲線發生交叉,則可根據曲線下方的面積大小來比較,ROC曲線下方的面積爲AUC(Area Under ROC Curve).

3、AUC

曲線下面積(AUC,Area Under the Curve)

ROC曲線下面積經常用作衡量分類模型質量的指標。隨機分類的AUC爲0.5,而完美分類的AUC等於1。在實踐中,大多數分類模型的AUC在0.5和1之間。
這裏寫圖片描述

AUC值爲ROC曲線所覆蓋的區域面積,顯然,AUC越大,分類器分類效果越好。

AUC = 1,是完美分類器,採用這個預測模型時,不管設定什麼閾值都能得出完美預測。絕大多數預測的場合,不存在完美分類器。

0.5 < AUC < 1,優於隨機猜測。這個分類器(模型)妥善設定閾值的話,能有預測價值。

AUC = 0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預測價值。

AUC < 0.5,比隨機猜測還差;但只要總是反預測而行,就優於隨機猜測。

AUC的物理意義
假設分類器的輸出是樣本屬於正類的score(置信度),則AUC的物理意義爲,任取一對(正、負)樣本,正樣本的score大於負樣本的score的概率。

計算AUC:
第一種方法:AUC爲ROC曲線下的面積,那我們直接計算面積可得。面積爲一個個小的梯形面積之和。計算的精度與閾值的精度有關。

第二種方法:根據AUC的物理意義,我們計算正樣本score大於負樣本的score的概率。取NM(N爲正樣本數,M爲負樣本數)個二元組,比較score,最後得到AUC。時間複雜度爲O(NM)。

第三種方法:與第二種方法相似,直接計算正樣本score大於負樣本的概率。我們首先把所有樣本按照score排序,依次用rank表示他們,如最大score的樣本,rank=n(n=N+M),其次爲n-1。那麼對於正樣本中rank最大的樣本,rank_max,有M-1個其他正樣本比他score小,那麼就有(rank_max-1)-(M-1)個負樣本比他score小。其次爲(rank_second-1)-(M-2)。最後我們得到正樣本大於負樣本的概率爲
rankM(M+1)/2MN\frac{\sum_{所用正樣本}rank-M(M+1)/2}{M*N},時間複雜度爲O(N+M)。

總結:
AUC(Area Under Curve) 被定義爲 ROC 曲線下的面積, 顯然這個面積的數值不
會大於 1。 又由於 ROC 曲線一般都處於 y=x 這條直線的上方, 所以 AUC 的取值範
圍在 0.5 和 1 之間。 使用 AUC 值作爲評價標準是因爲很多時候 ROC 曲線並不能清
晰的說明哪個分類器的效果更好, 而作爲一個數值, 對應 AUC 更大的分類器效果更好。
首先 AUC 值是一個概率值, 當你隨機挑選一個正樣本以及一個負樣本, 當前的分
類算法根據計算得到的 Score 值將這個正樣本排在負樣本前面的概率就是 AUC
值。 當然, AUC 值越大, 當前的分類算法越有可能將正樣本排在負樣本前面, 即
能夠更好的分類。

二、迴歸模型評估指標

1、SSE(和方差)

SSE(和方差、誤差平方和):The sum of squares due to error
該統計參數計算的是擬合數據和原始數據對應點的誤差的平方和,計算公式如下
SSE=i=1nwi(yiy^i)2SSE = \sum_{i=1}^nw_i(y_i-\hat y_i)^2

2、MSE(均方差)

MSE(均方差、方差):Mean squared error
該統計參數是預測數據和原始數據對應點誤差的平方和的均值,也就是SSE/n,和SSE沒有太大的區別,計算公式如下:
MSE=SSEn=1ni=1nwi(yiy^i)2MSE = \frac{SSE}{n} = \frac{1}{n} \sum_{i=1}^nw_i(y_i-\hat y_i)^2

3、RMSE(均方根、標準差)

RMSE(均方根、標準差):Root mean squared error,其又被稱爲RMSD(root mean square deviation),其定義如下:
RMSE=MSE=SSEn=i=0nwi(yy^)2nRMSE = \sqrt{MSE }= \sqrt{\frac{SSE}{n}}=\sqrt{\frac{\sum_{i=0}^nw_i(y-\hat y)^2}{n}}
其中,y是第個樣本的真實值,y^\hat{y}是第個樣本的預測值,nn是樣本的個數。該評價指標使用的便是歐式距離。
RMSE雖然廣爲使用,但是其存在一些缺點,因爲它是使用平均誤差,而平均值對異常點(outliers)較敏感,如果迴歸器對某個點的迴歸值很不理性,那麼它的誤差則較大,從而會對RMSE的值有較大影響,即平均值是非魯棒的。

4、R-Squared(確定係數)

在講確定係數之前,我們需要介紹另外兩個參數SSR和SST,因爲確定係數就是由它們兩個決定的
(1)SSR:Sum of squares of the regression,即預測數據與原始數據均值之差的平方和,公式如下:
SSR=i=1nwi(y^iyˉi)2SSR = \sum_{i=1}^nw_i(\hat y_i- \bar y_i)^2
(2)SST:Total sum of squares,即原始數據和均值之差的平方和,公式如下:
SST=i=1nwi(yiyˉi)2SST = \sum_{i=1}^nw_i(y_i-\bar y_i)^2
細心的網友會發現,SST=SSE+SSR,呵呵只是一個有趣的問題。而我們的“確定係數”是定義爲SSR和SST的比值,故
Rsquare=SSRSST=SSTSSESST=1SSESSTR - square = \frac{SSR}{SST} = \frac{SST-SSE}{SST} = 1 - \frac{SSE}{SST}
其實“確定係數”是通過數據的變化來表徵一個擬合的好壞。由上面的表達式可以知道“確定係數”的正常取值範圍爲[0 1],越接近1,表明方程的變量對y的解釋能力越強,這個模型對數據擬合的也較好

5、MAE(平均絕對誤差)

平均絕對誤差(MAE:Mean Absolute Error)就是指預測值與真實值之間平均相差多大,公式如下:
MAE=1ni=1nyiy^i=1ni=1neiMAE = \frac{1}{n}\sum_{i=1}^n|y_i-\hat y_i| = \frac{1}{n}\sum_{i=1}^n|e_i|
其中,yiy_i是真實值,y^i\hat y_i是預測值,ei=yiy^ie_i=|y_i - \hat y_i|即是絕對誤差。

三、模型評估方法

1、交叉驗證(Cross-Validation)

交叉驗證,有的時候也稱作循環估計(Rotation Estimation),是一種統計學上將數據樣本切割成較小子集的實用方法,該理論是由Seymour Geisser提出的。在給定的建模樣本中,拿出大部分樣本進行建模型,留小部分樣本用剛建立的模型進行預報,並求這小部分樣本的預報誤差,記錄它們的平方加和。這個過程一直進行,直到所有的樣本都被預報了一次而且僅被預報一次。把每個樣本的預報誤差平方加和,稱爲PRESS(predicted Error Sum of Squares)。
  交叉驗證的基本思想是把在某種意義下將原始數據(dataset)進行分組,一部分做爲訓練集(train set),另一部分做爲驗證集(validation set or test set)。首先用訓練集對分類器進行訓練,再利用驗證集來測試訓練得到的模型(model),以此來做爲評價分類器的性能指標。
  
回到交叉驗證,根據切分的方法不同,交叉驗證分爲下面三種:
第一種是簡單交叉驗證,所謂的簡單,是和其他交叉驗證方法相對而言的。首先,我們隨機的將樣本數據分爲兩部分(比如: 70%的訓練集,30%的測試集),然後用訓練集來訓練模型,在測試集上驗證模型及參數。接着,我們再把樣本打亂,重新選擇訓練集和測試集,繼續訓練數據和檢驗模型。最後我們選擇損失函數評估最優的模型和參數。

第二種是S折交叉驗證(S-Folder Cross Validation)。和第一種方法不同,S折交叉驗證會把樣本數據隨機的分成S份,每次隨機的選擇S-1份作爲訓練集,剩下的1份做測試集。當這一輪完成後,重新隨機選擇S-1份來訓練數據。若干輪(小於S)之後,選擇損失函數評估最優的模型和參數。

第三種是留一交叉驗證(Leave-one-out Cross Validation),它是第二種情況的特例,此時S等於樣本數N,這樣對於N個樣本,每次選擇N-1個樣本來訓練數據,留一個樣本來驗證模型預測的好壞。此方法主要用於樣本量非常少的情況,比如對於普通適中問題,N小於50時,我一般採用留一交叉驗證。
交叉驗證來自:https://www.cnblogs.com/pinard/p/5992719.html

2、自助法(bootstrap)

bootstrap法對樣本有放回的抽樣,先獲得和原樣本量一樣大的樣本集用於訓練,再用未被抽到的樣本測試(原樣本中約有36.8%的樣本未被抽到)。
樣本在 m次採樣中始終不被採到的概率是:
在這裏插入圖片描述
所以大約有 強的樣本不會在採樣集中出現。採樣數據集作爲訓練集,剩下的作爲測試集。
要注意bootstrap法改變了數據分佈形態,會帶來誤差,因此樣本量足夠時常用留出法和交叉驗證法。甚至在樣本量很大時,單一次留出法的評估結果就非常接近模型真實參數了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章