[Algorithm] 機器學習算法經常使用指標總結

  考慮一個二分問題,即將實例分紅正類(positive)或負類(negative)。對一個二分問題來講,會出現四種狀況。若是一個實例是正類而且也被 預測成正類,即爲真正類(True positive),若是實例是負類被預測成正類,稱之爲假正類(False positive)。相應地,若是實例是負類被預測成負類,稱之爲真負類(True negative),正類被預測成負類則爲假負類(false negative)。算法

  TP:正確確定的數目;機器學習

  FN:漏報,沒有正確找到的匹配的數目;學習

  FP:誤報,給出的匹配是不正確的;spa

  TN:正確拒絕的非匹配對數;翻譯

  列聯表以下表所示,1表明正類,0表明負類:blog

  預測1 預測0
實際1 True Positive(TP) False Negative(FN)
實際0 False Positive(FP) True Negative(TN)

1. TPR、FPR&TNR

  從列聯表引入兩個新名詞。其一是真正類率(true positive rate ,TPR), 計算公式爲排序

TPR = TP / (TP + FN)ci

刻畫的是分類器所識別出的 正實例佔全部正實例的比例。文檔

  另一個是負正類率(false positive rate, FPR),計算公式爲get

FPR = FP / (FP + TN)

計算的是分類器錯認爲正類的負實例佔全部負實例的比例。

  還有一個真負類率(True Negative Rate,TNR),也稱爲specificity,計算公式爲

TNR = TN /(FP + TN) = 1 - FPR

2. 精確率Precision、召回率Recall和F1值

  精確率(正確率)召回率是普遍用於信息檢索和統計學分類領域的兩個度量值,用來評價結果的質量。其中精度是檢索出相關文檔數與檢索出的文檔總數的比率,衡量的是檢索系統的查準率;召回率是指檢索出的相關文檔數和文檔庫中全部的相關文檔數的比率,衡量的是檢索系統的查全率

  通常來講,Precision就是檢索出來的條目(好比:文檔、網頁等)有多少是準確的,Recall就是全部準確的條目有多少被檢索出來了,二者的定義分別以下:

Precision = 提取出的正確信息條數 /  提取出的信息條數     

Recall = 提取出的正確信息條數 /  樣本中的信息條數    

  爲了可以評價不一樣算法的優劣,在Precision和Recall的基礎上提出了F1值的概念,來對Precision和Recall進行總體評價。F1的定義以下:

F1值  = 正確率 * 召回率 * 2 / (正確率 + 召回率) 

  不妨舉這樣一個例子:

  某池塘有1400條鯉魚,300只蝦,300只鱉。如今以捕鯉魚爲目的。撒一大網,逮着了700條鯉魚,200只蝦,100只鱉。那麼,這些指標分別以下:

  正確率 = 700 / (700 + 200 + 100) = 70%

  召回率 = 700 / 1400 = 50%

  F1值 = 70% * 50% * 2 / (70% + 50%) = 58.3%

  不妨看看若是把池子裏的全部的鯉魚、蝦和鱉都一網打盡,這些指標又有何變化:

  正確率 = 1400 / (1400 + 300 + 300) = 70%

  召回率 = 1400 / 1400 = 100%

  F1值 = 70% * 100% * 2 / (70% + 100%) = 82.35%        

  因而可知,正確率是評估捕獲的成果中目標成果所佔得比例;召回率,顧名思義,就是從關注領域中,召回目標類別的比例;而F值,則是綜合這兩者指標的評估指標,用於綜合反映總體的指標。

  固然但願檢索結果Precision越高越好,同時Recall也越高越好,但事實上這二者在某些狀況下有矛盾的。好比極端狀況下,咱們只搜索出了一個結果,且是準確的,那麼Precision就是100%,可是Recall就很低;而若是咱們把全部結果都返回,那麼好比Recall是100%,可是Precision就會很低。所以在不一樣的場合中須要本身判斷但願Precision比較高或是Recall比較高。若是是作實驗研究,能夠繪製Precision-Recall曲線來幫助分析。

3. 綜合評價指標F-measure

  Precision和Recall指標有時候會出現的矛盾的狀況,這樣就須要綜合考慮他們,最多見的方法就是F-Measure(又稱爲F-Score)。

  F-Measure是Precision和Recall加權調和平均

  當參數α=1時,就是最多見的F1。所以,F1綜合了P和R的結果,當F1較高時則能說明試驗方法比較有效。

4. ROC曲線和AUC

  4.1 爲何引入ROC曲線?

  Motivation1:在一個二分類模型中,對於所獲得的連續結果,假設已肯定一個閥值,好比說 0.6,大於這個值的實例劃歸爲正類,小於這個值則劃到負類中。若是減少閥值,減到0.5,當然能識別出更多的正類,也就是提升了識別出的正例佔全部正例 的比類,即TPR,但同時也將更多的負實例看成了正實例,即提升了FPR。爲了形象化這一變化,引入ROC,ROC曲線能夠用於評價一個分類器。

  Motivation2:在類不平衡的狀況下,如正樣本90個,負樣本10個,直接把全部樣本分類爲正樣本,獲得識別率爲90%。但這顯然是沒有意義的。單純根據Precision和Recall來衡量算法的優劣已經不能表徵這種病態問題。

  4.2 什麼是ROC曲線?

  ROC(Receiver Operating Characteristic)翻譯爲"接受者操做特性曲線"。曲線由兩個變量1-specificity 和 Sensitivity繪製. 1-specificity=FPR,即負正類率。Sensitivity便是真正類率,TPR(True positive rate),反映了正類覆蓋程度。這個組合以1-specificity對sensitivity,便是以代價(costs)對收益(benefits)。

       此外,ROC曲線還能夠用來計算「均值平均精度」(mean average precision),這是當你經過改變閾值來選擇最好的結果時所獲得的平均精度(PPV)。

  爲了更好地理解ROC曲線,咱們使用具體的實例來講明:

  如在醫學診斷中,判斷有病的樣本。那麼儘可能把有病的揪出來是主要任務,也就是第一個指標TPR,要越高越好。而把沒病的樣本誤診爲有病的,也就是第二個指標FPR,要越低越好。

  不難發現,這兩個指標之間是相互制約的。若是某個醫生對於有病的症狀比較敏感,稍微的小症狀都判斷爲有病,那麼他的第一個指標應該會很高,可是第二個指標也就相應地變高。最極端的狀況下,他把全部的樣本都看作有病,那麼第一個指標達到1,第二個指標也爲1。

  咱們以FPR爲橫軸,TPR爲縱軸,獲得以下ROC空間。

  咱們能夠看出,左上角的點(TPR=1,FPR=0),爲完美分類,也就是這個醫生醫術高明,診斷全對。點A(TPR>FPR),醫生A的判斷大致是正確的。中線上的點B(TPR=FPR),也就是醫生B全都是蒙的,蒙對一半,蒙錯一半;下半平面的點C(TPR<FPR),這個醫生說你有病,那麼你極可能沒有病,醫生C的話咱們要反着聽,爲真庸醫。上圖中一個閾值,獲得一個點。如今咱們須要一個獨立於閾值的評價指標來衡量這個醫生的醫術如何,也就是遍歷全部的閾值,獲得ROC曲線。

  仍是一開始的那幅圖,假設以下就是某個醫生的診斷統計圖,直線表明閾值。咱們遍歷全部的閾值,可以在ROC平面上獲得以下的ROC曲線。


  曲線距離左上角越近,證實分類器效果越好。

 

  如上,是三條ROC曲線,在0.23處取一條直線。那麼,在一樣的低FPR=0.23的狀況下,紅色分類器獲得更高的PTR。也就代表,ROC越往上,分類器效果越好。咱們用一個標量值AUC來量化它。

  4.3 什麼是AUC?

  AUC值爲ROC曲線所覆蓋的區域面積,顯然,AUC越大,分類器分類效果越好。

  AUC = 1,是完美分類器,採用這個預測模型時,無論設定什麼閾值都能得出完美預測。絕大多數預測的場合,不存在完美分類器。

  0.5 < AUC < 1,優於隨機猜想。這個分類器(模型)妥善設定閾值的話,能有預測價值。

  AUC = 0.5,跟隨機猜想同樣(例:丟銅板),模型沒有預測價值。

  AUC < 0.5,比隨機猜想還差;但只要老是反預測而行,就優於隨機猜想。

  AUC的物理意義:假設分類器的輸出是樣本屬於正類的socre(置信度),則AUC的物理意義爲,任取一對(正、負)樣本,正樣本的score大於負樣本的score的機率。

  4.4 怎樣計算AUC?

  第一種方法:AUC爲ROC曲線下的面積,那咱們直接計算面積可得。面積爲一個個小的梯形面積之和。計算的精度與閾值的精度有關。

  第二種方法:根據AUC的物理意義,咱們計算正樣本score大於負樣本的score的機率。取N*M(N爲正樣本數,M爲負樣本數)個二元組,比較score,最後獲得AUC。時間複雜度爲O(N*M)。

  第三種方法:與第二種方法類似,直接計算正樣本score大於負樣本的機率。咱們首先把全部樣本按照score排序,依次用rank表示他們,如最大score的樣本,rank=n(n=N+M),其次爲n-1。那麼對於正樣本中rank最大的樣本,rank_max,有M-1個其餘正樣本比他score小,那麼就有(rank_max-1)-(M-1)個負樣本比他score小。其次爲(rank_second-1)-(M-2)。最後咱們獲得正樣本大於負樣本的機率爲

  時間複雜度爲O(N+M)。

5. 參考內容

  1. 機器學習指標大彙總:http://www.36dsj.com/archives/42271

相關文章
相關標籤/搜索