以前一直記不熟各類指標的具體計算,本文準備完全搞定這個問題,涵蓋目前遇到過的全部評價指標。markdown
首先是true-false和positive-negative這兩對詞。以二分類爲例:函數
positive和negative指的是預測的分類是正樣本仍是負樣本,true和false指的是預測結果是對的仍是錯的。spa
所以:ci
實際類別\預測類別 | 正樣本 | 負樣本 |
---|---|---|
正樣本 | TP | FN |
負樣本 | FP | TN |
基於這些數值能夠計算各項指標:it
\[ A C C=\frac{T P+T N}{T P+T N+F P+F N} \]io
分子爲全部正確預測了的樣本數目(即正樣本被預測爲正,負樣本被預測爲負),分母爲全部樣本總數。table
Accuracy表明了全部樣本中,被正確預測的樣本所佔的比例。class
其缺陷在於,當正負樣本嚴重不均衡的時候沒法反映出模型的真實水平。方法
\[ P=\frac{T P}{T P+F P} \]call
分子爲正樣本被預測爲正的個數,分母爲全部被預測爲正的個數。
Precision表明了被預測爲正的樣本中,真的是正樣本的比例。又叫查準率。
\[ \operatorname{Recall}=\frac{T P}{T P+F N} \]
分子爲正被預測爲正,分母爲正樣本的總數。
Recall表明了全部正樣本中,被正確預測爲正樣本的比例。
Recall通常被稱爲召回率,,又叫Sensitivity,又叫查全率 ,它和一些傳統方法中所說的正檢率是一個概念。
上述的Sensitivity對應的有Specificity:
\[ \operatorname{Specificity}=\frac{T N}{FP+TN} \]
表明實際負樣本中被預測爲負的比例。
\[ \mathrm{F} 1=\frac{2 * P * R}{P+R} \]
f1-score是對precision和recall的調和平均值。
正檢率(P_d):正樣本被正確檢測到的機率,即recall。
漏警率(P_m):正樣本沒有被預測爲正的機率,即1-P_d,即1-recall。
虛警率(P_f):負樣本被預測爲正的機率,即1-Specificity。
爲了更簡單清楚的說明,用P和N表示預測結果是正和負,用P^和N^表示正樣本和負樣本。不用*號的緣由是我不想在markdown裏打一堆轉義符。咱們有P+N=P^+N^。
對於一個正常的識別模型,P中大多數應當是P^,小部分是N^;一樣N中大多應當是N^,小部分是P^。
Precision和recall是互相矛盾的一對指標。直觀地理解,precision爲全部P中P^的比例,要想提升這個比例,須要更加嚴格的篩選,更嚴格的篩選意味着,模型只會將那些預測機率很是高的樣本預測爲P,顯然這會更多地篩選掉實際爲N^的P,剩下的P中P^。而對於recall,recall表明P^中P的比例,更加嚴格的篩選會致使,一些P^的樣本沒有被預測爲P,從而致使recall降低。
同理,正檢率與虛警率成正相關關係。
ROC曲線即縱軸爲正檢率,橫軸爲虛警率。
懶得放示意圖了,簡單描述一下,通常爲從左下到右上的凹函數(注意凹函數的定義),區間爲(0,0),(1,1)的正方形區域內。評估方法爲計算曲線下積分面積,即AUC。
對於瞎猜模型,ROC曲線應當是一條從(0,0)到(1,1)的對角直線,故AUC爲0.5。
對於一個正常的模型,AUC應當在0.5到1之間。越大越好。
相似地,PR曲線縱軸爲precision,橫軸爲recall。
PR曲線通常爲從左上到右下的凹函數,區間一樣在(0,0),(1,1)的正方形區域。評估方法一樣爲計算曲線下積分值,稱爲AP值,對於多個分類,取平均,稱爲mAP值。