監督學習算法模型評估

在分類模型評判的指標中,常見的方法有如下三種:

  1. 混淆矩陣(也稱誤差矩陣,Confusion Matrix)
  2. ROC曲線
  3. AUC值

在迴歸模型評價指標中,常用的方法有如下幾種:

  1. MSE
  2. RMSE
  3. MAE
  4. R2

混淆矩陣(Confusion matrix)

在機器學習領域中,混淆矩陣(confusion matrix)是一種評價分類模型好壞的形象化展示工具。

混淆矩陣的定義

混淆矩陣是ROC曲線繪製的基礎,同時它也是衡量分類型模型準確度中最基本,最直觀,計算最簡單的方法。

在機器學習領域,混淆矩陣(confusion matrix),又稱爲可能性表格或是錯誤矩陣。它是一種特定的矩陣用來呈現算法性能的可視化效果,通常是監督學習(非監督學習,通常用匹配矩陣:matching matrix)。其每一列代表實際的類別,每一行代表的是預測值(反之亦然)。這個名字來源於它可以非常容易的表明多個類別是否有混淆(也就是一個class被預測成另一個class)。

大白話來講,混淆矩陣就是分別統計分類模型歸錯類,歸對類的觀測值個數,然後把結果放在一個表裏展示出來。這個表就是混淆矩陣。就是對機器學習算法的運行結果進行評價,效果如何,精確度怎麼樣而已。

混淆矩陣是評判模型結果的指標,屬於模型評估的一部分。此外,混淆矩陣多用於判斷分類器(Classifier)的優劣,適用於分類型的數據模型,如分類樹(Classification Tree)、邏輯迴歸(Logistic Regression)、線性判別分析(Linear Discriminant Analysis)等方法。

混淆矩陣的指標

一級指標

我們通過樣本的採集,能夠直接知道真實情況下,哪些數據結果是positive,哪些結果是negative。同時,我們通過用樣本數據跑出分類型模型的結果,也可以知道模型認爲這些數據哪些是positive,哪些是negative。

因此,我們就能得到這樣四個基礎指標,我稱他們是一級指標(最底層的):

  • True Positive(真正, TP):真實值是positive,模型認爲是positive的數量
  • False Negative(假負 , FN):真實值是positive,模型認爲是negative的數量 → 誤報 (Type I error)
  • False Positive(假正 , FP):真實值是negative,模型認爲是positive的數量 → 漏報 (Type II error)
  • True Negative(真負 , TN):真實值是negative,模型認爲是negative的數量

將這四個指標一起呈現在表格中,就能得到如下這樣一個矩陣,我們稱它爲混淆矩陣(Confusion Matrix):

混淆矩陣

預測性分類模型,肯定是希望越準越好。那麼,對應到混淆矩陣中,那肯定是希望TP與TN的數量大,而FP與FN的數量小。

所以模型預測錯誤就有兩種情況:假負和假正。對於不同的場景,我們對模型的要求也不同。

  • 對於診斷疾病的模型(假設疾病患者爲正類,健康患者爲負類),**假負(把病人診斷爲健康,會錯過最佳治療時間)**比假正情況更嚴重,所以該模型應該更傾向於找出所有爲positive的樣本(患病的就診者);
  • 對於垃圾郵件檢測模型(假設垃圾郵件爲正類,正常郵件爲負類),**假正(把正常郵件檢測爲垃圾郵件,會錯過重要郵件)**比假負情況更嚴重,所以該模型應該更傾向於選出所有爲negative的樣本(正常郵件)。

針對這兩種場景,就需要兩個指標,查準率和查全率。

疾病檢測模型需要的是高召回率,即儘量不漏過任何一個正樣本;垃圾郵件檢測模型需要的是高精確率,即儘量不誤判任何一個負樣本。

二級指標

但是,混淆矩陣裏面統計的是個數,有時候面對大量的數據,光憑算個數,很難衡量模型的優劣。因此混淆矩陣在基本的統計結果上又延伸瞭如下4個指標,我稱他們是二級指標(通過最底層指標加減乘除得到的):

  • 準確率(Accuracy)—— 針對整個模型

  • 精確率(Precision)

  • 靈敏度(Sensitivity):就是召回率(Recall)

  • 特異度(Specificity)

我用表格的方式將這四種指標的定義、計算、理解進行了彙總。

通過上面的四個二級指標,可以將混淆矩陣中數量的結果轉化爲0-1之間的比率。便於進行標準化的衡量。

在信息檢索領域,精確率和召回率又被稱爲查準率查全率
= 查準率 = \frac{檢索出的相關信息量}{檢索出的信息總量}

= 查全率 = \frac{檢索出的相關信息量}{系統中的相關信息總量}

在正負樣本不平衡的情況下,準確率這個評價指標有很大的缺陷。比如在互聯網廣告裏面,點擊的數量是很少的,一般只有千分之幾,如果用acc,即使全部預測成負類(不點擊)acc 也有 99% 以上,沒有意義。

在這四個指標的基礎上在進行拓展,會產生另外一個三級指標。

三級指標

這個指標叫做F1 Score。他的計算公式是:
F1Score=2PRP+R F1 Score = \frac{2PR}{P+R}
其中,P代表Precision,R代表Recall。

一般來說,查準率高時,查全率往往偏低;而查全率高時,查準率往往偏低。兩者的關係可以用一個P-R圖來展示(圖來自周志華的機器學習):

P-R曲線與平衡點示意圖

F1-Score指標綜合了Precision與Recall的產出的結果(精確率和準確率都高的情況下,F1值也會高)。F1-Score的取值範圍從0到1的,1代表模型的輸出最好,0代表模型的輸出結果最差。

混淆矩陣的實例

當分類問題是二分問題是,混淆矩陣可以用上面的方法計算。當分類的結果多於兩種的時候,混淆矩陣同時適用。

以下面的混淆矩陣爲例,我們的模型目的是爲了預測樣本是什麼動物,這是我們的結果:

通過混淆矩陣,我們可以得到如下結論:

Accuracy

在總共66個動物中,我們一共預測對了10 + 15 + 20=45個樣本,所以準確率(Accuracy)=45/66 = 68.2%。

以貓爲例,我們可以將上面的圖合併爲二分問題:

Precision

所以,以貓爲例,模型的結果告訴我們,66只動物裏有13只是貓,但是其實這13只貓只有10只預測對了。模型認爲是貓的13只動物裏,有1條狗,兩隻豬。所以,Precision(貓)= 10/13 = 76.9%

Recall

以貓爲例,在總共18只真貓中,我們的模型認爲裏面只有10只是貓,剩下的3只是狗,5只都是豬。這5只八成是橘貓,能理解。所以,Recall(貓)= 10/18 = 55.6%

Specificity

以貓爲例,在總共48只不是貓的動物中,模型認爲有45只不是貓。所以,Specificity(貓)= 45/48 = 93.8%。

雖然在45只動物裏,模型依然認爲錯判了6只狗與4只貓,但是從貓的角度而言,模型的判斷是沒有錯的。

F1-Score

通過公式,可以計算出,對貓而言,F1-Score=(2 * 0.769 * 0.556)/( 0.769 + 0.556) = 64.54%

同樣,我們也可以分別計算豬與狗各自的二級指標與三級指標值。

通俗理解

剛開始接觸這兩個概念的時候總搞混,時間一長就記不清了。

實際上非常簡單,精確率是針對我們預測結果而言的,它表示的是預測爲正的樣本中有多少是對的。那麼預測爲正就有兩種可能了,一種就是把正類預測爲正類(TP),另一種就是把負類預測爲正類(FP)。

召回率是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了。那也有兩種可能,一種是把原來的正類預測成正類(TP),另一種就是把原來的正類預測爲負類(FN)。

ROC曲線

ROC曲線簡介

很多學習器是爲測試樣本產生一個實值或概率預測,然後將這個預測值與一個分類閾值(threshold)進行比較,若大於閾值則分爲正類,否則爲反類.例如,神經網絡在一般情形下是對每個測試樣本預測出一個[0.0,1.0]之間的實值,然後將這個值與0.5進行比較,大於0.5則判爲正例,否則爲反例.這個實值或概率預測結果的好壞,直接決定了學習器的泛化能力.實際上根據這個實值或概率預測結果,我們可將測試樣本進行排序,“最可能”是正例的排在最前面,“最不可能”是正例的排在最後面.這樣,分類過程就相當於在這個排序中以某個’'截斷點” (cut point)將樣本分爲兩部分,前一部分判作正例,後一部分則判作反例。

在不同的應用任務中,我們可以根據任務需求來採用不同的截斷點,例如:

  • 更重視“查準率”,則可選擇排序中靠前的位置進行截斷

  • 更重視“查全率”,則可選擇排序中靠後的位置進行截斷

因此,排序本身的質量好壞,體現了綜合考慮學習器在不同任務下的“期望泛化性能”的好壞,或者說,“一般情況下”泛化性能的好壞。ROC曲線就是從這個角度出發來研究學習器泛化性能的有力工具。

ROC 曲線是另一種用於評價和比較二分類器的工具。它和精確率/召回率曲線有着很多的相似之處,當然它們也有所不同。它將真正類率(true positive rate,即recall)和假正類率(被錯誤分類的負實例的比例)對應着繪製在一張圖中,而非使用精確率和召回率。

ROC 關注兩個指標:
truepostivaterate(recall):TPR=TPTP+FN true postivate rate(recall): TPR = \frac{TP}{TP+FN}

falsepositiverate:FPR=FPPP+TN false positive rate: FPR = \frac{FP}{PP+TN}

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

如下面這幅圖,(a)圖中實線爲ROC曲線,線上每個點對應一個閾值。

  • 橫軸FPR:FPR越大,預測正類中實際負類越多。

  • 縱軸TPR:TPR越大,預測正類中實際正類越多。

  • 理想目標:TPR=1,FPR=0,**即圖中(0,1)點,故ROC曲線越靠攏(0,1)點,越偏離45度對角線越好。

  1. 理想情況下,TPR應該接近1,FPR應該接近0。

    ROC曲線上的每一個點對應於一個threshold,對於一個分類器,每個threshold下會有一個TPR和FPR。

    比如Threshold最大時,TP=FP=0,對應於原點;Threshold最小時,TN=FN=0,對應於右上角的點(1,1)

  2. 隨着閾值theta增加,TP和FP都減小,TPR和FPR也減小,ROC點向左下移動;

ROC曲線繪製

以FPR作爲橫軸、TPR作爲縱軸作圖,就得到了“ROC曲線”,顯示ROC曲線的圖叫做“ROC圖”。如下所示,顯然,對角線對應於“隨機猜測”模型,而點(0,1)則對應於將所有正例排在所有反例之前的理想模型。

現實任務中通常是利用有限個測試樣例來繪製ROC圖,此時僅能獲得有限個(真正正例率,假正例率)座標對,無法產生上圖(a)中的光滑ROC曲線,只能繪製出上圖(b)所示的近似ROC曲線。繪製過程如下:

  1. 給定m+m^+個正例和mm^-個反例,根據學習器預測結果對樣例進行排序
  2. 設置不同的分類閾值:
    2.1 把分類閾值設爲最大,即把所有樣例均預測爲反例,此時TPR=FPR=0。在座標(0,0)處標記一個點。
    2.2 將分類閾值依次設爲每個樣例的預測值,即依次將每個樣例劃分爲正例。設前一個標記點座標爲(x,y)(x,y)
    當前若爲真正例(TP),則對應標記點的座標爲(x,y+1m+)(x, y+\frac{1}{m^+})
    當前若爲假正例(FP),則對應標記點的座標爲 (x+1m,y)(x+\frac{1}{m^-}, y)
  3. 最後用線段連接相鄰點即得ROC曲線

ROC實例

爲方便大家進一步理解,在網上找到了一個示例跟大家一起分享。下圖是一個二分模型真實的輸出結果,一共有20個樣本,正樣本10個,負樣本10個。輸出的概率就是模型判定其爲正例的概率,第二列是樣本的真實標籤。

現在我們指定一個閾值爲0.9,那麼只有第一個樣本(0.9)會被歸類爲正例,而其他所有樣本都會被歸爲負例,因此,對於0.9這個閾值,我們可以計算出FPRFPR爲0,TPRTPR爲0.1(因爲總共10個正樣本,預測正確的個數爲1),那麼我們就知道曲線上必有一個點爲(0, 0.1)。再看第三個樣本(0.7), 我們指定閾值爲0.7,則預測正樣本的爲[1, 2, 3],此時TP=2, FP=1,則可以計算出FPR=1/10FPR= 1/10TPR=2/10TPR=2 / 10。依次選擇不同的閾值(或稱爲“截斷點”),畫出全部的關鍵點以後,再連接關鍵點即可最終得到ROC曲線如下圖所示。

優點

相比 P-R 曲線來說,ROC 曲線有一個很大的特點:ROC 曲線的形狀不會隨着正負樣本分佈的變化而產生很大的變化,而 P-R 曲線會發生很大的變化。

如上圖測試集負樣本數量增加 10 倍以後 P-R 曲線發生了明顯的變化,而 ROC 曲線形狀基本不變。在實際環境中,正負樣本的數量往往是不平衡的,所以這也解釋了爲什麼 ROC 曲線使用更爲廣泛。

AUC

AUC(Area Under Curve)被定義爲ROC曲線下的面積,顯然這個面積的數值不會大於1。

The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example.

翻譯過來就是,隨機挑選一個正樣本以及一個負樣本,分類器判定正樣本的值高於負樣本的概率就是 AUC 值。

簡單說:AUC值越大的分類器,正確率越高3

  • AUC=1AUC=1完美分類器,採用這個預測模型時,不管設定什麼閾值都能得出完美預測。絕大多數預測的場合,不存在完美分類器。
  • 0.5<AUC<10.5<AUC<1,優於隨機猜測。這個分類器(模型)妥善設定閾值的話,能有預測價值。
  • AUC=0.5AUC=0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預測價值。
  • AUC<0.5AUC<0.5,比隨機猜測還差;但只要總是反預測而行,就優於隨機猜測,因此不存在 AUC<0.5AUC<0.5 的情況。

既然已經這麼多評價標準,爲什麼還要使用ROC和AUC呢?因爲ROC曲線有個很好的特性:當測試集中的正負樣本的分佈變化的時候,ROC曲線能夠保持不變。在實際的數據集中經常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多很多(或者相反)

MSE、RMSE、MAE、R2

定義

  • MSE(Mean Squared Error) 均方誤差,P=1m(yif(xi))2P=\frac{1}{m} \sum(y_i- f(x_i))^2
  • RMSE(Root Mean Squared Error) 均方根誤差,P=1m(yif(xi))2P= \sqrt{ \frac{1}{m} \sum(y_i- f(x_i))^2}
  • MAE(Mean Absolute Error) 平均絕對誤差,P=1myif(xi)2P=\frac{1}{m} \sum|y_i- f(x_i)|^2
  • R2R^2,決定係數,

優缺點

MSE、RMSE、MAE、R2R^2 主要用於迴歸模型

MSE 和 RMSE 可以很好的反應迴歸模型預測值和真實值的偏離成都,但如果存在個別離羣點的偏離程度非常大時,即使其數量非常少也會使得RMSE指標變差(因爲用了平方)。解決這種問題主要有三個方案:

  1. 如果認爲是異常點時,在數據預處理的時候就把它過濾掉;
  2. 如果不是異常點的話,就提高模型的預測能力,將離羣點產生的原因建模進去;
  3. 此外也可以找魯棒性更好的評價指標,如:MAE;

參考鏈接

歡迎關注微信公衆號

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