1. 程式人生 > >機器學習小白看過來,帶你全面瞭解分類器評價指標

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

640?wx_fmt=gif&wxfrom=5&wx_lazy=1

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

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

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

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

目錄

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

  • 混淆矩陣

  • 準確度和召回率

  • F-Score

  • 精確率和召回率的折衷

  • 精確率和召回率的曲線

  • ROC、AUC 曲線和 ROC、AUC 值

  • 總結

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

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

混淆矩陣

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

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

640?wx_fmt=jpeg

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

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

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

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

精確率和召回率

一個混淆矩陣可以給你很多關於你的(分類)模型做的有多好的資訊,但是有一種方法可以讓你得到更多的資訊,比如計算分類的精確率(precision)。說白了,它就是預測為正的樣本的準確率(accuracy),並且它經常是和召回率(recall,即正確檢測到的正例項在所有正例項中的比例)一起看的。

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

640?wx_fmt=jpeg

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

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

F-值

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

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

640?wx_fmt=jpeg

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

精確率和召回率的折衷

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

高精確率:

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

高召回率:

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

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

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

640?wx_fmt=jpeg

精確率/召回率曲線

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

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

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

ROC、AUC 曲線和 ROC、AUC 值

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

640?wx_fmt=jpeg

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

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

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

640?wx_fmt=jpeg

總結

通過以上介紹,大家將學習到如果評價分類器,以及用哪些工具去評價。此外,還能學到如何對精確率和召回率進行折衷,以及如何通過 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 研習社編譯整理。

640?wx_fmt=jpeg

640?wx_fmt=gif

640?wx_fmt=jpeg


點選下方“閱讀原文”瞭解【人工智慧實驗平臺】↓↓↓

相關推薦

機器學習過來全面瞭解分類評價指標

AI 研習社按:為你的分類器選擇正確的評價指標十分關鍵。如果選不好,你可能會陷入這樣的困境:你認

盤點機器學習過程中的彎路避坑!

授權自AI科技大本營(ID:rgznai100)本文長度為6900字,建議閱讀6分鐘本文為你解析

Android圖片載入框架最全解析(八)全面瞭解Glide 4的用法

本文同步發表於我的微信公眾號,掃一掃文章底部的二維碼或在微信搜尋 郭霖 即可關注,每天都有文章更新。 本篇將是我們這個Glide系列的最後一篇文章。 其實在寫這個系列第一篇文章的時候,Glide就推出4.0.0的RC版了。那個時候因為我一直研究的

認真點全面瞭解xutils3

@OnClick({ R.id.btn, R.id.img }) public void clickMethod(View v) { Toast.makeText(SecondActivity.this, "you clicked button!",

Java學習方法和經驗分享過來

談談 java學習方法和經驗。推薦一個學習資料群java《學習》+交流 523401738首先初識語法的階段,必須要學會怎麼操作物件,操作if和for,操作list set map,然後是執行緒、IO和jdbc什麼的,其餘的,若是一時不理解,可以後邊需要時再學。這階段完了,你

初識GitHub過來

前言:IT界軟體因為開源,才會慢慢開啟市場,越來越多人去使用,也有大牛在奉獻價值不菲的程式碼和思想,也正是因為這樣,越來越多的人想加入,圈子不斷擴大,漸漸地形成了一個龐大的知識論壇,一個知識體系。就像mysql,tomact都是開源的 最近聽說 java 8 update要開始收費了,

機器學習入門①

機器學習常用的理論分類: 傳統的監督學習 深度學習 強化學習 建議按照上面列出的順序作為學習路線  文字分類: PS:其中特徵工程尤為重要,特徵決定了機器學習的上限,而機器學習只是在逼近這個上限  字組

Linux學習——PAM認證

pam認證機制 是一種與認證相關的通用框架機制,但是自身不做認證 它同時面向驗證服務的開發者和被驗證服務者:淘寶、商家、買家 應用程式開發者通過 在服務程式中使用PAM API來實現對認證方法的呼叫;而PAM服 務模組的開發者則利用PAM SPI來編寫模組供 PAM介面

轉行學習python的過來經驗分享|如何高效學Python?

隨著網際網路人工智慧的火熱發展,現在連幼兒園的小朋友都在都在學習程式設計,如果你對未來很迷茫,對現狀很不滿意,對大學學的專業也不感興趣,你要不要也試試學習程式設計,門檻低,不需要考證,只要一技在手,飯碗不愁! 網際網路和科技產品的發展,使許多學科的學習門檻大大降低,

通過位元組碼原理去找kotlin中的static方法

kotlin在被欽定為Android的官方開發語言後,越來越多的Android開發者投向kotlin的懷抱。儘管kotlin相容Java,但在使用上還是有很大不同的,就像static關鍵字,我們可以用companion object來替代static,當我們用反射去呼叫時,會發現呼叫時並不像static

Android冷啟動屏解析一步步分析和解決問題

本文同步發表於我的微信公眾號,掃一掃文章底部的二維碼或在微信搜尋 郭霖 即可關注,每天都有文章更新。 寫在前面 記得在本月初,我發表了一篇文章叫《 Android Studio新功能解析,你真的瞭解Instant Run嗎?》,裡面詳細講解了

機器學習筆記(五):樸素貝葉斯分類

一、概述 1.1 簡介 樸素貝葉斯(Naive Bayesian)是基於貝葉斯定理和特徵條件獨立假設的分類方法,它通過特徵計算分類的概率,選取概率大的情況進行分類,因此它是基於概率論的一種機器學習分類方法。因為分類的目標是確定的,所以也是屬於監督學習。 Q1:什麼是基於概率論的方

機器學習實踐】用Python實現樸素貝葉斯分類

       閱讀學習了《機器學習》第7章的貝葉斯分類器後,為了加深理解和加強python的程式碼能力,因此嘗試使用Python實現樸素貝葉斯分類器,由於初學Python的緣故,程式碼的一些實現方法可能比較繁瑣,可閱讀性有待提高。程式碼如下: #import numpy a

機器學習實戰——python實現簡單的樸素貝葉斯分類

基礎公式 貝葉斯定理:P(A|B) = P(B|A)*P(A)/P(B) 假設B1,B2…Bn彼此獨立,則有:P(B1xB2x…xBn|A) = P(B1|A)xP(B2|A)x…xP(Bn|A) 資料(虛構) A1 A2 A3 A4 A5 B

機器學習實戰】網格搜尋--貝葉斯新聞文字分類調優

#對文字分類的樸素貝葉斯模型的超引數組合進行網格搜尋 #從sklearn.datasets中匯入20類新聞文字抓取器 from sklearn.datasets import fetch_20newsgroups import numpy as np #抓取新

Machine Learning第六講[應用機器學習的建議] --(三)建立一個垃圾郵件分類

內容來自Andrew老師課程Machine Learning的第六章內容的Building a Spam Classifier部分。 一、Prioritizing What to Work on(優

周志華 《機器學習》之 第七章(貝葉斯分類)概念總結

貝葉斯分類器是利用概率的知識完成資料的分類任務,在機器學習中使用貝葉斯決策論實施決策的基本方法也是在概率的框架下進行的,它是考慮如何基於這些概率和誤判損失來選擇最優的類別標記。 1、貝葉斯決策論 條件風險:假設有N種可能的類別標記,Y={c1,c2,c3

如何利用Aspose.Words將格式應用於表行和單元格?示例演示全面瞭解

Aspose.Words For .Net是一種高階Word文件處理API,用於執行各種文件管理和操作任務。API支援生成,修改,

明日之後安卓版即將公測 全面瞭解

明日之後什麼時候公測?明日之後怎麼樣?明日之後到底怎麼玩?明日之後到底肝不肝,氪不氪?明日之後能用電腦玩嗎?   明日之後是網易又一力作,前期造勢十足,吸引了萬千眼球,吊足了八方胃口,現終於公佈安卓版將於11月6日公測,雖然內測階段出了不少岔子,被丟了不少臭雞蛋爛白菜,但目前

全面瞭解網路輿情監測系統

網路輿情形成迅速,對社會影響巨大。隨著網際網路在全球範圍內的飛速發展,網路成為反映社會輿情的主要載體之一。網路環境下的輿情資訊的主要來源有:新聞評論、BBS、部落格、聚合新聞(RSS)。網路輿情表達快捷、資訊多元,方式互動,具備傳統媒體無法比擬的優勢。 由於網上的資訊量十分巨大,僅依靠人工的