1. 程式人生 > >快速理解分類模型評估指標

快速理解分類模型評估指標

一、從混淆矩陣說起

我們以二分類模型來舉例,假設我們要預測使用者在借款之後是否會逾期。

對於我們的預測來說,有逾期/不逾期兩種結果。

對於真實情況,同樣有逾期/不逾期兩種結果。

我們以逾期為正例,以不逾期為反例,將預測結果與真實結果進行列聯交叉,就生成了混淆矩陣:

預測正例 預測反例
實際正例 TP: True Positive FN: False Negative
實際反例 FP: False Positive TN: True Negative
  • TP: 真正例,預測為正例,實際也是正例
  • FP: 假正例,預測為正例,實際為反例
  • FN: 假反例,預測為反例,實際為正例
  • TN: 真反例,預測為反例,實際也是反例

需要指出的是,上述這些都是計數,即真正例的個數、假正例的個數等。那麼相對應的,用這些計數除以實際每個分類的總數,就得到了四個比率:

  • TPR: True Positive Rate,真正率,被預測為正的正樣本數/實際正樣本數。
  • FPR: False Positive Rate,假正率,被預測為正的負樣本數/實際正樣本數。
  • FNR: False Negative Rate,假負率,被預測為負的正樣本數/實際負樣本數。
  • TNR: True Negative Rate,真負率,被預測為負的負樣本數/實際負樣本數。

對應混淆矩陣的公式如下:

TPR=TPTP+FNTPR=\frac{TP}{TP+FN}

TPR=TPTP+FNTPR=\frac{TP}{TP+FN}

FNR=FNFP+TNFNR=\frac{FN}{FP+TN}

TNR=TNFP+TNTNR=\frac{TN}{FP+TN}

可以發現,這些簡寫均為單詞首字母的組合,這一點可以幫助我們免於死記硬背每個公式,只要從根本上理解了這些指標的含義,就可以自己組裝出來具體的公式。

簡單來說,我們在設計一個分類模型時,希望它能儘可能分類正確,即實際為正例的,我們希望能將它歸類到正例中;實際為反例的,我們希望能將它歸類到反例中。也就是提高上述TP和TN部分的比例。

混淆矩陣是評估一個分類模型效果的基礎,有許多評估指標都是基於分類指標,比如接下來我們提到的準確率、精確率、召回率等。

二、最簡單的準確率

準確率(accuracy)最為簡單,也最容易理解,它就是我們預測正確的比例,也就是上述TP和TN部分佔總體的比例:

ACC=TP+TNTP+FP+FN+TNACC=\frac{TP+TN}{TP+FP+FN+TN}

與準確率相對的是錯誤率(Error),我們可以簡單地使用Error=1ACCError=1-ACC來計算,也可以使用混淆矩陣類計算:

Error=FN+FPTP+FP+FN+TNError=\frac{FN+FP}{TP+FP+FN+TN}

準確率存在的一個問題是在不同分類的數量不均衡時的表現不太好。舉個例子來說明這種情況:

A分類有90個,B分類有10個

模型一:在A分類中預測正確81個,在B分類中預測正確0個。 模型二:在A分類中預測正確72個,在B分類中預測正確8個。

我們來計算一下,模型一的準確率為ACC1=81+181+9+1+9=81%ACC_1=\frac{81+1}{81+9+1+9}=81\%,而模型二的準確率的準確率為ACC2=72+872+18+8+2=80%ACC_2=\frac{72+8}{72+18+8+2}=80\%,可以看到,模型一的整體準確率為81%,高於模型二的80%,那麼模型一就真的比模型二好嗎?

通過仔細觀察我們可以看到,事實上模型一隻是簡單粗暴地將所有個例都分類到A分類中,就得到了更高的準確率,模型二在分類A和分類B上有著同樣不錯的預測效果,卻在準確率上輸給了模型一。假如說我們決策的目的是判斷使用者是否會產生逾期,而B分類就是會產生逾期的使用者,那麼模型一會給我們帶來難以接受的損失,相對來說,模型二雖然整體準確率低於模型一,但是明顯會幫助我們避開那些劣質使用者,從而保障資本安全。

面對這種準確率失真的情況,我們可以通過計算真正率和真負率的均值來得到平均準確率(Average Per-Class Accuracy):

Ave_Acc=TPR+TNR2=TPTP+FN+TNFP+TN2Ave\_Acc=\frac{TPR+TNR}{2}=\frac{\frac{TP}{TP+FN}+\frac{TN}{FP+TN}}{2}

我們再來看一看上述的例子,計算得到ACC1=45%,ACC2=80%ACC_1=45\%,ACC_2=80\%,模型二遠遠優於模型一,在這一案例中,顯然平均準確率更符合我們的設想。

三、最常用的精確率和召回率

精確率(Precision)和準確率一字之差,含義卻完全不同。通俗來說,精確率就是預測的正例中實際為正的比例。

假設有100個人,我們的任務是識別出他們中間的好人。那麼精確率就是在我們預測的好人中,真正的好人所佔的比例。假如我們判斷其中90個是好人,但事實上這90人中只有81人是好人,那麼我們的精確率就是P=81/90=90%P=81/90=90\%。精確率對應到混淆矩陣就是: P=TPTP+FPP=\frac{TP}{TP+FP}

召回率(Recall)則是實際為正的個例中被我們預測為正的比例。仍以上例來說明,假設一共有93個好人,但是我們只預測對了其中81個,那麼我們的召回率就是R=81/93=87%R=81/93=87\%。召回率對應到混淆矩陣的公式為:

P=TPTP+FNP=\frac{TP}{TP+FN}

可以看到,召回率是一個與精確率相互補的指標。它們都來自於資訊檢索領域,後來廣泛應用於推薦系統、機器學習模型等效果的評估。

以推薦系統為例來加深理解:我們給使用者推薦了100篇文章,使用者看了其中的50篇,那我們的精確率§就是50%;使用者一共看了200篇文章,其中50篇來自我們的推薦,另外50篇是他自己通過其他途徑閱讀到的,那麼我們的召回率®就是25%。

精確率和召回率哪個更重要呢?這個要視我們分類的目的來決定。比如我們要識別出信貸欺詐使用者或者識別出網上逃犯,那麼顯然召回率更重要,因為這種情況下我們寧肯錯殺三千,絕不放過一個,當然針對這類情況,肯定需要更多後續的手段來保障好人的利益;而當我們要預測股票的漲跌或者要給使用者推薦他喜愛的商品時,顯然精確率更重要。

顯然,幾乎不存在我們只需要關注其中一個指標的情況。精確率和召回率總是相輔相成,在不同的目的下我們為它們賦予不同的權重,從而讓它們更好地為模型評估、對比提供支援。

在這樣的考量下,F1-Score應運而生。

四、綜合性能強大的F1-Score

首先,F1-Score是精確率和召回率的調和平均值。我們知道常用的有算術平均值、幾何平均值、加權平均值,那麼,什麼是調和平均值呢?

調和平均值(Harmonic Mean)就是各個統計量的倒數的算數平均值的倒數。

調和平均值的一個特點是更重視較小值,舉個例子來說明:

假設A=10,B=40A=10,B=40,則2H=110+140\frac{2}{H}=\frac{1}{10}+\frac{1}{40},或H=1(110+140)×12=16H=\frac{1}{(\frac{1}{10}+\frac{1}{40})\times\frac{1}{2}}=16

調和平均值也有簡單調和平均值與加權調和平均值之分。具體到F1-Score來說,如果我們賦予精確率和召回率相同權重,那我們的F1-Score就是精確率和召回率的簡單調和平均值:

F1=1(1P+1R)×12=2×P×RP+RF_1=\frac{1}{(\frac{1}{P}+\frac{1}{R})\times\frac{1}{2}}=\frac{2\times{P}\times{R}}{P+R}

對我們來說,精確率和召回率的重要性並不總是等同。假如我們需要為它們賦予不同的權重,我們就需要使用到加權調和平均值。

我們用HwH_w來表示加權調和平均值,使用wa,wbw_a, w_b分別表示我們賦予a和b的不同的權重,那麼a和b的加權調和平均值為:

Hw=11wa+wb×(waa+wbb)=wa+wbwaa+wbb=(wa+wb)×a×bwa×b+wb×aH_w=\frac{1}{\frac{1}{w_a + w_b}\times{(\frac{w_a}{a}+\frac{w_b}{b}})}=\frac{w_a+w_b}{\frac{w_a}{a}+\frac{w_b}{b}}=\frac{(w_a+w_b)\times{a}\times{b}}{w_a\times{b}+w_b\times{a}}

現在我們為精確率賦以β2\beta^2的權重,為召回率賦以1的權重,那麼我們的F1F_1就是:

F1=11wP+wR×(wPP+wRR)=wP+wRwPP+wRR=(wP+wR)×P×RwP×R+wR×P=(β2+1)×P×Rβ2×R+PF_1=\frac{1}{\frac{1}{w_P+w_R}\times{(\frac{w_P}{P}+\frac{w_R}{R}})}=\frac{w_P+w_R}{\frac{w_P}{P}+\frac{w_R}{R}}=\frac{(w_P+w_R)\times{P}\times{R}}{w_P\times{R}+w_R\times{P}}=\frac{(\beta^2+1)\times{P}\times{R}}{\beta^2\times{R}+P}

相關推薦

快速理解分類模型評估指標

一、從混淆矩陣說起 我們以二分類模型來舉例,假設我們要預測使用者在借款之後是否會逾期。 對於我們的預測來說,有逾期/不逾期兩種結果。 對於真實情況,同樣有逾期/不逾期兩種結果。 我們以逾期為正例,以不逾期為反例,將預測結果與真實結果進行列聯交叉,就生成了混淆矩陣

理解分類模型評價指標AUC

  ROC(Receiver Operating Characteristic)   受試者工作特性曲線 縱軸TPR(真正例率)和橫軸FPR(假正例率)分別為 對於二分類問題,預測模型會對每一個樣本預測一個概率p。 然後,可以選取一個閾

分類模型評估指標的計算方法與程式碼實現

一、定義 在研究評估指標之前,先給出分類結果混淆矩陣(confusion matrix)。             預測 真實 正例 反例 正例 TP FN 反例 FP TN 1.準確率--accuracy 定義:對於給定的測試資料集,分類器正確分類的樣本數與總樣

【深度學習】常用的模型評估指標

是我 初學者 cnblogs 沒有 線下 均衡 顯示 總數 效果 “沒有測量,就沒有科學。”這是科學家門捷列夫的名言。在計算機科學中,特別是在機器學習的領域,對模型的測量和評估同樣至關重要。只有選擇與問題相匹配的評估方法,我們才能夠快速的發現在模型選擇和訓練過程中可能出現的

Classification: Precision/Recall ,ROC, AUC等分類模型評估方法,Multilabel and Multioutput Classification

Classification 一.資料集獲取及預處理 1 資料集匯入 2資料集劃分 二、binary classification 二元分類器 自己實現交叉驗證函式 confusion ma

分類模型評價指標-AUC

AUC的含義和計算***** AUC針對二分類模型效果進行評價,二分類模型有時可能得到的是一個概率值,這個概率值表明為(0或1類)的可能性(不同於決策樹分類,我們會直接得到一個確切分類),我們劃定一個具體概率值p,大於則為正,小於則為負,然後使用acc或其他指標評價,其實這樣做有很大漏洞

分類模型評估——func()

“所有模型都是壞的,但有些模型是有用的”。建立模型之後,接下來就要去評估模型,以確定此模型是否“有用”。sklearn庫的metrics模組提供各種評估方法,包括分類評估、迴歸評估、聚類評估和交叉驗證等,本節主要介紹分類模型評估方法。   評估分類是判斷預測值時否很好的與實際標記值相匹配。正確的鑑別

sklearn之模型評估指標總結歸納

文章目錄 機器學習模型評估 分類模型 迴歸模型 聚類模型 交叉驗證中指定scoring引數 網格搜尋中應用 機器學習模型評估 以下方法,sklearn中都在

目標檢測模型評估指標——mAP計算的討論

對於使用機器學習解決的大多數常見問題,通常有多種可用的模型。每個模型都有自己的獨特之處,並隨因素變化而表現不同。 每個模型在“驗證/測試”資料集上來評估效能,效能衡量使用各種統計量如準確度(accuracy),精度(precision),召回率(recall)等。選擇的統計量通常針對特定應用場景

分類相關評估指標(召回率、準確率,精確率,F度量,AUC和ROC)

  基礎定義   通常在機器學習的二分類領域中,對模型的結果評估是必不可少的,本文主要總結了各個評估指標,對每個指標的定義,作用進行闡述。廢話到此,直接上乾貨。 TP:True Positive   FP:False Positive TN:Tr

機器學習常見模型評估指標

1.單值評估指標     在機器學習或深度學習中,為了評估最終模型的好壞,我們經常會引入各種評估指標,為了便於指標的說明,我們這裡具一個例子作為說明。假設我們想要建立一個垃圾郵件的分類模型,此時,模型預測結果的混淆矩陣如下表所示: 此時,我們常用的評估指標就有如下:

深度學習模型評估指標(http://scikit-learn.org/stable/)

  在機器學習中,對模型的測量和評估同樣至關重要。只有選擇與問題相匹配的評估方法,我們才能夠快速的發現在模型選擇和訓練過程中可能出現的問題,迭代地對模型進行優化。 常見的模型評估指標: precision recall F1-score PRC ROC/AUC

機器學習:圖文詳解模型評估指標ROC/AUC

模型訓練好,必須要通過各種指標去衡量模型的好壞,也就是模型的泛化能力。模型的評估指標有很多,筆者在剛開始學習的時候,也是搞得焦頭爛額,有時候自己理解了,但又很難跟別人解釋清楚,所以寫下這邊文章。本文主要介紹分類的模型的各種評估指標以及ROC和AUC。 1.混淆矩陣 對於二分類的模型,

分類模型評價指標-Sklearn

  Sklearn的metrics模組下有多個計算模型評價指標的函式,本文只介紹二分類的指標函式。 1.準確率 1.1引數說明 sklearn.metrics.accuracy_score(y_true, y_pred, normalize=T

模型評估指標AUC(area under the curve)

AUC在機器學習領域中是一種模型評估指標。根據維基百科的定義,AUC(area under the curve)是ROC曲線下的面積。所以,在理解AUC之前,要先了解ROC是什麼。而ROC的計算又需要藉助混淆矩陣,因此,我們先從混淆矩陣開始談起。 混淆矩陣

分類模型評估之 ROC曲線和PR曲線

1、二分模型 考慮一個二分問題,即將例項分成正類(Positive)或負類(Negative)。對一個二分問題來說,會出現四種情況: TP: 如果一個例項是正類並且也被預測成正類,即為真正類(True Positive); FP: 如果一個例項是負類而被

絕對不容錯過:最完整的檢測模型評估指標mAP計算指南(附程式碼)在這裡!

    作者:  葉  虎   編輯: 趙一帆  前  言本文翻譯自Measuring Obje

4.4.2分類模型評判指標(一)

簡介混淆矩陣是ROC曲線繪製的基礎,同時它也是衡量分型別模型準確度中最基本,最直觀,計算最簡單的方法。一句話解釋版本:混淆矩陣就是分別統計分類模型歸錯類,歸對類的觀測值個數,然後把結果放在一個表裡展示出來。這個表就是混淆矩陣。資料分析與挖掘體系位置混淆矩陣是評判模型結果的指標

迴歸模型-評估指標

一、多元線性迴歸 多元線性迴歸示例: y=b+a1∗x1+a2∗x2+⋅⋅⋅+an∗xny=b+a1∗x1+a2∗x2+···+an∗xn 房價預測案例: 多重共線性(Mul

4.4.2分類模型評判指標(三)

簡介 KS曲線是用來衡量分型別模型準確度的工具。KS曲線與ROC曲線非常的類似。其指標的計算方法與混淆矩陣、ROC基本一致。它只是用另一種方式呈現分類模型的準確性。KS值是KS圖中兩條線之間最大的距離,其能反映出分類器的劃分能力。 一句話概括版本: KS曲線是兩條線,其