1. 程式人生 > >衡量機器學習模型的三大指標:準確率、精度和召回率。

衡量機器學習模型的三大指標:準確率、精度和召回率。

美國 ext 另一個 IE blank 進行 style 監測 最好

連接來源:http://mp.weixin.qq.com/s/rXX0Edo8jU3kjUUfJhnyGw

  傾向於使用準確率,是因為熟悉它的定義,而不是因為它是評估模型的最佳工具! 精度(查準率)和召回率(查全率)等指標對衡量機器學習的模型性能是非常基本的,特別是在不平衡分布數據集的案例中,在周誌華教授的「西瓜書」中就特別詳細地介紹了這些概念。

  什麽是分布不平衡的數據集

  倘若某人聲稱創建了一個能夠識別登上飛機的恐怖分子的模型,並且準確率(accuracy)高達 99%。你相信嗎?好了,有這麽一個模型:將從美國機場起飛的所有乘客簡單地標註為非恐怖分子。已知美國全年平均有 8 億人次的乘客,並且在 2000-2017 年間共發現了 19 名恐怖分子,這個模型達到了接近完美的準確率——99.9999999%。盡管這個模型擁有接近完美的準確率,但是在這個問題中準確率顯然不是一個合適的度量指標。

  恐怖分子檢測是一個不平衡的分類問題:我們需要鑒別的類別有兩個——恐怖分子和非恐怖分子,其中一個類別代表了極大多數的數據點

  另一個不平衡分類問題出現在當疾病在公眾中的發病率很低時的疾病監測。在這兩種情況下,正例類別——疾病或恐怖分子,遠遠少於負例類別的數量。這種問題是數據科學中比較常見的例子,其中準確率並不是評估模型性能的很好的衡量標準。

  直觀地說,我們應該聚焦於正例(恐怖分子)的識別

一、召回率

  我們應該最大化的是統計學上稱為召回率或查全率(recall)的衡量指標,或者是最大化模型找到數據集中所有相關案例的能力。

  召回率=真正例/(真正例+假反例)也就是正確判為恐怖分子占實際所有恐怖分子的比例

技術分享圖片

你可能註意到了這個等式中的一些細節:如果我們將所有的個體都預測為恐怖分子,那麽模型的召回率就是 1.0!因為預測所有人都是恐怖分子,自然包括了恐怖分子。分號上面terrorists correctly identified=全部恐怖分子數。分母terrorists incorrectly labeled as not terrorists=0。

這樣我們就得到了一個完美的模型嗎?
當然,不是!在我們想要最大化的指標之間存在一個權衡。在召回率的例子中,當召回率增大時,精度會減小。同樣,將 100% 的乘客標記為恐怖分子的模型可能是不可用的。 統計學為我們提供了表達直覺的詞匯:這個新的模型是低精度(precision)的,或者說較低的僅識別相關數據點的能力。

二、精度 

 精度=真正例/(真正例+假正例)也就是在所有判為恐怖分子中,真正的恐怖分子的比例。

技術分享圖片

  現在我們可以看到,第一個模型給所有的個體標上了非恐怖分子的標簽,這個模型是不能使用的。盡管它有著近乎完美的準確率,但是它的精度和召回率都是零,因為沒有 TP(真正例)!
假設我們輕微地修改一下模型,然後將一個個體正確地識別為恐怖分子。現在,精度是 1(沒有假正例,FP),但是召回率很低,因為實際上會有很多假反例(FN)。
假設我們走到了另一個極端,將所有的乘客標記為恐怖分子,召回率就會是 1——我們將抓住每一個恐怖分子,但是精度會特別低,我們最終會拘留很多無辜的人。換言之,隨著精度的增加,召回率會降低,反之亦然。

三、精度—召回率權衡

1.  結合精度和召回率

在某些情況中,我們也許需要以犧牲另一個指標為代價來最大化精度或者召回率。
例如,在之前的例子中,在對患者進行隨訪檢查的初步疾病篩查中,我們可能希望得到接近於 1 的召回率—我們想找到所有實際患病的患者。
如果隨訪檢查的代價不是很高,我們可以接受較低的精度。然而,如果我們想要找到精度和召回率的最佳組合,我們可以使用 F1 score 來對兩者進行結合。

技術分享圖片

2.  可視化精度和召回率

(1)混淆矩陣(confusion matrix):給定一個模型的預測標簽時,它可以被用來快速計算精度和召回率。

二分類的混淆矩陣總共包含四個不同的結果:真正例(TP)、假正例(FP)、真反例(TN),以及假反例(FN)。
列表示真實值,行表示預測值。行和列的交叉點指的就是這四種結果。例如,如果我們將一個數據點預測為正例,但是它實際上是反例,那麽這就是一個假正例。

技術分享圖片

技術分享圖片

(2)受試者特征曲線(ROC 曲線,Receiver Operating Characteristic curve):

  ROC 曲線展示了當改變在模型中識別為正例的閾值時,召回率和精度的關系會如何變化。
  為了將某個病人標記為患有某種疾病(一個正例標簽),我們為每種疾病在這個範圍內設置一個閾值,通過改變這個閾值,我們可以嘗試實現合適的精度和召回率之間的平衡。如果我們有一個用來識別疾病的模型,我們的模型可能會為每一種疾病輸出介於 0 到 1 之間的一個分數,為了將某個病人標記為患有某種疾病(一個正例標簽),我們為每種疾病在這個範圍內設置一個閾值,通過改變這個閾值,我們可以嘗試實現合適的精度和召回率之間的平衡。

  ROC 曲線在 Y 軸上畫出了真正例率(TPR),在 X 軸上畫出了假正例率 (FPR)。TPR 是召回率,FPR 是反例被報告為正例的概率。這兩者都可以通過混淆矩陣計算得到。

技術分享圖片

技術分享圖片

1.  選擇最佳的診斷界限值。ROC曲線越靠近左上角,試驗的準確性就越高。最靠近左上角的ROC曲線的點是錯誤最少的最好閾值,其假陽性和假陰性的總數最少

2.  兩種或兩種以上不同診斷試驗對算法性能的比較。在對同一種算法的兩種或兩種以上診斷方法進行比較時,可將各試驗的ROC曲線繪制到同一坐標中,以直觀地鑒別優劣,靠近左上角的ROC曲線所代表的受試者工作最準確。亦可通過分別計算各個試驗的ROC曲線下的面積(AUC)進行比較,哪一種試驗的 AUC最大,則哪一種試驗的診斷價值最佳。

  在閾值為 1.0 的情況下,我們將位於圖的左下方,因為沒有將任何數據點識別為正例,這導致沒有真正例,也沒有假正例(TPR = FPR = 0)。當降低閾值時,我們將更多的數據點識別為正例,導致更多的真正例,但也有更多的假正例 ( TPR 和 FPR 增加)。最終,在閾值 0.0 處,我們將所有數據點識別為正,並發現位於 ROC 曲線的右上角 ( TPR = FPR = 1.0 )。

總結:

對於二分類問題:

  • 真正例(TP):實際上是正例的數據點被標記為正例

  • 假正例(FP):實際上是反例的數據點被標記為正例

  • 真反例(TN):實際上是反例的數據點被標記為反例

  • 假反例(FN):實際上是正例的數據點被標記為反例

召回率和精度衡量指標:

  • 召回率(R):分類模型識別所有相關實例的能力

  • 精度(P):分類模型僅僅返回相關實例的能力

  • F1 score:使用調和平均結合召回率和精度的指標

召回率和精度的可視化:

  • 混淆矩陣:展示分類模型的真實和預測標簽的對應結果。

  • 受試者特征曲線(ROC 曲線):畫出真正例率(TPR)和假正例率(FPR),並將此作為模型歸類正例閾值的函數。

  • 曲線下面積(AUC):基於 ROC 曲線下方的面積,計算分類模型總體性能的指標。

衡量機器學習模型的三大指標:準確率、精度和召回率。