轉自:https://blog.csdn.net/Orange_Spotty_Cat/article/details/80520839 略有改動,僅供個人學習使用
簡介
混淆矩陣是ROC曲線繪制的基礎,同時它也是衡量分類型模型准確度中最基本,最直觀,計算最簡單的方法。
一句話解釋版本:混淆矩陣就是分別統計分類模型歸錯類,歸對類的觀測值個數,然后把結果放在一個表里展示出來。這個表就是混淆矩陣。
數據分析與挖掘體系位置
混淆矩陣是評判模型結果的指標,屬於模型評估的一部分。此外,混淆矩陣多用於判斷分類器(Classifier)的優劣,適用於分類型的數據模型,如分類樹(Classification Tree)、邏輯回歸(Logistic Regression)、線性判別分析(Linear Discriminant Analysis)等方法。
在分類型模型評判的指標中,常見的方法有如下三種:
混淆矩陣(也稱誤差矩陣,Confusion Matrix)
ROC曲線
AUC面積 本文主要介紹第一種方法,即混淆矩陣,也稱誤差矩陣。
此方法在整個數據分析與挖掘體系中的位置如下圖所示。
混淆矩陣的定義
混淆矩陣(Confusion Matrix),它的本質遠沒有它的名字聽上去那么拉風。矩陣,可以理解為就是一張表格,混淆矩陣其實就是一張表格而已。
以分類模型中最簡單的二分類為例,對於這種問題,我們的模型最終需要判斷樣本的結果是0還是1,或者說是positive還是negative。
我們通過樣本的采集,能夠直接知道真實情況下,哪些數據結果是positive,哪些結果是negative。同時,我們通過用樣本數據跑出分類型模型的結果,也可以知道模型認為這些數據哪些是positive,哪些是negative。
因此,我們就能得到這樣四個基礎指標,我稱他們是一級指標(最底層的):
真實值是positive,模型認為是positive的數量(True Positive=TP)
真實值是positive,模型認為是negative的數量(False Negative=FN):這就是統計學上的第一類錯誤(Type I Error)
真實值是negative,模型認為是positive的數量(False Positive=FP):這就是統計學上的第二類錯誤(Type II Error)
真實值是negative,模型認為是negative的數量(True Negative=TN)
將這四個指標一起呈現在表格中,就能得到如下這樣一個矩陣,我們稱它為混淆矩陣(Confusion Matrix):
混淆矩陣的指標
預測性分類模型,肯定是希望越准越好。那么,對應到混淆矩陣中,那肯定是希望TP與TN的數量大,而FP與FN的數量小。所以當我們得到了模型的混淆矩陣后,就需要去看有多少觀測值在第二、四象限對應的位置,這里的數值越多越好;反之,在第一、三四象限對應位置出現的觀測值肯定是越少越好。
二級指標
但是,混淆矩陣里面統計的是個數,有時候面對大量的數據,光憑算個數,很難衡量模型的優劣。因此混淆矩陣在基本的統計結果上又延伸了如下4個指標,我稱他們是二級指標(通過最底層指標加減乘除得到的):
准確率(Accuracy)—— 針對整個模型
精確率(Precision)
靈敏度(Sensitivity):就是召回率(Recall)
特異度(Specificity)
我用表格的方式將這四種指標的定義、計算、理解進行了匯總:
通過上面的四個二級指標,可以將混淆矩陣中數量的結果轉化為0-1之間的比率。便於進行標准化的衡量。
在這四個指標的基礎上在進行拓展,會產令另外一個三級指標
三級指標
這個指標叫做F1 Score。他的計算公式是:
其中,P代表Precision,R代表Recall。
F1-Score指標綜合了Precision與Recall的產出的結果。F1-Score的取值范圍從0到1的,1代表模型的輸出最好,0代表模型的輸出結果最差。
混淆矩陣的實例
當分類問題是二分問題是,混淆矩陣可以用上面的方法計算。當分類的結果多於兩種的時候,混淆矩陣同時適用。
下面的混淆矩陣為例,我們的模型目的是為了預測樣本是什么動物,這是我們的結果:
通過混淆矩陣,我們可以得到如下結論:
Accuracy
在總共66個動物中,我們一共預測對了10 + 15 + 20=45個樣本,所以准確率(Accuracy)=45/66 = 68.2%。
以貓為例,我們可以將上面的圖合並為二分問題:
Precision
所以,以貓為例,模型的結果告訴我們,66只動物里有13只是貓,但是其實這13只貓只有10只預測對了。模型認為是貓的13只動物里,有1條狗,兩只豬。所以,Precision(貓)= 10/13 = 76.9%
Recall
以貓為例,在總共18只真貓中,我們的模型認為里面只有10只是貓,剩下的3只是狗,5只都是豬。這5只八成是橘貓,能理解。所以,Recall(貓)= 10/18 = 55.6%
Specificity
以貓為例,在總共48只不是貓的動物中,模型認為有45只不是貓。所以,Specificity(貓)= 45/48 = 93.8%。
雖然在45只動物里,模型依然認為錯判了6只狗與4只貓,但是從貓的角度而言,模型的判斷是沒有錯的。
(這里是參見了Wikipedia,Confusion Matrix的解釋,https://en.wikipedia.org/wiki/Confusion_matrix)
F1-Score
通過公式,可以計算出,對貓而言,F1-Score=(2 * 0.769 * 0.556)/( 0.769 + 0.556) = 64.54%
同樣,我們也可以分別計算豬與狗各自的二級指標與三級指標值。