1. 程式人生 > >機器學習常用效能度量中的Accuracy、Precision、Recall、ROC、F score等都是些什麼東西?

機器學習常用效能度量中的Accuracy、Precision、Recall、ROC、F score等都是些什麼東西?

一篇文章就搞懂啦,這個必須收藏!

我們以圖片分類來舉例,當然換成文字、語音等也是一樣的。

  • Positive
    正樣本。比如你要識別一組圖片是不是貓,那麼你預測某張圖片是貓,這張圖片就被預測成了正樣本。

  • Negative
    負樣本。比如你要識別一組圖片是不是貓,那麼你預測某張圖片不是貓,這張圖片就被預測成了負樣本。

  • TP
    一組預測為正樣本的圖片中,真的是正樣本的圖片數。

  • TN:
    一組預測為負樣本的圖片中,真的是負樣本的圖片數。

  • FP:
    一組預測為正樣本的圖片中,其實是負樣本的圖片數。又稱“誤檢”

  • FN:
    一組預測為負樣本的圖片中,其實是正樣本的圖片數。又稱“漏檢”。

  • 精度(accuracy)
    分類正確的樣本數佔總樣本數的比例。
    acc = (TP+TN)/ 總樣本數

  • 查準率/準確率 precision
    一組預測為正樣本的圖片中,真的是正樣本的圖片所佔的比例。

為什麼有了Accuracy還要提出Precision的概念呢?因為前者在測試樣本集的正負樣本數不均衡的時候,比如正樣本數為1,負樣本數為99時,模型只要每次都將給定的樣本預測成負樣本,那麼Accuracy = (0+99)/100 = 0.99,精度依然可以很高,但這毫無意義。但是同樣的樣本集,同樣的方法運用到查準率公式上,就不可能得到一個很高的值了。

  • 查全率/召回率 recall
    所有真的是正樣本的圖片中,被成功預測出來的圖片所佔的比例。

  • 查準率和查全率的關係
    一般來說,想查的準,那麼往往查不全(想想寧缺毋濫);想查的全,又往往會不準(想想寧抓錯不放過)。所以P和R是兩個矛盾的量。

  • P-R曲線 (查準率-查全率曲線)
    該曲線是通過取不同的閾值下的P和R,繪製出來。這裡的閾值就是指模型預測樣本為正樣本的概率。比如閾值取0.6,則所有被預測出的概率大於該閾值的樣本,都認為是被預測成了正樣本,這些被預測成正樣本的樣本中,實際是由TP(真的是正樣本)和FP(並不是正樣本)組成的。所以取一個閾值,就能計算出一組P-R,那麼取多個閾值後,P-R曲線就繪製出來了。

從上圖中可以看到,P-R曲線是採用平衡點(P=R的點)來判斷哪個學習器更好(圖中有A、B、C三個學習器),A好於B好於C。

  • F1分數和Fβ分數
    然而,上面的度量方法只能通過看圖來理解,但是我們希望能更直接的通過一個分數來判定模型的好壞。所以更常用來度量的方法是取相同閾值下各模型的F1分數或Fβ分數(以下截圖來自周志華老師的西瓜書[1]):

F1分數的公式是怎麼來的呢?看下圖:2.10的公式,其實是由下面的調和平均公式推匯出來的。

所謂調和平均數就是:所有數字的倒數求算術平均後,再取倒數。該值平均考慮了P和R的表現。
為什麼β>1時查全率有更大影響,而β<1時查準率有更大影響呢?看下圖:2.11的公式,其實是由下面的加權調和平均公式推匯出來的。

β的平方相當於1/R的權重,當β大於1,相當於提高1/R的重要度,當β小於1,相當於降低了1/R的重要度,而R正是查全率。
所以,當我們更傾向於查準率R的表現(即想查的更全,寧抓錯不放過)時,可以將β設定為一個大於1的數字,具體設定多少,就要看傾向程度了,然後進行Fβ分數的比較。

  • ROC曲線
    ROC的全稱是Receiver operating characteristic,翻譯為受試者工作特徵。先不用管這個名字有多難理解。我們先弄清楚ROC曲線是什麼。ROC曲線如下圖[2]:

縱座標是真正率(其實就是召回率/查全率)=TP/(TP+FN),橫座標是假正率(誤檢率FPR)=FP/(FP+TN)。
該曲線是模型在不同閾值(與PR曲線中提到的閾值意思一樣)下的查全率和誤檢率的表現。當閾值設為0時,相當於所有樣本預測為正,查全率達到1,誤檢率當然也達到1;當閾值設為1時,相當於所有樣本預測為負,查全率達到0(太嚴格了),誤檢率當然也達到0(因為嚴格嘛)。
因為我們希望召回率高,誤檢率低,所以曲線上越接近左上角(0,1)的點表現越好。所以ROC曲線是幹嘛的?就是通過查全率和誤檢率的綜合表現來評價模型的好壞用的。
你可以嘗試大量增加測試樣本的正樣本或負樣本的數量,讓資料集變的不均衡,然後會發現ROC曲線可以幾乎穩定不變,而PR曲線會發生巨大的變化。如下圖:[5]。

可以根據PR曲線中P(precision)的公式,R(recall)的公式,根據ROC曲線中R(recall)的公式,誤檢率(FPR)的公式來理解,這裡不細說了。

  • AUC
    area under curve。定義為ROC曲線下的面積。然因為這個面積的計算比較麻煩。所以大牛們總結出了下面的等價的計算方法。
    假設一組資料集中,實際有M個正樣本,N個負樣本。那麼正負樣本對就有M*N種。
    AUC的值等同於在這M*N種組合中,正樣本預測概率大於負樣本預測概率的組合數所佔的比例。

其中I函式定義如下:
P正>P負,輸出1;
P正=P負,輸出0.5;
P正<P負,輸出0。
上面的計算方法已經比計算面積要愉快多了,但是還有相對更好的計算思路:
按照預測概率從小到大排序,得到排好序的M*N個組合,其中正樣本的序號就表示比當前正樣本概率小的樣本個數,再從這些樣本中減去正樣本的個數,就得到了當前正樣本概率大於負樣本概率的組合數。
為了計算方便,我們先把排好序的M*N個組合中所有正樣本的序號累加,然後減去正樣本的個數的累加,就得到了所有正樣本概率大於負樣本概率的組合數,然後除以M*N,就得到了在這M*N種組合中,正樣本預測概率大於負樣本預測概率的組合數所佔的比例,這個比例等同於AUC。下面我們來看看具體的計算公式[4] :

看上去挺複雜的,稍微解釋一下你就明白了。
分子左邊的部分就是排好序的M*N個組合中所有正樣本的序號累加,
分子右邊的部分其實就是正樣本的個數的累加的公式,這個稍微解釋一下:比如我們有5個正樣本,那麼正樣本的個數累加就是1+2+3+4+5=15,帶入公式就是5*(1+5)/2=15,而這個公式就是“高斯等差數列求和公式”: (首項+末項)x項數÷2。
分母部分比較好理解了,就是所有的正負樣本的組合數。
如果在排序的時候遇到了概率值相同的情況,其實誰前誰後是沒有關係的,只是在累加正樣本的序號的時候,如果有正樣本的概率值和其他樣本(包括正和負)的概率值一樣,那麼序號是通過這些相同概率值的樣本的序號的算術平均數來計算的。舉例如下[3]:

在累加正樣本的序號的時候,正樣本的rank(序號)值:
對於正樣本A,其rank值為7
對於正樣本B,其rank值為6
對於正樣本E,其rank值為(5+4+3+2)/4
對於正樣本F,其rank值為(5+4+3+2)/4
最後正樣本的序號累加計算就是:

求出了各個模型的ROC曲線下的面積,也就是AUC,就可以比較模型之間的好壞啦。

注意

以上度量指標一般都是用於二元分類,如果是在多分類的場景下,可以拆成多個二分類問題來度量。而如果除了分類還有其他預測的任務,就需要針對性的度量指標來評估模型的好壞了。比如像目標檢測,除了目標分類,還要預測目標的邊界框位置,所以用的是mAP指標,具體可以參考下一篇文章《目標檢測中為什麼常提到IoU和mAP,它們究竟是什麼?》

參考文獻

[1]《西瓜書》周志華 著
[2]《機器學習實戰》Peter Harrington 著
[3] https://blog.csdn.net/qq_22238533/article/details/78666436
[4] https://blog.csdn.net/pzy20062141/article/details/48711355
[5] https://www.cnblogs.com/dlml/p/4403482.html

ok,本篇就這麼多內容啦~,感謝閱讀O(∩_∩)O,88~

相關推薦

機器學習常用效能度量AccuracyPrecisionRecallROCF score什麼東西

一篇文章就搞懂啦,這個必須收藏! 我們以圖片分類來舉例,當然換成文字、語音等也是一樣的。 Positive 正樣本。比如你要識別一組圖片是不是貓,那麼你預測某張圖片是貓,這張圖片就被預測成了正樣本。 Negative 負樣本。比如你要識別一組圖片是不是貓,那麼你預測某張圖片不是貓,這張圖片就被預測成了負

機器學習效能度量指標之查準率和查全率

    在很多實際應用中,我們知道僅僅關心正確分類的結果是不夠的,並且,在資料偏斜比較嚴重的情況下,模型準確率可能具有相當程度的誤導性,我們也需要知道資料被錯誤分類的情況,以確認為此需要承擔的分類錯誤的代價。(False Positive假陽性和False Negative假

機器學習效能度量指標

機器學習的模型效能度量指標 在機器學習中,衡量,評估和選擇一個模型好壞是通過一些常見指標實現的,稱之為效能指標(Metrics)。 對於一個二分類問題,我們首先給出如下基本指標基於這些指標可以推匯出其他指標: :True Positive(真正, TP),即模型預測為正的正樣本個數

機器學習之numpy庫常用的函數介紹(一)

做的 string idt 維度 數據 round float 數值 array 1. mat() mat()與array的區別: mat是矩陣,數據必須是2維的,是array的子集,包含array的所有特性,所做的運算都是針對矩陣來進行的。 array是數組,數據可以是多

機器學習和推薦系統的評測指標—準確率(Precision)召回率(Recall)F值(F-Measure)簡介

模型 可擴展性 決策樹 balance rman bsp 理解 多個 缺失值 數據挖掘、機器學習和推薦系統中的評測指標—準確率(Precision)、召回率(Recall)、F值(F-Measure)簡介。 引言: 在機器學習、數據挖掘、推薦系統完成建模之後,需要對模型的

【深度學習-機器學習】分類度量指標 : 正確率召回率靈敏度特異度,ROC曲線AUC

在分類任務中,人們總是喜歡基於錯誤率來衡量分類器任務的成功程度。錯誤率指的是在所有測試樣例中錯分的樣例比例。實際上,這樣的度量錯誤掩蓋了樣例如何被分錯的事實。在機器學習中,有一個普遍適用的稱為混淆矩陣(confusion matrix)的工具,它可以幫助人們更好地瞭解

機器學習 - 決策樹()- ID3C4.5 以及剪枝

機器學習 - 決策樹(中)- ID3、C4.5 以及剪枝 決策樹簡述 決策樹過程 ID3 C4.5 過擬合 剪枝定義 剪枝過程

[轉] [機器學習] 常用數據標準化(正則化)的方法

機器學習 數據 評價 分享 函數 http mean 常用方法 訓練 數據正則化 目的:為了加快訓練網絡的收斂性,可以不進行歸一化處理 源地址:http://blog.sina.com.cn/s/blog_8808cae20102vg53.html 而在多指標評價體系中,

機器學習常用算法----

span gist gbdt ping 本地文件 pan bsp 學習 gsp LR (一)認識Logistic回歸(LR)分類器 實現原理 看以下鏈接 具體的實驗代碼 本地文件夾。 http://blog.csdn.net/suipingsp/article/deta

【深度學習】一文讀懂機器學習常用損失函數(Loss Function)

back and 們的 wiki 導出 歐氏距離 classes 自變量 關於 最近太忙已經好久沒有寫博客了,今天整理分享一篇關於損失函數的文章吧,以前對損失函數的理解不夠深入,沒有真正理解每個損失函數的特點以及應用範圍,如果文中有任何錯誤,請各位朋友指教,謝謝~

機器學習】在分類如何處理訓練集中不平衡問題

原文地址:一隻鳥的天空,http://blog.csdn.net/heyongluoyao8/article/details/49408131 在分類中如何處理訓練集中不平衡問題   在很多機器學習任務中,訓練集中可能會存在某個或某些類別下的樣本數遠大於另一些類別下的樣本數目。即類別不平衡,為了

機器學習常用數學公式

常用函式 softmax softmax(x)i=exi∑jexj softmax(x)_i = \frac {e^{x_i}}{\sum _j e^{x_j}} sigmoid σ(x)=11+e

機器學習在工業應用的新思考

人工智慧在學術界默默發展了很多很多年,從最早的神經網路,到10年前風靡的SVM、bagging and boosting,如今的深度學習。日新月異,各領風騷數幾年。 工業界的發展從最早應用於純粹的網際網路企業,近幾年開始應用到更多更廣泛的場景,而且發展速度越來越快,陳雨強一直在機器學習的最前沿應

機器學習】一文讀懂機器學習常用損失函式

損失函式(loss function)是用來估量模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函式,通常使用L(Y, f(x))來表示,損失函式越小,模型的魯棒性就越好。損失函式是經驗風險函式的核心部分,也是結構風險函式重要組成部分。模型的結構風險函式包括了經驗風險項和正則項,通常可以

機器學習入門-載入sklearn資料並用matplotlib進行視覺化

from sklearn import datasets import matplotlib.pyplot as plt def get_data(): """ 從sklearn中獲取鳶尾花的資料 :return: 鳶尾花資料的字典,字典中包括的key有:【'data'

機器學習】最容易實現的基於OpenCV的人臉檢測程式碼檢測器及檢測效果

基於opencv自帶的人臉檢測模型,實現簡單的人臉檢測功能,可作為機器學習初學者練手使用。簡單易學,具體的方法及程式碼如下。 1、執行結果 輸入原圖 輸出結果 2、工程需要載入的opencv庫如下: 3、用到的人臉檢測器 4、具體實現程式碼 #

機器學習實戰》——python 關於檔案讀取的正確開啟方式

    最近在學習《機器學習實戰》這本書,在做到裡面第08章的時候發生了一些小錯誤,具體內容如下:     資料總共有4177行,9列,最後一列為鮑魚的年齡,為標籤值,前8列為資料特徵,資料集中的資料長這個樣子:     在讀取資料

機器學習第一篇(

  在上篇裡,我們學會了如何為指定人員尋找品味相近者,以及如何向其推薦商品的方法,但是我們想了解哪些商品是彼此相近的,那又該如何做呢? 我們可以通過檢視哪些人喜歡某一特定物品,以及這些人喜歡哪些其他物品來決定相似度。事實上,只需要將人員與物品對換即可。 def transfor

機器學習——常用排序演算法總結

我們通常所說的排序演算法往往指的是內部排序演算法,即資料記錄在記憶體中進行排序。排序演算法大體可分為兩種: 一種是比較排序,時間複雜度O(nlogn) ~ O(n^2),主要有:氣泡排序,選擇排序,插入排序,歸併排序,堆排序,快速排序等。 另一種是非比較排序,時間複雜度可以達到O(

機器學習實踐(十五)—sklearn之分類演算法-邏輯迴歸精確率召回率ROCAUC

邏輯迴歸雖然名字中帶有迴歸兩字,但它實際是一個分類演算法。 一、邏輯迴歸的應用場景 廣告點選率 是否為垃圾郵件 是否患病 金融詐騙 虛假賬號 看到上面的例子,我們可以發現其中的特點,那就是都屬於兩個類別之間的判斷。 邏輯迴歸就是