Precision,Recall,F1score,Accuracy四個概念容易混淆,這裏作一下解釋。spa
假設一個二分類問題,樣本有正負兩個類別。那麼模型預測的結果和真實標籤的組合就有4種:TP,FP,FN,TN,以下圖所示。這4個分別表示:實際爲正樣本你預測爲正樣本,實際爲負樣本你預測爲正樣本,實際爲正樣本你預測爲負樣本,實際爲負樣本你預測爲負樣本。blog
那麼Precision和Recall表示什麼意思?通常Precision和Recall都是針對某個類而言的,好比正類別的Recall,負類別的Recall等。若是你是10分類,那麼能夠有1這個類別的Precision,2這個類別的Precision,3這個類別的Recall等。而沒有相似所有數據集的Recall或Precision這種說法。ci
Precision表示被分爲正例的示例中實際爲正例的比例,precision=TP/(TP+FP)。即,一個二分類,類別分別命名爲1和2,Precision就表示在類別1中,分對了的數量佔了類別1總數量的多少;同理,也表示在類別2中,分對了的數量佔類別2總數量的多少。那麼這個指標越高,就表示越整齊不混亂。io
正樣本的Precision表示你預測爲正的樣本中有多少預測對了,以下公式。class
正樣本的Recall表示真實標籤爲正的樣本有多少被你預測對了,以下公式。兩者的差異僅在於分母的不一樣。擴展
Recall,又稱「查全率」——仍是查全率好記,也更能體現其實質意義。im
還有一個概念:Accuracy,表示你有多少比例的樣本預測對了,公式以下,分母永遠是所有樣本的數量,很好理解。很容易擴展到多類別的狀況,好比10分類,那麼分子就是第一個類別預測對了多少個+第二個類別預測對了多少個+…+第十個類別預測對了多少個。call
而Accuracy是咱們最多見的評價指標,accuracy = (TP+TN)/(P+N),這個很容易理解,就是被分對的樣本數除以全部的樣本數,一般來講,正確率越高,分類器越好。咱們最常說的就是這個準確率。d3
「召回率」與「準確率」雖然沒有必然的關係(從上面公式中能夠看到),在實際應用中,是相互制約的。要根據實際需求,找到一個平衡點。
當 咱們問檢索系統某一件事的全部細節時(輸入檢索query查詢詞),Recall指:檢索系統能「回憶」起那些事的多少細節,通俗來說就是「回憶的能 力」。「能回憶起來的細節數」 除以 「系統知道這件事的全部細節」,就是「記憶率」,也就是recall——召回率。簡單的,也能夠理解爲查全率。命名
F1score的計算是這樣的:1/F1score = 1/2(1/recall + 1/precision)*,簡單換算後就成了:F1score=2recallprecision/(recall+precision)。一樣F1score也是針對某個樣本而言的。通常而言F1score用來綜合precision和recall做爲一個評價指標。還有F1score的變形,主要是添加一個權重係數能夠根據須要對recall和precision賦予不一樣的權重。