最近在看機器學習的,要理解準確率、精確率、召回率的含義,首先要理解 tp、fn、ft 和 tn 的含義。 tp、fn、ft 和 tn 這幾個概念一直搞得不太清楚。記錄一下。看了別人的文章,舉的例子不是太好,不太容易理解 。
假設有100個人,實際上50個人喝酒了,50個人沒喝。我們有乙個判定是否喝酒的模型,通過這個模型我們的判定結果如下:
60個人喝了(其中 40 個人是真正喝了酒的); 40 個人沒喝(其中10個人其實是喝了的)。
那麼前面 4個名詞中,第乙個字母 t 和 f 表示的意思是我們**的是不是正確。**是喝了酒的為 p,**沒喝酒的為n。那麼此例中這個概念的混淆矩陣如下:
tp: **喝了酒(p),實際喝了酒,**正確(t)
fp: **喝了酒(p),實際沒喝酒,**錯誤(f)
fn: **沒喝酒(n),實際喝了酒,**錯誤(f)
tn: **沒喝酒(n),實際沒喝酒,**正確(t)
那麼:準確率(accuracy): 就是判斷正確的佔總數的比例。
accuracy=(tp+tn) / (tp+fp+tn+fn) = (40+30)/100 = 70%
雖然準確率能夠判斷總的正確率,但是在樣本不均衡的情況下,並不能作為很好的指標來衡量結果。
比如在樣本集中,正樣本有90個,負樣本有10個,樣本是嚴重的不均衡。對於這種情況,我們只需要將全部樣本**為正樣本,就能得到90%的準確率,但是完全沒有意義。對於新資料,完全體現不出準確率。因此,在樣本不平衡的情況下,得到的高準確率沒有任何意義,此時準確率就會失效。所以,我們需要尋找新的指標來評價模型的優劣。
精確率(precision): 是針對**結果而言的,其含義是在被所有**為正的樣本中實際為正樣本的概率。精確率代表對正樣本結果中的**準確程度。
p=tp / (tp+fp) = 40/(40+20) = 66.7% 此例中表示**喝酒的人數中有多少人是真正喝酒的比例。
召回率(recall): 召回率是覆蓋面的度量。衡量了分類器對正例的識別能力。也叫查全率。
r=tp / (tp+fn)= 40/(40+10) = 80% 此例中表示我們**出的喝酒的人數佔真正喝酒的人數的比例。
綜合評價指標:
精確率和召回率又被叫做查準率和查全率,可以通過p-r圖進行表示
如何理解p-r(精確率-召回率)曲線呢?或者說這些曲線是根據什麼變化呢?
以邏輯回歸舉例,其輸出值是0-1之間的數字。因此,如果我們想要判斷使用者的好壞,那麼就必須定乙個閾值。比如大於0.5指定為好使用者,小於0.5指定為壞使用者,然後就可以得到相應的精確率和召回率。但問題是,這個閾值是我們隨便定義的,並不知道這個閾值是否符合我們的要求。因此為了尋找乙個合適的閾值,我們就需要遍歷0-1之間所有的閾值,而每個閾值都對應乙個精確率和召回率,從而就能夠得到上述曲線。
根據上述的p-r曲線,怎麼判斷最好的閾值點呢?首先我們先明確目標,我們希望精確率和召回率都很高,但實際上是矛盾的,上述兩個指標是矛盾體,無法做到雙高。因此,選擇合適的閾值點,就需要根據實際問題需求,比如我們想要很高的精確率,就要犧牲掉一些召回率。想要得到很高的召回率,就要犧牲掉一些精準率。因此我們就需要綜合考慮他們,最常見的方法就是f-measure(又稱為f-score)。
f-measure是precision和recall加權調和平均:
當a 取 1時,就是 f1分數(f1-score)。f1分數同時考慮精確率和召回率,讓兩者同時達到最高,取得平衡。
另外roc 、auc 曲線見
準確率 精確率 召回率
準確率 accuracy 精確率 precision 和召回率 recall 2 是資訊檢索,人工智慧,和搜尋引擎的設計中很重要的幾個概念和指標。中文中這幾個評價指標翻譯各有不同,所以一般情況下推薦使用英文。先假定乙個具體場景作為例子。假如某個班級有男生80人,女生20人,共計100人.目標是找出所...
精確率 召回率 準確率
精確率是針對我們 結果而言的,它表示的是 為正的樣本中有多少是真正的正樣本。那麼 為正就有兩種可能了,一種就是把正類 為正類 tp 另一種就是把負類 為正類 fp 也就是 召回率是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被 正確了。那也有兩種可能,一種是把原來的正類 成正類 tp 另一...
準確率 精確率 召回率筆記
正項資料 負項資料 為正項 positives true positive tp 正項資料被 為正項的數量 false positive fp 負項資料被 成正項的數量 為負項 negatives false negative fn 正項資料被 為負項的數量 true negative tn 負項資...