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)