天天看點

分類算法的評價名額

一、引言

分類算法有很多,不同分類算法又用很多不同的變種。不同的分類算法有不同的特定,在不同的資料集上表現的效果也不同,我們需要根據特定的任務進行算法的選擇,如何選擇分類,如何評價一個分類算法的好壞,前面關于決策樹的介紹,我們主要用的正确率(accuracy)來評價分類算法。

正确率确實是一個很好很直覺的評價名額,但是有時候正确率高并不能代表一個算法就好。比如某個地區某天地震的預測,假設我們有一堆的特征作為地震分類的屬性,類别隻有兩個:0:不發生地震、1:發生地震。一個不加思考的分類器,對每一個測試用例都将類别劃分為0,那那麼它就可能達到99%的正确率,但真的地震來臨時,這個分類器毫無察覺,這個分類帶來的損失是巨大的。為什麼99%的正确率的分類器卻不是我們想要的,因為這裡資料分布不均衡,類别1的資料太少,完全錯分類别1依然可以達到很高的正确率卻忽視了我們關注的東西。接下來詳細介紹一下分類算法的評價名額。

二、評價名額

1、幾個常用的術語

這裡首先介紹幾個常見的模型評價術語,現在假設我們的分類目标隻有兩類,計為正例(positive)和負例(negtive)分别是:

1)True positives(TP): 被正确地劃分為正例的個數,即實際為正例且被分類器劃分為正例的執行個體數(樣本數);

2)False positives(FP): 被錯誤地劃分為正例的個數,即實際為負例但被分類器劃分為正例的執行個體數;

3)False negatives(FN):被錯誤地劃分為負例的個數,即實際為正例但被分類器劃分為負例的執行個體數;

4)True negatives(TN): 被正确地劃分為負例的個數,即實際為負例且被分類器劃分為負例的執行個體數。

分類算法的評價名額

上圖是這四個術語的混淆矩陣,我隻知道FP叫僞陽率,其他的怎麼稱呼就不詳了。注意P=TP+FN表示實際為正例的樣本個數,我曾經誤以為實際為正例的樣本數應該為TP+FP,這裡隻要記住True、False描述的是分類器是否判斷正确,Positive、Negative是分類器的分類結果。如果正例計為1、負例計為-1,即positive=1、negtive=-1,用1表示True,-1表示False,那麼實際的類标=TFPN,TF為true或false,PN為positive或negtive。例如True positives(TP)的實際類标=11=1為正例,False positives(FP)的實際類标=(-1)1=-1為負例,False negatives(FN)的實際類标=(-1)(-1)=1為正例,True negatives(TN)的實際類标=1*(-1)=-1為負例。

2、評價名額

1)正确率(accuracy)

正确率是我們最常見的評價名額,accuracy = (TP+TN)/(P+N),這個很容易了解,就是被分對的樣本數除以所有的樣本數,通常來說,正确率越高,分類器越好;

2)錯誤率(error rate)

錯誤率則與正确率相反,描述被分類器錯分的比例,error rate = (FP+FN)/(P+N),對某一個執行個體來說,分對與分錯是互斥事件,是以accuracy =1 - error rate;

3)靈敏度(sensitive)

sensitive = TP/P,表示的是所有正例中被分對的比例,衡量了分類器對正例的識别能力;

4)特效度(specificity)

specificity = TN/N,表示的是所有負例中被分對的比例,衡量了分類器對負例的識别能力;

5)精度(precision)

精度是精确性的度量,表示被分為正例的示例中實際為正例的比例,precision=TP/(TP+FP);

6)召回率(recall)

召回率是覆寫面的度量,度量有多個正例被分為正例,recall=TP/(TP+FN)=TP/P=sensitive,可以看到召回率與靈敏度是一樣的。

7)其他評價名額

計算速度:分類器訓練和預測需要的時間;

魯棒性:處理缺失值和異常值的能力;

可擴充性:處理大資料集的能力;

可解釋性:分類器的預測标準的可了解性,像決策樹産生的規則就是很容易了解的,而神經網絡的一堆參數就不好了解,我們隻好把它看成一個黑盒子。

  對于某個具體的分類器而言,我們不可能同時提高所有上面介紹的名額,當然,如果一個分類器能正确分對所有的執行個體,那麼各項名額都已經達到最優,但這樣的分類器往往不存在。比如我們開頭說的地震預測,沒有誰能準确預測地震的發生,但我們能容忍一定程度的誤報,假設1000次預測中,有5次預測為發現地震,其中一次真的發生了地震,而其他4次為誤報,那麼正确率從原來的999/1000=99.9%下降到996/1000=99.6,但召回率從0/1=0%上升為1/1=100%,這樣雖然謊報了幾次地震,但真的地震來臨時,我們沒有錯過,這樣的分類器才是我們想要的,在一定正确率的前提下,我們要求分類器的召回率盡可能的高。

http://blog.sciencenet.cn/blog-460603-785098.html

分類是一種重要的資料挖掘算法。分類的目的是構造一個分類函數或分類模型(即分類器),通過分類器将資料對象映射到某一個給定的類别中。分類器的主要評價名額有準确率(Precision)、召回率(Recall)、Fb-score、ROC、AOC等。在研究中也有采用Accuracy(正确率)來評價分類器的。但準确率和正确率這兩個概念經常有人混了。【沒有耐心看下面内容的博友請看最後的結論】

準确率(Precision) 和召回率(Recall)是資訊檢索領域兩個最基本的名額。準确率也稱為查準率,召回率也稱為查全率。它們的定義如下:

Precision=系統檢索到的相關檔案數量/系統檢索到的檔案總數量

Recall=系統檢索到的相關檔案數量/系統所有相關檔案數量

Fb-score是準确率和召回率的調和平均:Fb=[(1+b2)PR]/(b2*P+R),比較常用的是F1。

在資訊檢索中,準确率和召回率是互相影響的,雖然兩者都高是一種期望的理想情況,然而實際中常常是準确率高、召回率就低,或者召回率低、但準确率高。是以在實際中常常需要根據具體情況做出取舍,例如對一般搜尋的情況是在保證召回率的情況下提升準确率,而如果是疾病監測、反垃圾郵件等,則是在保證準确率的條件下,提升召回率。但有時候,需要兼顧兩者,那麼就可以用F-score名額。

ROC和AUC是評價分類器的名額。ROC是受試者工作特征曲線 receiver operating characteristic curve ) 的簡寫,又稱為感受性曲線(sensitivity curve)。得此名的原因在于曲線上各點反映着相同的感受性,它們都是對同一信号刺激的反應,隻不過是在幾種不同的判定标準下所得的結果而已[1]。ROC是反映敏感性和特異性連續變量的綜合名額,是用構圖法揭示敏感性和特異性的互相關系,它通過将連續變量設定出多個不同的臨界值,進而計算出一系列敏感性和特異性,再以敏感性為縱坐标、(1-特異性)為橫坐标繪制成曲線。AUC是ROC曲線下面積(Area Under roc Curve)的簡稱,顧名思義,AUC的值就是處于ROC curve下方的那部分面積的大小。通常,AUC的值介于0.5到1.0之間,AUC越大,診斷準确性越高。在ROC曲線上,最靠近坐标圖左上方的點為敏感性和特異性均較高的臨界值。

為了解釋ROC的概念,讓我們考慮一個二分類問題,即将執行個體分成正類(positive)或負類(negative)。對一個二分問題來說,會出現四種情況。如果一個執行個體是正類并且也被預測成正類,即為真正類(True positive),如果執行個體是負類被預測成正類,稱之為假正類(False positive)。相應地,如果執行個體是負類被預測成負類,稱之為真負類(Truenegative),正類被預測成負類則為假負類(falsenegative)。列聯表或混淆矩陣如下表所示,1代表正類,0代表負類。

分類算法的評價名額

基于該列聯表,定義敏感性名額為:sensitivity=TP/(TP+FN)。敏感性名額又稱為真正類率(truepositive rate ,TPR),刻畫的是分類器所識别出的正執行個體占所有正執行個體的比例。

另外定義負正類率(false positive rate, FPR),計算公式為:FPR=FP/(FP+TN).負正類率計算的是分類器錯認為正類的負執行個體占所有負執行個體的比例

定義特異性名額為:Specificity=TN/(FP+TN)=1-FPR。特異性名額又稱為真負類率(True Negative Rate,TNR)。

我們看,實際上,敏感性名額就是召回率,特異性名額=1-FPR。

ROC曲線由兩個變量繪制。橫坐标是1-specificity,即負正類率(FPR),縱坐标是 Sensitivity,即真正類率(TPR)。

在此基礎上,還可以定義正确率(Accuracy)和錯誤率(Error)。 Accuracy=(TP+TN)/(TP+FP+TN+FN) , Error= (FP+FN)/(TP+FP+TN+FN)。如果把預測為1看作檢索結果,則準确率Precision= TP/(TP+FP)。

結論:

分類正确率(Accuracy),不管是哪個類别,隻要預測正确,其數量都放在分子上,而分母是全部資料數量,這說明正确率是對全部資料的判斷。而準确率在分類中對應的是某個類别,分子是預測該類别正确的數量,分母是預測為該類别的全部資料的數量。或者說,Accuracy是對分類器整體上的正确率的評價,而Precision是分類器預測為某一個類别的正确率的評價。

https://argcv.com/articles/1036.c

自然語言處理(ML),機器學習(NLP),資訊檢索(IR)等領域,評估(Evaluation)是一個必要的工作,而其評價名額往往有如下幾點:準确率(Accuracy),精确率(Precision),召回率(Recall)和F1-Measure。

本文将簡單介紹其中幾個概念。中文中這幾個評價名額翻譯各有不同,是以一般情況下推薦使用英文。

現在我先假定一個具體場景作為例子。

假如某個班級有男生80人,女生20人,共計100人.目标是找出所有女生.

現在某人挑選出50個人,其中20人是女生,另外還錯誤的把30個男生也當作女生挑選出來了.

作為評估者的你需要來評估(evaluation)下他的工作

首先我們可以計算準确率(accuracy),其定義是: 對于給定的測試資料集,分類器正确分類的樣本數與總樣本數之比。也就是損失函數是0-1損失時測試資料集上的準确率[1].

這樣說聽起來有點抽象,簡單說就是,前面的場景中,實際情況是那個班級有男的和女的兩類,某人(也就是定義中所說的分類器)他又把班級中的人分為男女兩類。accuracy需要得到的是此君分正确的人占總人數的比例。很容易,我們可以得到:他把其中70(20女+50男)人判定正确了,而總人數是100人,是以它的accuracy就是70 %(70 / 100).

由準确率,我們的确可以在一些場合,從某種意義上得到一個分類器是否有效,但它并不總是能有效的評價一個分類器的工作。舉個例子,google抓取了argcv 100個頁面,而它索引中共有10,000,000個頁面,随機抽一個頁面,分類下,這是不是argcv的頁面呢?如果以accuracy來判斷我的工作,那我會把所有的頁面都判斷為"不是argcv的頁面",因為我這樣效率非常高(return false,一句話),而accuracy已經到了99.999%(9,999,900/10,000,000),完爆其它很多分類器辛辛苦苦算的值,而我這個算法顯然不是需求期待的,那怎麼解決呢?這就是precision,recall和f1-measure出場的時間了.

在說precision,recall和f1-measure之前,我們需要先需要定義TP,FN,FP,TN四種分類情況.

按照前面例子,我們需要從一個班級中的人中尋找所有女生,如果把這個任務當成一個分類器的話,那麼女生就是我們需要的,而男生不是,是以我們稱女生為"正類",而男生為"負類".

分類算法的評價名額

通過這張表,我們可以很容易得到這幾個值:

TP=20

FP=30

FN=0

TN=50

精确率(precision)的公式是P=TPTP+FP,它計算的是所有被檢索到的item中,"應該被檢索到"的item占的比例。

在例子中就是希望知道此君得到的所有人中,正确的人(也就是女生)占有的比例.是以其precision也就是40%(20女生/(20女生+30誤判為女生的男生)).

召回率(recall)的公式是R=TPTP+FN,它計算的是所有檢索到的item占所有"應該檢索到的item"的比例。

在例子中就是希望知道此君得到的女生占本班中所有女生的比例,是以其recall也就是100%(20女生/(20女生+ 0 誤判為男生的女生))

F1值就是精确值和召回率的調和均值,也就是

2F1=1P+1R

調整下也就是

F1=2PRP+R=2TP2TP+FP+FN

例子中 F1-measure 也就是約為 57.143%(2∗0.4∗10.4+1).

需要說明的是,有人[2]列了這樣個公式

Fa=(a2+1)PRa2(P+R)

将F-measure一般化.

F1-measure認為精确率和召回率的權重是一樣的,但有些場景下,我們可能認為精确率會更加重要,調整參數a,使用Fa-measure可以幫助我們更好的evaluate結果.

話雖然很多,其實實作非常輕松,點選此處可以看到我的一個簡單的實作.

繼續閱讀