您的位置:首頁>正文

機器學習小白看過來,帶你全面瞭解分類器評價指標

雷鋒網 AI 研習社按:為你的分類器選擇正確的評價指標十分關鍵。 如果選不好, 你可能會陷入這樣的困境:你認為自己的模型性能良好, 但實際上並非如此。

近日, towardsdatascience 上的一篇文章就深入介紹了分類器的評價指標, 以及應該在什麼場景下使用, 雷鋒網 AI 研習社將內容編譯整理如下:

在本文中, 你將瞭解到為什麼評價分類器比較困難;為什麼在大多數情況下, 一個看起來分類準確率很高的分類器性能卻沒有那麼理想;什麼是正確的分類器評價指標;你應該在何時使用這些評價指標;如何創造一個你期望的高準確率的分類器。

目錄

評價指標為什麼如此重要?

混淆矩陣

準確度和召回率

F-Score

精確率和召回率的折衷

精確率和召回率的曲線

ROC、AUC 曲線和 ROC、AUC 值

總結

評價指標為什麼如此重要?

通常來說, 評價一個分類器要比評價一個回歸演算法困難得多。 著名的 MNIST 資料集是一個很好的例子,

它包含多張從 0 到 9 的手寫數位圖片。 如果我們想要構建一個分類器來判斷數值是否為 6, 構建一個演算法將所有的輸入分類為非 6, 然後你將在 MNIST 資料集中獲得 90% 的準確率, 因為資料集中只有大約 10% 的圖像是 6。 這是機器學習中一個主要的問題, 也是你需要多用幾個評價指標測試你的分類器的原因。

混淆矩陣

首先, 你可以瞭解一下混淆矩陣, 它也被稱為誤差矩陣。 它是一個描述監督學習模型在測試資料上的性能的表格, 其中真實的值是未知的。 矩陣的每一行表示預測出的類中的實例, 而每一列則表示實際類別中的實例(反之亦然)。 它被稱之為「混淆矩陣」的原因是, 利用它你很容易看出系統在哪些地方將兩個類別相混淆了。

你可以在下圖中看到在 MNIST 資料集上使用 sklearn 中的「confusion_matrix」函數得到的輸出:

每一行表示一個實際的類別, 每一列表示一個預測的類別。

第一行是實際上「非 6」(負類)的圖像個數。 其中, 53459 張圖片被正確分類為「非 6」(被稱為「真正類」)。 其餘的 623 張圖片則被錯誤地分類為「6」(假正類)。

第二行表示真正為「6」的圖像。 其中, 473 張圖片被錯誤地分類為「非 6」(假負類), 5445 張圖片被正確分類為「6」(真正類)。

請注意, 完美的分類器會 100% 地正確, 這意味著它只有真正類和真負類。

精確率和召回率

一個混淆矩陣可以給你很多關於你的(分類)模型做的有多好的資訊, 但是有一種方法可以讓你得到更多的資訊, 比如計算分類的精確率(precision)。 說白了, 它就是預測為正的樣本的準確率(accuracy),

並且它經常是和召回率(recall, 即正確檢測到的正實例在所有正實例中的比例)一起看的。

sklearn 提供了計算精確率和召回率的內置函數:

現在, 我們有了一個更好的評價分類器的指標。 我們的模型將圖片預測為「6」的情況有 89% 是正確的。 召回率告訴我們它將 92% 的真正為「6」的實例預測為「6」。

當然, 還有更好的評價方法。

F-值

你可以把精確率和召回率融合到一個單獨的評價指標中, 它被稱為「F-值」(也被稱為「F1-值」)。 如果你想要比較兩個分類器, F-值會很有用。 它是利用精確率和召回率的調和平均數計算的, 並且它將給低的數值更大的權重。 這樣一來, 只有精確率和召回率都很高的時候, 分類器才會得到高 F-1 值。 通過 sklearn 很容易就能計算 F 值。

從下圖中, 你可以看到我們的模型得到了 0.9 的 F-1 值:

不過 F-值並不是萬能的「聖杯」, 精確率和召回率接近的分類器會有更好的 F-1 分數。 這是一個問題, 因為有時你希望精確率高, 而有時又希望召回率高。 事實上, 精確率越高會導致召回率越低, 反之亦然。 這被稱為精確率和召回率的折衷, 我們將在下一個章節討論。

精確率和召回率的折衷

為了更好地解釋, 我將舉一些例子, 來說明何時希望得到高精確率, 何時希望得到高召回率。

高精確率:

如果你訓練了一個用於檢測視頻是否適合孩子看的分類器, 你可能希望它有高的精確率。 這意味著, 這個你希望得到的分類器可能會拒絕掉很多適合孩子的視頻, 但是不會給你包含成人內容的視頻, 因此它會更加保險。(換句話說,精確率很高)

高召回率:

如果你想訓練一個分類器來檢測試圖闖入大樓的人,這就需要高召回率了。可能分類器只有 25% 的精確率(因此會導致一些錯誤的警報),只要這個分類器有 99% 的召回率並且幾乎每次有人試圖闖入時都會向你報警,但看來是一個不錯的分類器。

為了更好地理解這種折衷,我們來看看隨機梯度下降(SGD)的分類器如何在 MNIST 資料集上做出分類決策。對於每一個需要分類的圖像,它根據一個決策函數計算出分數,並將圖像分類為一個數值(當分數大於閾值)或另一個數值(當分數小於閾值)。

下圖顯示了分數從低(左側)到高(右側)排列的手寫數字。假設你有一個分類器,它被用於檢測出「5」,並且閾值位於圖片的中間(在中央的箭頭所指的地方)。接著,你會在這個閾值右邊看到 4 個真正類(真正為「5」的實例)和 1 個假正類(實際上是一個「6」)。這一閾值會有 80% 的精確率(五分之四),但是它僅僅只能從圖片中所有的 6 個真正的「5」中找出 4 個來,因此召回率為 67%(六分之四)。如果你現在將閾值移到右側的那個箭頭處,這將導致更高的精確率,但召回率更低,反之亦然(如果你將閾值移動到左側的箭頭處)。

精確率/召回率曲線

精確率和召回率之間的折衷可以用精確率-召回率曲線觀察到,它能夠讓你看到哪個閾值最佳。

另一種方法是將精確率和召回率以一條曲線畫出來:

在上圖中,可以清晰地看到,當精確率大約為 95% 時,精准率升高,召回率迅速下降。根據上面的兩張圖,你可以選擇一個為你當前的機器學習任務提供最佳精確率/召回率折衷的閾值。如果你想得到 85% 的精確率,可以查看第一張圖,閾值大約為 50000。

ROC、AUC 曲線和 ROC、AUC 值

ROC 曲線是另一種用於評價和比較二分類器的工具。它和精確率/召回率曲線有著很多的相似之處,當然它們也有所不同。它將真正類率(true positive rate,即recall)和假正類率(被錯誤分類的負實例的比例)對應著繪製在一張圖中,而非使用精確率和召回率。

當然,在這裡也有所折衷。分類器產生越多的假正類,真正類率就會越高。中間的紅線是一個完全隨機的分類器,分類器的曲線應該盡可能地遠離它。

通過測量 ROC 曲線下方的面積( AUC),ROC 曲線為比較兩個分類器的性能提供了一種方法。這個面積被稱作 ROC AUC值,100% 正確的分類器的 ROC AUC 值為 1。

一個完全隨機的分類器 ROC AUC 為 0.5。下圖中是 MNIST 模型的輸出:

總結

通過以上介紹,大家將學習到如果評價分類器,以及用哪些工具去評價。此外,還能學到如何對精確率和召回率進行折衷,以及如何通過 ROC AUC 曲線比較不同分類器的性能。

我們還瞭解到,精確率高的分類器並不像聽起來那麼令人滿意:因為高精確率意味著低召回率。

下次當你聽到有人說一個分類器有 99% 的精確率或準確率時,你就知道你應該問問他這篇帖子中討論的其它指標如何。

資源連結

https://en.wikipedia.org/wiki/Confusion_matrix

https://github.com/Donges-Niklas/Classification-Basics/blob/master/Classification_Basics.ipynb

https://www.amazon.de/Hands-Machine-Learning-Scikit-Learn-TensorFlow/dp/1491962291/ref=sr_1_1?ie=UTF8&qid=1522746048&sr=8-1&keywords=hands+on+machine+learning

via towardsdatascience

雷鋒網 AI 研習社編譯整理。

因此它會更加保險。(換句話說,精確率很高)

高召回率:

如果你想訓練一個分類器來檢測試圖闖入大樓的人,這就需要高召回率了。可能分類器只有 25% 的精確率(因此會導致一些錯誤的警報),只要這個分類器有 99% 的召回率並且幾乎每次有人試圖闖入時都會向你報警,但看來是一個不錯的分類器。

為了更好地理解這種折衷,我們來看看隨機梯度下降(SGD)的分類器如何在 MNIST 資料集上做出分類決策。對於每一個需要分類的圖像,它根據一個決策函數計算出分數,並將圖像分類為一個數值(當分數大於閾值)或另一個數值(當分數小於閾值)。

下圖顯示了分數從低(左側)到高(右側)排列的手寫數字。假設你有一個分類器,它被用於檢測出「5」,並且閾值位於圖片的中間(在中央的箭頭所指的地方)。接著,你會在這個閾值右邊看到 4 個真正類(真正為「5」的實例)和 1 個假正類(實際上是一個「6」)。這一閾值會有 80% 的精確率(五分之四),但是它僅僅只能從圖片中所有的 6 個真正的「5」中找出 4 個來,因此召回率為 67%(六分之四)。如果你現在將閾值移到右側的那個箭頭處,這將導致更高的精確率,但召回率更低,反之亦然(如果你將閾值移動到左側的箭頭處)。

精確率/召回率曲線

精確率和召回率之間的折衷可以用精確率-召回率曲線觀察到,它能夠讓你看到哪個閾值最佳。

另一種方法是將精確率和召回率以一條曲線畫出來:

在上圖中,可以清晰地看到,當精確率大約為 95% 時,精准率升高,召回率迅速下降。根據上面的兩張圖,你可以選擇一個為你當前的機器學習任務提供最佳精確率/召回率折衷的閾值。如果你想得到 85% 的精確率,可以查看第一張圖,閾值大約為 50000。

ROC、AUC 曲線和 ROC、AUC 值

ROC 曲線是另一種用於評價和比較二分類器的工具。它和精確率/召回率曲線有著很多的相似之處,當然它們也有所不同。它將真正類率(true positive rate,即recall)和假正類率(被錯誤分類的負實例的比例)對應著繪製在一張圖中,而非使用精確率和召回率。

當然,在這裡也有所折衷。分類器產生越多的假正類,真正類率就會越高。中間的紅線是一個完全隨機的分類器,分類器的曲線應該盡可能地遠離它。

通過測量 ROC 曲線下方的面積( AUC),ROC 曲線為比較兩個分類器的性能提供了一種方法。這個面積被稱作 ROC AUC值,100% 正確的分類器的 ROC AUC 值為 1。

一個完全隨機的分類器 ROC AUC 為 0.5。下圖中是 MNIST 模型的輸出:

總結

通過以上介紹,大家將學習到如果評價分類器,以及用哪些工具去評價。此外,還能學到如何對精確率和召回率進行折衷,以及如何通過 ROC AUC 曲線比較不同分類器的性能。

我們還瞭解到,精確率高的分類器並不像聽起來那麼令人滿意:因為高精確率意味著低召回率。

下次當你聽到有人說一個分類器有 99% 的精確率或準確率時,你就知道你應該問問他這篇帖子中討論的其它指標如何。

資源連結

https://en.wikipedia.org/wiki/Confusion_matrix

https://github.com/Donges-Niklas/Classification-Basics/blob/master/Classification_Basics.ipynb

https://www.amazon.de/Hands-Machine-Learning-Scikit-Learn-TensorFlow/dp/1491962291/ref=sr_1_1?ie=UTF8&qid=1522746048&sr=8-1&keywords=hands+on+machine+learning

via towardsdatascience

雷鋒網 AI 研習社編譯整理。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示