模型性能度量,分類算法評價

總述:

爲了評估機器學習算法在某項任務中好壞,需要我們設計方法去度量性能,比如,在分類任務中,我們經常衡量模型的精度(accuracy),即正確分類數據與全部分類數據的比值。與之相對應,我們去測量錯誤分類數據在全部分類數據比例,稱之爲錯誤率(error rate),也常將錯誤率稱爲0-1損失期望。

機器學習算法是在實際環境中運行的,也就是說,機器學習所面臨的數據是未知的。生活告訴我們,實踐才能出真知,但未來總是複雜多變的,莊子曾說過“吾生也有涯,而知也無涯,以有涯隨無涯,殆已。”告訴我們要從已知中去追尋未知。因此我們需要“假造”一些未知數據,我們稱之爲測試數據集(test set of data),我們將訓練好的機器學習算法拿到這些測數據集上進行性能測量,然後我們就“自欺欺人”的宣稱我們設計的算法如何的好。測試數據也是已知數據的一部分,實際這部分數據我們首先密封起來,只在最終的性能測試時才用。

舉例:

拿課程作爲類比,平時做的練習題或者家庭作業就是我們的訓練數據(trainning set of data),老師組織的月考、期中考,我們稱之爲驗證數據,最後參加的期末考試我們稱之爲測試數據,這三部分數據全是已有的數據,其中訓練數據只用來訓練,學生(學習算法)的目標是在這部分數據上不斷提高性能,而老師(算法調整人員)會使用驗證數據監控學生的學習情況,然後去調整學生的學習方式,當老師認爲該學生已經無法再提高時,就是用測試數據模擬未知數據對學生進行最後的性能測試。

一、查全率和查準率

錯誤率和精度是最常用的度量方式,但在特定的任務中,我們還需要一些額外的度量方式,比如進行信息檢索時,我們經常需要關心“檢索的信息中有多少是用戶感興趣的”以及“用戶感興趣的信息有多少被檢索出來了”這兩類問題,而此時,我們引入查準率(precision)與查全率(recall)

爲了更好介紹查準率和查全率,以二分類問題爲例子,我們需要將分類器預測結果分爲以下4種情況。

  • <1>真正例(True Positive,TP),分類器預測1,真實類標爲“1”的分類數據。
  • <2>假正例(False Positive,FP),分類器預測1,真實類標爲“0”的分類數據。
  • <3>真反例(True Negative,TN),分類器預測0,真實類標爲“0”的分類數據。
  • <4>假反例(False Negative,FN),分類器預測0,真實類標爲“1”的分類數據

而TP+FP+TN+FN = 數據總量,如下表所示爲混淆矩陣(Confusion Matrix)

真實情況 預測結果
正例 反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) TN(真反例)

如上表,

 

準確率Accuracy),表示正確分類的測試實例的個數佔測試實例總數的比例,計算公式爲: 

                              

查準率Precision),也稱精確率,表示正確分類的正例個數佔分類爲正例的實例個數的比例:  

                                  

查全率Recall),也稱召回率,表示正確分類的正例個數佔實際正例個數的比例:          

                                     

查準率和查全率是一對“魚”與“熊掌”,一把來說,查準率高時,查全率往往偏低;而查全率高時,查準率往往偏低。

例如,如果想將垃圾郵件都選取出來,可以將所有郵件都標籤爲垃圾郵件,那麼查全率就接近於1,但這樣查準率就會比較低;如果希望分類垃圾郵件的查準率足夠高,那麼可以讓分類器儘可能挑選最有把握的垃圾郵件,但這樣往往會有大量的垃圾郵件成爲漏網之魚,此時查全率就會比較低。

需要注意的是,性能度量也依賴於所需完成任務的應用場景。任務場景不同,度量手段也不同,如果性能度量選取不當,對於該任務可能是毀滅級的。比如我們讓機器完成指紋識別任務,但應用在超市中和應用在安全機構部門的指紋識別系統,其度量方式完全不同。在某個超市會員系統中,需要識別用戶的指紋以確定用戶是否爲會員,然後對部分商品進行打折或者抽獎服務,此時我們並不關心指紋識別的精準度,假設一個會員用戶總是被識別錯誤,那麼該用戶就會非常惱火,超市很可能會失去一個老顧客。相反,將一個非會員顧客識別錯誤,其損失就沒那麼高,或許還有可能獲得一個新會員,因此該任務更關心查全率,也就是期望所有會員都要被識別出來。但如果指紋識別應用到安全部門,用於識別員工的身份,此時我們就更關心識別員工的正確性,因此機器只會在最有“把握”的情況下才允許員工通過,此時我們更關心查準率。我們或許情願對員工識別錯誤100次,也不願意放過一個非員工,或許此時機器學習可能“非常不好用”,但安全性得到了報障。

 

二、P-R曲線、平衡點和F1度量

1、P-R曲線

在很多情形下,我們可根據學習器的預測結果對樣例進行排序,排在前面的是學習器認爲“最可能”是正例的樣本,排在最後的是學習器認爲“最不可能”是正例的樣本。按此順序設置不同的閾值,逐個把樣本作爲正例進行預測,則每次可以計算出當前的查準率、查全率。以查準率爲縱軸、查全率爲橫軸作圖,就得到了查準率-查全率曲線,簡稱“P-R曲線”,顯示該曲線的圖稱爲“P-R圖”。

P-R圖直觀地顯示出學習器在樣本總體上的查全率、查準率。在進行比較時,若一個學習器的P-R曲線被另一個學習器的曲線完全“包住”,則可斷言後者的性能優於前者,例如上圖中學習器A的性能優於學習器C;如果兩個學習器的P-R曲線發生了交叉,例如圖1中的A和B,則難以一般性地斷言兩者孰優孰劣,只能在具體的查準率或查全率條件下進行比較。然而,在很多情形下,人們往往仍然希望把學習器A與B比出個高低。這時,一個比較合理的判斷依據是比較P-R曲線下面積的大小,它在一定程度上表徵了學習器在查準率和查全率上取得相對“雙高”的比例。但這個值不太容易估算,因此,人們設計了一些綜合考慮查準率、查全率的性能度量,比如BEP度量、F1度量。

2、平衡點(BEP)

“平衡點”(Break-Even-Point,簡稱BEP)就是這樣一個度量,它是“查準率 = 查全率”時的取值,例如上圖中學習器C的BEP是0.64,而基於BEP的比較,可認爲學習器A優於B。

3、F1度量

BEP曲線還是過於簡化了些,更常用的是F1度量。我們先來談談F1度量的由來是加權調和平均,

計算公式:F1 = 2 * F * R / ( F + R )

在一些應用中,對查準率和查全率的重視程度有所不同。例如在商品推薦系統中,爲了儘可能少打擾用戶,更希望推薦內容確實是用戶感興趣的,此時查準率更重要;而在逃犯信息檢索系統中,更希望儘可能少漏掉逃犯,此時查全率更重要。

F1度量的一般形式是,能讓我們表達出對查準率/查全率的不同偏好,它定義爲公式如下所示

其中,β>0度量了查全率對查準率的相對重要性。

  • β=1時,退化爲標準的F1,查全率與查準率重要程度相同;
  • β>1時,查全率有更大影響;
  • β<1時,查準率有更大影響。

 

三、ROC曲線和AUC(度量分類中的非均衡性)

1、ROC曲線

TPR(True Positive Rate)表示在所有實際爲正例(陽性)的樣本中,被正確地判斷爲正例的比率,即:

                          TPR=TP/(TP + FN)

FPR( False Positive Rate)表示在所有實際爲反例(陰性)的樣本中,被錯誤地判斷爲正例的比率,即:

                          FPR=FP/(FP + TN)

ROC曲線是以FPR作爲X軸,TPR作爲Y軸。FPR越大表明預測正例中實際負例越多,TPR越大,預測正例中實際正例越多。ROC曲線如下圖所示:
                                                

2、ROC曲線

AUC值(Area Unser the Curve)是ROC曲線下的面積,AUC值給出的是分類器的平均性能值。使用AUC值可以評估二分類問題分類效果的優劣,計算公式如下:

                                                   

      一個完美的分類器的AUC爲1.0,而隨機猜測的AUC爲0.5,顯然AUC值在0和1之間,並且數值越高,代表模型的性能越好。

 

 

 

Reference:

《深度學習實戰》楊雲 杜飛著

《機器學習》周志華著

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