我們評價演算法的好壞,對於回歸問題來說,我們提到過 mse
msems
e、rmse
rmse
rmse
和 ma
emae
mae,還有乙個最好的評價回歸演算法的指標 rrrs
quar
esquare
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)了,用 tntn
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)。
靈敏度 精密度 準確度 精確度的區別
在物理量的測量中靈敏度 精密度 準確度和精確度是經常用到,然而又是很容易混淆的幾個概念。這幾個概念中,靈敏度是僅對實驗儀器而言的,精確度僅對測量而言,而精密度和準確度既是對儀器 又是對測量而言的。根據這些概念的意義和作用,現從以下兩個方面作分析和說明。一 衡量測量儀器的品質 1 靈敏度 指儀器測量最...
聊一聊rank 1和rank 5準確度
在我們看來,計算機就是一台嚴絲合縫 精密運轉的機器,嚴格按照程式設計師下達的指令工作。雖然產品上線之後經常碰到迷之問題,但我們通常會檢討程式設計得不夠完美,而不會認為這是理所當然。因為我們相信只要程式設計嚴謹,將各種意外情況考慮在內,就會消除這種不確定問題。然而到了機器學習,特別是深度學習,很多結果...
聊一聊rank 1和rank 5準確度
在我們看來,計算機就是一台嚴絲合縫 精密運轉的機器,嚴格按照程式設計師下達的指令工作。雖然產品上線之後經常碰到迷之問題,但我們通常會檢討程式設計得不夠完美,而不會認為這是理所當然。因為我們相信只要程式設計嚴謹,將各種意外情況考慮在內,就會消除這種不確定問題。然而到了機器學習,特別是深度學習,很多結果...