1. 程式人生 > 實用技巧 >60-準確度的陷阱和混淆矩陣

60-準確度的陷阱和混淆矩陣

準確度的陷阱

  我們評價演算法的好壞,對於迴歸問題來說,我們提到過 M S E MSE MSE R M S E RMSE RMSE M A E MAE MAE,還有一個最好的評價迴歸演算法的指標 R R R S q u a r e Square Square。但是對於分類演算法的評價,到現在為止,我們都一直在使用分類準確度這一個指標。是不是有些小夥伴會認為就使用這一個分類指標就算好了呢。其實分類準確度在評價分類演算法的時候是有一個很重要的問題的,我們先來看看分類準確度有什麼問題,進而衍生出對分類演算法的評價問題。

  下面就先來看看分類準確度到底有什麼問題?這裡舉出這樣一個例子:如果我們要是實現一個癌症預測系統,我們向系統中輸入體檢資訊,該系統就可以判斷該體檢的人是否患有癌症。

  在這個過程中,我們需要先收集很多資料作為訓練資料集訓練出一個模型,進而完成我們的癌症預測系統。現在如果告訴你我做了這樣一個癌症預測系統,它的預測準確率達到了 99.9%,那麼你覺得這個系統是好是壞呢?可能很多小夥伴都會覺得正確率這麼高,應該是比較好的。其實不然,很有可能這個系統是不夠好的。為什麼這麼說呢?想象一下,假設這種癌症的發病率為 0.1%,意味著我根本不要任何機器學習的演算法,對於任何輸入的人的體檢資訊,我都預測是健康的,就可以達到 99.9% 的準確率。這樣一來,其實我們這個系統什麼事情都沒做,但是使用準確度這樣的指標來看的話,準確度達到了 99.9%。更極端一些的話,如果癌症產生的概率只有 0.01%,意味著預測所有人都是健康的,此時系統的準確率就可以達到 99.99% 的準確率。這就是使用分類準確度來衡量一個分類系統的問題所在。

  這樣的問題發生在我們的資料是極度偏斜(Skewed Data)的時候,比如上面舉的例子中癌症人數相比於健康人數來說是極度少的。面對這樣的資料,我們只使用分類準確度是遠遠不夠的,我們還需要引入其它的演算法指標。


混淆矩陣

  首先我們介紹一個非常基礎的工具:混淆矩陣(Confusion Matrix)。我們先來看看,對於一個分類演算法來說,作用在一組資料之上,如何得到混淆矩陣?進一步就會看到我們通過混淆矩陣就能得到各種比分類的準確度還要好的分類指標。

  先來看看二分類問題相應的混淆矩陣是怎樣建立的?對於二分類問題來說,混淆矩陣是一個 2x2 的矩陣,也就是說它只有 4 個數。在矩陣中,每一行代表的是對於我預測的問題來說,它相應的真實值(0 或 1)。每一列代表分類演算法的預測值(0 或 1)。

在這裡插入圖片描述

  那麼灰色表格中應該填寫什麼呢?比如(0, 0)這一格,我們預測樣本的真值為 0,我們預測的值也為 0(Negative),所以就預測正確(True)了,用 T N TN TN(True Negative) 表示。再看(0,1)這一格,表示這個樣本的真值為 0,我們預測的值為 1(Positive),所以就預測錯誤(False)了,所以用 FP(False Positive)表示。

在這裡插入圖片描述
  
  我們還是舉出一個簡單的例子,還是之前癌症的例子。假設有 10000 個人,有一個演算法對 10000 個人的資訊進行檢測,然後預測他們患癌症的結果是怎樣的?預測為 1 代表患病,為 0 代表不患病。那麼我們的混淆矩陣有可能是下面這樣子的。

在這裡插入圖片描述

  對於這 10000 個人,有 9978 預測為不患病,並且預測準確了(TN),有 12 個人預測患病但是預測錯誤了(FP),有 2 個人預測不患病預測錯誤了(FN),有 8 個人預測患病並且預測準確了(TP)。

  那麼混淆矩陣就介紹到這裡,下一篇部落格將會介紹通過混淆矩陣我們可以建立怎樣的指標?為什麼這些指標要比之前的分類準確度要更加的好?