分類模型的評估(一)

針對分類模型的評估討論,一共有三篇連續的文章。

這是開頭的第一篇,主要討論查准率(Precision)、查全率(Recall)以及F-score。它們是針對二元分類結果常用的評估指標,這篇文章將討論這些指標的含義、設計初衷以及局限性。

第二篇將討論ROC曲線和AUC、第三篇將討論這些評估指標的代碼實現。

一、二元分類問題

在機器學習領域,我們常常會碰到二元分類問題。這是因為在現實中,我們常常面對一些二元選擇,比如在休息時,決定是否一把吃雞遊戲。不僅如此,很多事情的結果也是二元的,比如向妹子表白時,是否被發好人卡。

當然,在實際中還存在一些結果是多元的情況,比如紅、黃、藍三種顏色中,喜歡哪一個,而這些多元情況對應著機器學習里的多元分類問題。對於多元分類問題,在實際的處理過程中常將它們轉換為多個二元分類問題解決,比如圖1所示的例子。

圖1

那麼自然地,一個多元分類結果可以分解為多個二元分類結果來進行評估。這就是為什麼我們只討論二元分類結果的評估。為了更加嚴謹的表述,我們使用變數 y_i 來表示真實的結果, hat{y_i} 表示預測的結果。其中 y_i = 1 表示正面的結果(在實際應用中更加關心的類別),比如妹子接受表白,而 y_i = 0 表示負面的結果,比如妹子拒絕表白。

二、查准率與查全率

在討論查准查全的數學公式之前,我們先來探討:針對二元分類問題,應該如何正確評估一份預測結果的效果。

沿用上面的數學記號。如圖2所示,圖中標記為1的方塊表示 hat{y_i} = 0 ,但 y_i = 1 的數據;標記為3的凹型方塊表示 hat{y_i} = 1 ,但 y_i = 0 的數據;標記為2的方塊表示 hat{y_i} = 1 ,且 y_i = 1 的數據。而且這些圖形的面積與對應數據的數據量成正比,比如 hat{y_i} = 1y_i=1 的數據個數越多,標記2的面積越大。

很容易發現,圖中標記為2的部分表示模型預測結果正確,而標記為1和3的部分則表示模型預測結果錯誤。

  • 對於一份預測結果,一方面希望它能做到「精確」:當 hat{y_i} = 1 時,有很大概率,真實值 y_i 就等於1。這表現在圖形上,就是標記2的面積很大,而標記3的面積很小。
  • 另一方面也希望它能做到「全面」:對於幾乎所有的 y_i = 1 ,對應的預測值 hat{y_i} 也等於1。在圖形上,這表示標記2的面積很大,而標記1的面積很小。

於是,對應地定義查准率(precision)和查全率(recall)這兩個技術指標(有的文獻里,將查准率翻譯為精確率;將查全率翻譯為召回率)來評估一份預測結果的效果。比較直觀的定義如圖2所示。

圖2

為了更加嚴謹,下面將從數學的角度給出這兩個指標的嚴格定義。首先將數據按預測值和真實值分為4類,具體見表1。

表1

於是可以得到公式(1):

Precision = frac{TP}{TP + FP}, quad Recall = frac{TP}{TP + FN}	ag{1}

公式(1)經過進一步的推導,可以得到這兩個技術指標的概率定義,如公式(2)。從概率上來講:預測值等於1時,真實值等於1的概率為查准率;真實值等於1時,預測值等於1的概率為查全率。

Precision = P(y_i = 1 | hat{y_i} = 1),quad Recall = P(hat{y_i} = 1 | y_i = 1) 	ag{2}

理想的情況是這兩個指標都很高,但現實往往是殘酷的。這兩個指標通常存在著此消彼長的現象。比如降低預測表白成功的標準(也就是增加 hat{y_i} = 1 的數量),往往會提高它的查全率,但同時會降低它的查准率,反之依然。整個過程的直觀圖像如圖3所示。

圖3

三、F-score

既然這兩個指標往往是成反比的,而且在很大程度上,受預測標準的控制。那麼只拿其中的某一個指標去評估預測結果是不太合適的。比如在極端情況下,預測所有表白都成功,即 hat{y_i} equiv 1 。這時預測的查全率是100%,但查准率肯定很低,而且這樣的預測顯然是沒太大價值的。而兩個指標同時使用,在實際應用時又不太方便。為了破解這個困局,在實踐中,我們定義了新的指標 F_1-score 去「綜合」這兩個指標。具體的定義如公式(3),從數學上來看,它其實是查准率與查全率的調和平均數。對於二元分類問題,F_1-score 綜合考慮了預測結果的查准率和查全率,是一個比較好的評估指標。

F_1 = frac{2}{frac{1}{Precision} + frac{1}{Recall}} = 2frac{Precision 	imes Recall}{Precision + Recall} 	ag{3}

其實從模型的角度來看,查准率與查全率的「相互矛盾」給了我們更多的調整空間。應用場景不同,我們對查准率和查全率的要求是不一樣的。在有的場景中,關注的焦點是查全率。例如對於網上購物的衣服推薦,電商平台關心的是那些對衣服感興趣的客戶,希望模型對這些客戶的預測都正確;而那些對衣服不感興趣的客戶,即使模型結果有較大偏差,也是可以接受的。也就是說,電商平台重視查全率,但不太關心查准率。這時就可以調低模型的預測標準,通過犧牲查准率來保證查全率。但在有的場景中,查准率才是重點。例如在實時競價(RTB)廣告行業,有3種參與者:需要在互聯網上對產品做廣告的商家,比如Nike;廣告投放中介(DSP);廣告位提供者,比如新浪網。Nike將廣告內容委託給廣告投放中介AA通過分析選定目標客戶群。當目標客戶訪問新浪網時,A向新浪網購買廣告位並將Nike廣告推送給他。如果該客戶點擊了Nike廣告,Nike會向投放中介A支付相應費用。否則,全部費用由中介A承擔。那麼對於廣告投放中介A,它希望投放的每條廣告都會被點擊,但不太關心是否每個對Nike感興趣的客戶都被推送了廣告。換句話說,廣告投放中介更關心查准率。於是可以通過調高模型的預測標準來提高查准率,當然這時會犧牲一部分查全率。

對於這些偏重某一特定指標的場景,可以如公式(4),相應地定義指標F_eta-score (其實F_1-scoreF_eta-score 的一個特例)。當 eta 靠近0時,F_eta-score 偏向查准率,而 eta 很大時,則偏向查全率,如圖4所示。

F_eta = (1 + eta^2)frac{Precision 	imes Recall}{eta^2 	imes Precision + Recall} 	ag{4}

圖4

四、總結

查准率、查全率和F-score是最為常用的二元分類結果評估指標。其中查准率和查全率這兩個指標都只側重於預測結果的某一個方面,並不能較全面地評價分類結果。而F-score則是更加「上層」的評估指標,它建立在前面兩個指標的基礎上,綜合地考慮了分類結果的精確性和全面性。

從上面的討論可以看到,這三個指標針對的是某一份給定的分類結果。但對於大多數分類模型,它們往往能產生很多份分類結果,比如對於邏輯回歸,調整預測閾值可以得到不同的分類結果。也就是說,這三個指標並不能「很全面」地評估模型本身的效果,需要引入新的評估指標。這部分內容的討論將在下一篇文章中展開(《分類模型的評估(二)》)。

五、廣告時間

這篇文章的大部分內容參考自我的新書《精通數據科學:從線性回歸到深度學習》,歡迎大家購買。

另外歡迎大家觀看我的公開課,懇請大家批評與指正。

數據科學「內戰」:統計 vs. 機器學習?

www.chinahadoop.cn圖標
推薦閱讀:

灣區超級獨角獸們怎麼玩轉數據科學
一行代碼,Pandas秒變分散式,快速處理TB級數據
從0開始,Data Scientist之路 Day 4
是什麼驅動了Python近些年強力的增長?來自Stack Overflow的分析
如何用Python爬數據?(一)網頁抓取

TAG:機器學習 | 人工智慧 | 數據科學 |