系统学习机器学习之算法评估
一、引言
分類算法有很多,不同分類算法又用很多不同的變種。不同的分類算法有不同的特定,在不同的數(shù)據(jù)集上表現(xiàn)的效果也不同,我們需要根據(jù)特定的任務(wù)進(jìn)行算法的選擇,如何選擇分類,如何評價(jià)一個分類算法的好壞,前面關(guān)于決策樹的介紹,我們主要用的正確率(accuracy)來評價(jià)分類算法。
正確率確實(shí)是一個很好很直觀的評價(jià)指標(biāo),但是有時候正確率高并不能代表一個算法就好。比如某個地區(qū)某天地震的預(yù)測,假設(shè)我們有一堆的特征作為地震分類的屬性,類別只有兩個:0:不發(fā)生地震、1:發(fā)生地震。一個不加思考的分類器,對每一個測試用例都將類別劃分為0,那那么它就可能達(dá)到99%的正確率,但真的地震來臨時,這個分類器毫無察覺,這個分類帶來的損失是巨大的。為什么99%的正確率的分類器卻不是我們想要的,因?yàn)檫@里數(shù)據(jù)分布不均衡,類別1的數(shù)據(jù)太少,完全錯分類別1依然可以達(dá)到很高的正確率卻忽視了我們關(guān)注的東西。接下來詳細(xì)介紹一下分類算法的評價(jià)指標(biāo)。
二、評價(jià)指標(biāo)
1、幾個常用的術(shù)語
這里首先介紹幾個常見的模型評價(jià)術(shù)語,現(xiàn)在假設(shè)我們的分類目標(biāo)只有兩類,計(jì)為正例(positive)和負(fù)例(negtive)分別是:
1)True positives(TP): ?被正確地劃分為正例的個數(shù),即實(shí)際為正例且被分類器劃分為正例的實(shí)例數(shù)(樣本數(shù));
2)False positives(FP): 被錯誤地劃分為正例的個數(shù),即實(shí)際為負(fù)例但被分類器劃分為正例的實(shí)例數(shù);
3)False negatives(FN):被錯誤地劃分為負(fù)例的個數(shù),即實(shí)際為正例但被分類器劃分為負(fù)例的實(shí)例數(shù);
4)True?negatives(TN):?被正確地劃分為負(fù)例的個數(shù),即實(shí)際為負(fù)例且被分類器劃分為負(fù)例的實(shí)例數(shù)。
?
| ? ? ? 實(shí) 際 類 別 | 預(yù)測類別 | |||
| ? | Yes | No | 總計(jì) | |
| Yes | TP | FN | P(實(shí)際為Yes) | |
| No | FP | TN | N(實(shí)際為No) | |
| 總計(jì) | P’(被分為Yes) | N’(被分為No) | P+N | |
上圖是這四個術(shù)語的混淆矩陣,我只知道FP叫偽陽率,其他的怎么稱呼就不詳了。注意P=TP+FN表示實(shí)際為正例的樣本個數(shù),我曾經(jīng)誤以為實(shí)際為正例的樣本數(shù)應(yīng)該為TP+FP,這里只要記住True、False描述的是分類器是否判斷正確,Positive、Negative是分類器的分類結(jié)果。如果正例計(jì)為1、負(fù)例計(jì)為-1,即positive=1、negtive=-1,用1表示True,-1表示False,那么實(shí)際的類標(biāo)=TF*PN,TF為true或false,PN為positive或negtive。例如True positives(TP)的實(shí)際類標(biāo)=1*1=1為正例,False positives(FP)的實(shí)際類標(biāo)=(-1)*1=-1為負(fù)例,False negatives(FN)的實(shí)際類標(biāo)=(-1)*(-1)=1為正例,True?negatives(TN)的實(shí)際類標(biāo)=1*(-1)=-1為負(fù)例。
2、評價(jià)指標(biāo)
1)正確率(accuracy)
正確率是我們最常見的評價(jià)指標(biāo),accuracy = (TP+TN)/(P+N),這個很容易理解,就是被分對的樣本數(shù)除以所有的樣本數(shù),通常來說,正確率越高,分類器越好;
2)錯誤率(error rate)
錯誤率則與正確率相反,描述被分類器錯分的比例,也叫誤差,error rate = (FP+FN)/(P+N),對某一個實(shí)例來說,分對與分錯是互斥事件,所以accuracy =1 - ?error rate;
3)靈敏度(sensitive)
sensitive = TP/P,表示的是所有正例中被分對的比例,衡量了分類器對正例的識別能力,也叫命中率;
4)特效度(specificity)
specificity = TN/N,表示的是所有負(fù)例中被分對的比例,衡量了分類器對負(fù)例的識別能力,也叫假報(bào)警率;
5)精度(precision)
精度是精確性的度量,表示被分為正例的示例中實(shí)際為正例的比例,precision=TP/(TP+FP);
6)召回率(recall)
召回率是覆蓋面的度量,度量有多個正例被分為正例,recall=TP/(TP+FN)=TP/P=sensitive,可以看到召回率與靈敏度是一樣的。
7)其他評價(jià)指標(biāo)
- 計(jì)算速度:分類器訓(xùn)練和預(yù)測需要的時間;
- 魯棒性:處理缺失值和異常值的能力;
- 可擴(kuò)展性:處理大數(shù)據(jù)集的能力;
- 可解釋性:分類器的預(yù)測標(biāo)準(zhǔn)的可理解性,像決策樹產(chǎn)生的規(guī)則就是很容易理解的,而神經(jīng)網(wǎng)絡(luò)的一堆參數(shù)就不好理解,我們只好把它看成一個黑盒子。
對于某個具體的分類器而言,我們不可能同時提高所有上面介紹的指標(biāo),當(dāng)然,如果一個分類器能正確分對所有的實(shí)例,那么各項(xiàng)指標(biāo)都已經(jīng)達(dá)到最優(yōu),但這樣的分類器往往不存在。比如我們開頭說的地震預(yù)測,沒有誰能準(zhǔn)確預(yù)測地震的發(fā)生,但我們能容忍一定程度的誤報(bào),假設(shè)1000次預(yù)測中,有5次預(yù)測為發(fā)現(xiàn)地震,其中一次真的發(fā)生了地震,而其他4次為誤報(bào),那么正確率從原來的999/1000=99.9%下降到996/1000=99.6,但召回率從0/1=0%上升為1/1=100%,這樣雖然謊報(bào)了幾次地震,但真的地震來臨時,我們沒有錯過,這樣的分類器才是我們想要的,在一定正確率的前提下,我們要求分類器的召回率盡可能的高。
?
http://blog.sciencenet.cn/blog-460603-785098.html
分類是一種重要的數(shù)據(jù)挖掘算法。分類的目的是構(gòu)造一個分類函數(shù)或分類模型(即分類器),通過分類器將數(shù)據(jù)對象映射到某一個給定的類別中。分類器的主要評價(jià)指標(biāo)有準(zhǔn)確率(Precision)、召回率(Recall)、Fb-score、ROC、AUC等。在研究中也有采用Accuracy(正確率)來評價(jià)分類器的。但準(zhǔn)確率和正確率這兩個概念經(jīng)常有人混了。【沒有耐心看下面內(nèi)容的博友請看最后的結(jié)論】
準(zhǔn)確率(Precision)?和召回率(Recall)是信息檢索領(lǐng)域兩個最基本的指標(biāo)。準(zhǔn)確率也稱為查準(zhǔn)率,召回率也稱為查全率。它們的定義如下:
Precision=系統(tǒng)檢索到的相關(guān)文件數(shù)量/系統(tǒng)檢索到的文件總數(shù)量
Recall=系統(tǒng)檢索到的相關(guān)文件數(shù)量/系統(tǒng)所有相關(guān)文件數(shù)量
Fb-score是準(zhǔn)確率和召回率的調(diào)和平均:Fb=[(1+b2)*P*R]/(b2*P+R),比較常用的是F1。
? ?在信息檢索中,準(zhǔn)確率和召回率是互相影響的,雖然兩者都高是一種期望的理想情況,然而實(shí)際中常常是準(zhǔn)確率高、召回率就低,或者召回率低、但準(zhǔn)確率高。所以在實(shí)際中常常需要根據(jù)具體情況做出取舍,例如對一般搜索的情況是在保證召回率的情況下提升準(zhǔn)確率,而如果是疾病監(jiān)測、反垃圾郵件等,則是在保證準(zhǔn)確率的條件下,提升召回率。但有時候,需要兼顧兩者,那么就可以用F-score指標(biāo)。
ROC和AUC是評價(jià)分類器的指標(biāo)。ROC是受試者工作特征曲線 receiver operating characteristic curve ) 的簡寫,又稱為感受性曲線(sensitivity curve)。得此名的原因在于曲線上各點(diǎn)反映著相同的感受性,它們都是對同一信號刺激的反應(yīng),只不過是在幾種不同的判定標(biāo)準(zhǔn)下所得的結(jié)果而已[1]。ROC是反映敏感性和特異性連續(xù)變量的綜合指標(biāo),是用構(gòu)圖法揭示敏感性和特異性的相互關(guān)系,它通過將連續(xù)變量設(shè)定出多個不同的臨界值,從而計(jì)算出一系列敏感性和特異性,再以敏感性為縱坐標(biāo)、(1-特異性)為橫坐標(biāo)繪制成曲線。AUC是ROC曲線下面積(Area Under roc Curve)的簡稱,顧名思義,AUC的值就是處于ROC curve下方的那部分面積的大小。通常,AUC的值介于0.5到1.0之間,AUC越大,診斷準(zhǔn)確性越高。在ROC曲線上,最靠近坐標(biāo)圖左上方的點(diǎn)為敏感性和特異性均較高的臨界值。
為了解釋ROC的概念,讓我們考慮一個二分類問題,即將實(shí)例分成正類(positive)或負(fù)類(negative)。對一個二分問題來說,會出現(xiàn)四種情況。如果一個實(shí)例是正類并且也被預(yù)測成正類,即為真正類(True positive),如果實(shí)例是負(fù)類被預(yù)測成正類,稱之為假正類(False positive)。相應(yīng)地,如果實(shí)例是負(fù)類被預(yù)測成負(fù)類,稱之為真負(fù)類(Truenegative),正類被預(yù)測成負(fù)類則為假負(fù)類(falsenegative)。列聯(lián)表或混淆矩陣如下表所示,1代表正類,0代表負(fù)類。
| ? | ? | 實(shí)際 | |
| ? | ? | 1 | 0 |
| 預(yù)測 | 1 | True Positive (TP) 真正 | False Positive (FP) 假正 |
| 0 | False Negative (FN) 假負(fù) | True Negative TN 真負(fù) | |
? ?基于該列聯(lián)表,定義敏感性指標(biāo)為:sensitivity=TP/(TP+FN)。敏感性指標(biāo)又稱為真正類率(truepositive rate ,TPR),刻畫的是分類器所識別出的正實(shí)例占所有正實(shí)例的比例。
? ?另外定義負(fù)正類率(false positive rate, FPR),計(jì)算公式為:FPR=FP/(FP+TN).負(fù)正類率計(jì)算的是分類器錯認(rèn)為正類的負(fù)實(shí)例占所有負(fù)實(shí)例的比例
? ?定義特異性指標(biāo)為:Specificity=TN/(FP+TN)=1-FPR。特異性指標(biāo)又稱為真負(fù)類率(True Negative Rate,TNR)。
? ?我們看,實(shí)際上,敏感性指標(biāo)就是召回率,特異性指標(biāo)=1-FPR。
? ?ROC曲線由兩個變量繪制。橫坐標(biāo)是1-specificity,即負(fù)正類率(FPR),縱坐標(biāo)是?Sensitivity,即真正類率(TPR)。
? ?在此基礎(chǔ)上,還可以定義正確率(Accuracy)和錯誤率(Error)。 Accuracy=(TP+TN)/(TP+FP+TN+FN) , Error= (FP+FN)/(TP+FP+TN+FN)。如果把預(yù)測為1看作檢索結(jié)果,則準(zhǔn)確率Precision= TP/(TP+FP)。
結(jié)論:
分類正確率(Accuracy),不管是哪個類別,只要預(yù)測正確,其數(shù)量都放在分子上,而分母是全部數(shù)據(jù)數(shù)量,這說明正確率是對全部數(shù)據(jù)的判斷。而準(zhǔn)確率在分類中對應(yīng)的是某個類別,分子是預(yù)測該類別正確的數(shù)量,分母是預(yù)測為該類別的全部數(shù)據(jù)的數(shù)量。或者說,Accuracy是對分類器整體上的正確率的評價(jià),而Precision是分類器預(yù)測為某一個類別的正確率的評價(jià)。
?
https://argcv.com/articles/1036.c
自然語言處理(ML),機(jī)器學(xué)習(xí)(NLP),信息檢索(IR)等領(lǐng)域,評估(Evaluation)是一個必要的工作,而其評價(jià)指標(biāo)往往有如下幾點(diǎn):準(zhǔn)確率(Accuracy),精確率(Precision),召回率(Recall)和F1-Measure。
本文將簡單介紹其中幾個概念。中文中這幾個評價(jià)指標(biāo)翻譯各有不同,所以一般情況下推薦使用英文。
現(xiàn)在我先假定一個具體場景作為例子。
假如某個班級有男生80人,女生20人,共計(jì)100人.目標(biāo)是找出所有女生.
現(xiàn)在某人挑選出50個人,其中20人是女生,另外還錯誤的把30個男生也當(dāng)作女生挑選出來了.
作為評估者的你需要來評估(evaluation)下他的工作
首先我們可以計(jì)算準(zhǔn)確率(accuracy),其定義是: 對于給定的測試數(shù)據(jù)集,分類器正確分類的樣本數(shù)與總樣本數(shù)之比。也就是損失函數(shù)是0-1損失時測試數(shù)據(jù)集上的準(zhǔn)確率[1].
這樣說聽起來有點(diǎn)抽象,簡單說就是,前面的場景中,實(shí)際情況是那個班級有男的和女的兩類,某人(也就是定義中所說的分類器)他又把班級中的人分為男女兩類。accuracy需要得到的是此君分正確的人占總?cè)藬?shù)的比例。很容易,我們可以得到:他把其中70(20女+50男)人判定正確了,而總?cè)藬?shù)是100人,所以它的accuracy就是70 %(70 / 100).
由準(zhǔn)確率,我們的確可以在一些場合,從某種意義上得到一個分類器是否有效,但它并不總是能有效的評價(jià)一個分類器的工作。舉個例子,google抓取了argcv 100個頁面,而它索引中共有10,000,000個頁面,隨機(jī)抽一個頁面,分類下,這是不是argcv的頁面呢?如果以accuracy來判斷我的工作,那我會把所有的頁面都判斷為"不是argcv的頁面",因?yàn)槲疫@樣效率非常高(return false,一句話),而accuracy已經(jīng)到了99.999%(9,999,900/10,000,000),完爆其它很多分類器辛辛苦苦算的值,而我這個算法顯然不是需求期待的,那怎么解決呢?這就是precision,recall和f1-measure出場的時間了.
在說precision,recall和f1-measure之前,我們需要先需要定義TP,FN,FP,TN四種分類情況.
按照前面例子,我們需要從一個班級中的人中尋找所有女生,如果把這個任務(wù)當(dāng)成一個分類器的話,那么女生就是我們需要的,而男生不是,所以我們稱女生為"正類",而男生為"負(fù)類".
| ? | 相關(guān)(Relevant),正類 | 無關(guān)(NonRelevant),負(fù)類 |
| 被檢索到(Retrieved) | true positives(TP 正類判定為正類,例子中就是正確的判定"這位是女生") | false positives(FP 負(fù)類判定為正類,"存?zhèn)?#34;,例子中就是分明是男生卻判斷為女生,當(dāng)下偽娘橫行,這個錯常有人犯) |
| 未被檢索到(Not Retrieved) | false negatives(FN 正類判定為負(fù)類,"去真",例子中就是,分明是女生,這哥們卻判斷為男生--梁山伯同學(xué)犯的錯就是這個) | true negatives(TN 負(fù)類判定為負(fù)類,也就是一個男生被判斷為男生,像我這樣的純爺們一準(zhǔn)兒就會在此處) |
通過這張表,我們可以很容易得到這幾個值:
TP=20
FP=30
FN=0
TN=50
精確率(precision)的公式是
在例子中就是希望知道此君得到的所有人中,正確的人(也就是女生)占有的比例.所以其precision也就是40%(20女生/(20女生+30誤判為女生的男生)).
召回率(recall)的公式是
在例子中就是希望知道此君得到的女生占本班中所有女生的比例,所以其recall也就是100%(20女生/(20女生+ 0 誤判為男生的女生))
F1值就是精確值和召回率的調(diào)和均值,也就是
例子中 F1-measure 也就是約為 57.143%(
需要說明的是,有人[2]列了這樣個公式
F1-measure認(rèn)為精確率和召回率的權(quán)重是一樣的,但有些場景下,我們可能認(rèn)為精確率會更加重要,調(diào)整參數(shù)a,使用Fa-measure可以幫助我們更好的evaluate結(jié)果.
總結(jié)
以上是生活随笔為你收集整理的系统学习机器学习之算法评估的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习入门需要多久
- 下一篇: java信息管理系统总结_java实现科