混淆矩陣是什麼意思?


混淆矩陣是數據科學、數據分析和機器學習中總結分類模型預測結果的情形分析表,以矩陣形式將數據集中的記錄按照真實的類別與分類模型作出的分類判斷兩個標準進行匯總。

以二元分類問題為例,數據集存在肯定類別和否定類別兩類記錄,而分類模型對記錄分類可能作出陽性判斷(判斷記錄屬於肯定類別)或陰性判斷(判斷記錄屬於否定類別)兩種判斷。

混淆矩陣是一個2 × 2的情形分析表,顯示以下四組記錄的數目:作出正確判斷的肯定記錄(真陽性)、作出錯誤判斷的肯定記錄(假陰性)、作出正確判斷的否定記錄(真陰性)以及作出錯誤判斷的否定記錄(假陽性)。表1給出了混淆矩陣的結構。

以篩檢化驗為例,真陽性和假陽性分別是病人和健康人的結果陽性,而真陰性和假陰性分別是健康人和病人的結果陰形。顯然,分類模型對在混淆矩陣對角線上的真陽性和真陰性記錄組作出了正確的分類,而對反對角線上的假陽性和假陰性記錄組發生了誤判。

根據以上的混淆矩陣可以推導出以下信息。

1.
數據集中的記錄總數=TP+FP+FN+TN

2.
數據集中肯定記錄數=TP+FN

3.
數據集中否定記錄數=FP+TN

4.
分類模型作出陽性判斷的記錄數=TP+FP

5.
分類模型作出陰性判斷的記錄數=FN+TN

6.
分類模型作出正確分類的記錄數=TP+TN

7.
分類模型作出錯誤分類的記錄數=FP+FN

混淆矩陣是對分類模型進行性能評價的重要工具。由混淆矩陣可以計算真陽性率、假陽性率、真陰性率、假陰性率、準確率、精確率和F指標等各種評價指標。特別是混淆矩陣區分了假陽性和假陰性兩種不同性質的誤判,可以用來估計分類模型誤判造成的期望損失。當分類模型返回各記錄屬於肯定類別的概率或評分時,指定閾值,對所有概率或評分在閾值以上的記錄作陽性判斷,可以得到一個混淆矩陣。通過連續改變閾值,可以得到不同的混淆矩陣,從而繪製ROC曲線、期望利潤曲線和提升係數曲線,更全面地評價和比較分類模型的性能。

表1中給出的二元分類問題混淆矩陣結構可以很容易地推廣到多元分類問題。對於存在n 個類別的分類問題,混淆矩陣是個n ×n的情形分析表,每一列對應一個真實的類別,而每一行對應分類模型判斷的一個類別 (混淆矩陣的行和列互換沒有實質影響)。


對一百張圖片進行學習分類,其中包含 火星(50張),地球(30張),冰激凌(20張) 三個種類;

在演算法學習過程中需要對每次的疊代分類結果進行精度評估,用到混淆矩陣這一工具。

如下圖,每次疊代後列出當前各類別分類狀態的混淆矩陣。

第一次疊代後混淆矩陣為:

第二次疊代後混淆矩陣為:

……

……經過若干疊代,最終分類結果全部正確,混淆矩陣如下:


為啥要記住這麼多名詞呢,直接上圖吧。

混淆矩陣的作用:

1)用於觀察模型在各個類別上的表現,可以計算模型對應各個類別的準確率,召回率;

2)通過混淆矩陣可以觀察到類別直接哪些不容易區分,比如A類別中有多少被分到了B類別,這樣可以有針對性的設計特徵等,使得類別更有區分性;

先用sklearn計算混淆矩陣的api(sklearn.metrics.confusion_matrix)得到實驗結果,放到excel裡面

上面是一個4分類的問題,類別分別為正常,色情,廣告,違禁。

以正常類別為例進行解釋:

總的樣本數目:列相加,( 92516 + 467 + 5650 + 789 )= 99422, 其中 92516個樣本被預測對了,因此準確率為:92516/99422= 0.930538513

召回率:模型一共召回了 (92516 + 53+ 1676 + 179 )=94424 個樣本,模型認為一同有94424個樣本是屬性正常類別的,但是正確的只有92516個,因此召回率為:92516/94424= 0.979793273


簡單說來,混淆矩陣就是一個N x N的表格,用來展示一個N元分類器的預測結果。

具體解釋可以參考http://SofaSofa.io上如下問題。

什麼是混淆矩陣(confusion matrix)-SofaSofa.io


簡單來說就是看看有多少錯判的


推薦閱讀:

機器學習和數據挖掘在網路安全領域會有哪些應用?
關於數據降維的諸多演算法,測試數據必須要和訓練數據一起運算么?
學習數據挖掘,機器學習的正確姿勢?
數據治理的主戰場,商業智能還是數據挖掘?
免費申請 | 2000冊《數據實踐之美》等你拿

TAG:人工智慧 | 數據挖掘 | 模式識別 |