Recall(召回率) Precision(准确率) F-Measure E值 sensitivity(灵敏性) specificity(特异性)漏诊率 误诊率 ROC AUC
Berkeley Computer Vision page
Performance Evaluation
機器學習之分類性能度量指標 : ROC曲線、AUC值、正確率、召回率
True Positives, TP:預測為正樣本,實際也為正樣本的特征數
False Positives,FP:預測為正樣本,實際為負樣本的特征數
True Negatives,TN:預測為負樣本,實際也為負樣本的特征數
False Negatives,FN:預測為負樣本,實際為正樣本的特征數
圖如下所示,里面綠色的半圓就是TP(True Positives), 紅色的半圓就是FP(False Positives), 左邊的灰色長方形(不包括綠色半圓),就是FN(False Negatives)。右邊的 淺灰色長方形(不包括紅色半圓),就是TN(True Negatives)。這個綠色和紅色組成的圓內代表我們分類得到模型結果認為是正值的樣本
Recall(召回率) Precision(準確率) F-Measure E值 sensitivity(靈敏性) specificity(特異性)漏診率 誤診率 ROC AUC
信息檢索、分類、識別、翻譯等領域兩個最基本指標是
召回率(Recall Rate)=系統檢索到的相關文件 / 系統所有相關的文件總數,衡量的是檢索系統的查全率。
準確率(Precision Rate)=系統檢索到的相關文件 / 系統所有檢索到的文件總數,衡量的是檢索系統的查準率。
圖示表示如下:
一般來說,Precision就是檢索出來的條目(比如:文檔、網頁等)有多少是準確的,Recall就是所有準確的條目有多少被檢索出來了。
注意:準確率和召回率是互相影響的,理想情況下肯定是做到兩者都高,但是一般情況下準確率高、召回率就低,召回率低、準確率高,當然如果兩者都低,那是什么地方出問題了。一般情況,用不同的閥值,統計出一組不同閥值下的精確率和召回率,如下圖:
如果是做搜索,那就是保證召回的情況下提升準確率;
如果做疾病監測、反垃圾,則是保準確率的條件下,提升召回。
綜合評價指標(F-Measure)
P和R指標有時候會出現的矛盾的情況,這樣就需要綜合考慮他們,最常見的方法就是F-Measure(又稱為F-Score)。
F-Measure是Precision和Recall加權調和平均
F =(a^2 +1)/(1/P + a^2/R)= (a^2+1)*P*R / (a^2*P +R)當參數a=1時,就是最常見的F1:
F1 = 2*P*R / (P+R)有時候我們對精確率和召回率并不是一視同仁,比如有時候我們更加重視精確率。我們用一個參數β來度量兩者之間的關系。如果β>1, 召回率有更大影響,如果β<1,精確率有更大影響。自然,當β=1的時候,精確率和召回率影響力相同,和F1形式一樣。含有度量參數β的F1我們記為Fβ, 嚴格的數學定義如下:
很容易理解,F1綜合了P和R的結果。
F1 測量不均衡數據的精度。
R2 分數測量回歸的精度。
更多R2的介紹見
準確測量機器學習模型的誤差
Accurately Measuring Model Prediction Error
E值 是Precision和Recall加權平均值,b>1表示更重視P
E =1-(b^2 +1)/(1/P + b^2/R)=1- (b^2+1)*P*R / b^2*P +R)不妨舉這樣一個例子:某池塘有1400條鯉魚,300只蝦,300只鱉。現在以捕鯉魚為目的。撒一大網,逮著了700條鯉魚,200只蝦,100只鱉。那么,這些指標分別如下:
準確率 = 700 / (700 + 200 + 100) = 70% 召回率 = 700 / 1400 = 50% F值 = 70 * 2 / (70) = 58.3不妨看看如果把池子里的所有的鯉魚、蝦和鱉都一網打盡,這些指標又有何變化:
正確率 = 1400 / (1400 + 300 + 300) = 70% 召回率 = 1400 / 1400 = 100% F值 = 70 * 2 / (70) = 82.35由此可見,準確率是評估捕獲的成果中目標成果所占得比例;召回率,顧名思義,就是從關注領域中,召回目標類別的比例;而F值,則是綜合這二者指標的評估指標,用于綜合反映整體的指標。
當然希望檢索結果Precision越高越好,同時Recall也越高越好,但事實上這兩者在某些情況下有矛盾的。比如極端情況下,我們只搜索出了一個結果,且是準確的,那么Precision就是100%,但是Recall就很低;而如果我們把所有結果都返回,那么比如Recall是100%,但是Precision就會很低。因此在不同的場合中需要自己判斷希望Precision比較高或是Recall比較高。如果是做實驗研究,可以繪制Precision-Recall曲線來幫助分析。
靈敏性與假陰性率(漏診率),特異性與假陽性率(誤診率)
靈敏度(也稱真陽性率,sensitivity)=真陽性人數/(真陽性人數+假陰性人數)*100%。指正確判斷病人的程度,也即實際有病而被正確診斷的百分比。
特異度(也稱真陰性率,specificity)=真陰性人數/(真陰性人數+假陽性人數))*100%。指正確判斷非病人的程度,也即實際無病而被正確診斷為無病的百分比。
ROC和AUC
ROC和AUC是評價分類器的指標
回到ROC上來,ROC的全名叫做Receiver Operating Characteristic。
ROC關注兩個指標
TPR代表能將正例分對的概率
False Positive Rate( FPR ) = FP /(FP + TN)FPR代表將負例錯分為正例的概率
縱軸:真正率(擊中率)true positive rate ,TPR,稱為靈敏度。所有實際正例中,正確識別的正例比例。
橫軸:假正率(虛報率)false positiverate, FPR,稱為(1-特異度)。所有實際負例中,錯誤得識別為正例的負例比例。
在ROC 空間中,每個點的橫坐標是FPR,縱坐標是TPR,這也就描繪了分類器在TP(真正的正例)和FP(錯誤的正例)間的trade-off。
以召回率為y軸,以特異性為x軸,我們就直接得到了RoC曲線。從召回率和特異性的定義可以理解,召回率越高,特異性越小,我們的模型和算法就越高效。也就是畫出來的RoC曲線越靠近左上越好。如下圖左圖所示。從幾何的角度講,RoC曲線下方的面積越大越大,則模型越優。所以有時候我們用RoC曲線下的面積,即AUC(Area Under Curve)值來作為算法和模型好壞的標準。
ROC的主要分析工具是一個畫在ROC空間的曲線——ROC curve。我們知道,對于二值分類問題,實例的值往往是連續值,我們通過設定一個閾值,將實例分類到正類或者負類(比如大于閾值劃分為正類)。因此我們可以變化閾值,根據不同的閾值進行分類,根據分類結果計算得到ROC空間中相應的點,連接這些點就形成ROC curve。ROC curve經過(0,0)(1,1),實際上(0, 0)和(1, 1)連線形成的ROC curve實際上代表的是一個隨機分類器。一般情況下,這個曲線都應該處于(0, 0)和(1, 1)連線的上方,如圖所示。
Roc曲線用來評價分類器的性能。通過測試分類結果可以計算得到TPR和FPR的一個點對。再通過調整這個分類器分類的閾值(從0.1到0.9),閾值的設定將實例分類到正類或者負類(比如大于閾值劃分為正類)。因此根據變化閾值會產生不同效果的分類,得到多個分類結果的點,可以畫出一條曲線,經過(0, 0),(1, 1)。
曲線在對角線左上方,離得越遠說明分類效果好。如果出現在對角線右下方,直觀的補救辦法就是把所有的預測結果反向,即:分類器目的是識別正例,但效果差,所以把分類器輸出結果正負顛倒,把輸出的正例當成負例,把負例當成正例。就得到一個好的分類器。從源頭上說,分類器越差越好。
用ROC curve來表示分類器的performance很直觀好用。可是,人們總是希望能有一個數值來標志分類器的好壞。于是Area Under roc Curve(AUC)就出現了。顧名思義,AUC的值就是處于ROC curve下方的那部分面積的大小。通常,AUC的值介于0.5到1.0之間,較大的AUC代表了較好的Performance。
P/R和ROC是兩個不同的評價指標和計算方式,一般情況下,檢索用前者,分類、識別等用后者。
以精確率為y軸,以召回率為x軸,我們就得到了PR曲線。仍然從精確率和召回率的定義可以理解,精確率越高,召回率越高,我們的模型和算法就越高效。也就是畫出來的PR曲線越靠近右上越好。
準確率(Precision) = TP/(TP+FP)
反映了被分類器判定的正例中真正的正例樣本的比重
虛警概率(False Alarm)FA = FP / (TP + FP) = 1 – Precision反映被判為正例樣本中,有多少個是負例
召回率(Recall)=TP/(TP+FN) = 1 - FN/P也稱為 True Positive Rate, 反映了被正確判定的正例占總的正例的比重
漏警概率(Missing Alarm)MA = FN/(TP + FN) = 1 – TP/P = 1 - Recall反映有多少個正例被漏判了
F-measure or balanced F-score
F = 2 * 召回率 * 準確率/ (召回率+準確率)這就是傳統上通常說的F1 measure
靈敏度(也稱真陽性率)sensitivity = TP/(TP + FN);True Positive Rate ( TPR ) = TP /(TP + FN)指正確判斷病人的程度,也即實際有病而被正確診斷的百分比。
即實際上有病而按該篩檢標準被正確地判為有病的百分率
假陰性率也稱為漏診率,即實際有病,但根據該篩選標準被定為非病者的百分率。
特異性(真陰性率)specificity = TN /(FP + TN) True Negative Rate(TNR) = TN/(TP + TN)即實際無病按照該診斷標準被正確地判為無病的百分率。
假陽性率False Positive Rate (FPR) = FP/(FP + TN)= 1-specificity =1- TNR假陽性也稱為誤診率,即實際無病,但根據診斷標準被定為有病的百分率
綜上所述, Recall(召回率)和 sensitivity(靈敏性)是同一個概念,其他無相同點。
關于分類算法中的ROC與PR指標參考下文
http://blog.csdn.net/jiandanjinxin/article/details/51841726
MATLAB實現
AUC計算
ROC 計算
Precision-Recall and ROC Curves
Matlab code for Precision/Recall, ROC, Accuracy, F-Measure
本文參考主頁
精確率與召回率,RoC曲線與PR曲線
http://bookshadow.com/weblog/2014/06/10/precision-recall-f-measure/
http://blog.csdn.net/marising/article/details/6543943
http://blog.sina.com.cn/s/blog_4dff58fc010176ax.html
http://blog.sina.com.cn/s/blog_49ea41a20102w4kd.html
http://blog.csdn.net/wangran51/article/details/7579100
總結
以上是生活随笔為你收集整理的Recall(召回率) Precision(准确率) F-Measure E值 sensitivity(灵敏性) specificity(特异性)漏诊率 误诊率 ROC AUC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大力出奇迹!新倩女全民助力争霸赛战队晋级
- 下一篇: 你们的POI来了!《舰姬收藏》岛风全方位