混淆矩陣、精確率、召回率、ROC曲線相關問題

1. 混淆矩陣

混淆矩陣是二分類問題的多維衡量指標體系,在樣本不平衡時極其有用。在混淆矩陣中,我們將少數類認爲是正例,多數類認爲是負例。在決策樹,隨機森林這些普通的分類算法裏,即是說少數類是1,多數類是0。在SVM裏,就是說少數類是1,多數類是-1。普通的混淆矩陣,一般使用{0,1}來表示。
在這裏插入圖片描述

  • 混淆矩陣中,永遠是真實值在前,預測值在後。其實可以很容易看出,11和00的對角線就是全部預測正確的,01和10的對角線就是全部預測錯誤的。基於混淆矩陣,我們有六個不同的模型評估指標,這些評估指標的範圍都在[0,1]之間,所有以11和00爲分子的指標都是越接近1越好,所以以01和10爲分子的指標都是越接近0越好。對於所有的指標,我們用橙色表示分母,用綠色表示分子,則我們有:

1.1 準確率(Accuracy)

  • 爲了方便作對比,我們先看一下熟知的準確率是什麼意思:就是預測正確的佔總樣本的比例。一般在樣本不平衡問題下,不使用這個評估指標。可以想象一下,假設我們有999個負例,1個正例,假設預測正確了900個樣本(包括那個正例),則準確率爲90%,這就一定很好麼,很顯然模型對正例的預測是很差的,模型只是對學習負例有很好的表現,所以這個評價指標在樣本不平衡時不能使用。
    在這裏插入圖片描述

1.2 精確度(Precision)

  • 準確率表示在我們預測爲正例的樣本中,有多少被真正的預測對了。比如我們預測有60個正例,其中40個是真正的正例,20個是負例,即被預測錯了。那麼準確率就是40/60.
  • 精確度又叫查準率。精確度是”將多數類判錯後所需付出成本“的衡量。
  • 當每一次將多數類判斷錯誤的成本非常高昂的時候(比如大衆召回車輛的例子),我們會追求高精確度。精確度越低,我們對多數類的判斷就會越錯誤。當然了,如果我們的目標是不計一切代價捕獲少數類,那我們並不在意精確度。
    在這裏插入圖片描述

1.3 召回率(Recall)

  • 描述在所有正例中,有多少被我們預測出來了。比如我們原來數據集中有60個正例,其中有40個被我們預測出來了(11),剩下的20個就沒有被真正的預測出來(預測爲正例實際爲負例)那麼Recall=40/60.
  • 召回率越高,代表我們儘量捕捉出了越多的少數類,召回率越低,代表我們沒有捕捉出足夠的少數類。
  • 如果我們希望不計一切代價,找出少數類(比如找出潛在犯罪者的例子),那我們就會追求高召回率,相反如果我們的目標不是儘量捕獲少數類,那我們就不需要在意召回率。
    在這裏插入圖片描述

1.4 F1-measure(F-score)

  • 爲了同時兼顧精確度和召回率,我們創造了兩者的調和平均數作爲考量兩者平衡的綜合性指標,稱之爲F1-score。兩個數之間的調和平均傾向於靠近兩個數中比較小的那一個數,因此我們追求儘量高的F1-measure,能夠保證我們的精確度和召回率都比較高。F1 measure在[0,1]之間分佈,越接近1越好。
    在這裏插入圖片描述

2. 查準率和查全率之間的矛盾

  • 先說結果:並不是絕對的矛盾,而是實際應用中經常會發生這樣的情況。

個人理解:

  • Recall提高,我們可以認爲我們降低了閾值,從而可以找出更多的潛在正例。例如,假設原本有100個正例,閾值爲0.5,此時有70個正例被預測出來了,剩下的30個正例預測成了負例,這可能是閾值設置的過大,那麼我們就可以減小閾值,例如減小到0.3,可能把90個正例都找出來了。
  • 相反,我們減小閾值的同時分析查準率,直接考慮極端情況,置閾值爲0.1,這時候,我們把大部分的樣本都預測成了正例,負例極大部分都預測錯誤了,這時候查準率會大大下降。
  • 我們一般認爲,0.5是個分界線,大於0.5偏向正例(意味着少數處於小於0.5);小於0.5偏向負例(意味着少數處理大於0.5).當我們要追求那些少數的時候,必然會對另一端產生影響,這就是矛盾的分析。
  • 所以說,這兩個評估指標是相對矛盾的。

3. sklearn中的混淆矩陣及一些API

在這裏插入圖片描述

4. ROC曲線

4.1 假正率

  • 假正率表示在所有的負例(多數類)中,有多少被我們預測錯了。
    在這裏插入圖片描述

4.2 假正例的應用:ROC曲線

  • 假正率有一個非常重要的應用:我們在追求較高的Recall的時候,Precision會下降,就是說隨着更多的少數類被捕捉出來,會有更多的多數類被判斷錯誤但我們很好奇,隨着Recall的逐漸增加,模型將多數類判斷錯誤的能力如何變化呢?我們希望理解,我每判斷正確一個少數類,就有多少個多數類會被判斷錯誤。假正率正好可以幫助我們衡量這個能力的變化。相對的,Precision無法判斷這些判斷錯誤的多數類在全部多數類中究竟佔多大的比例,所以無法在提升Recall的過程中也顧及到模型整體的Accuracy。因此,我們可以使用Recall和FPR之間的平衡,來替代Recall和Precision之間的平衡,讓我們衡量模型在儘量捕捉少數類的時候,誤傷多數類的情況如何變化,這就是我們的ROC曲線衡量的平衡。
  • ROC(The Receiver Operating Characteristic Curve),源自二戰時期用於敵機檢測的雷達信號技術分析。

在這裏插入圖片描述

  • 黃色線包含的面積就是AUC(Aera under ROC curve)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章