http://charleshm.github.io/
在使用機器學習算法的過程中,針對不同場景需要不同的評價指標,在這里對常用的指標進行一個簡單的匯總。
一、分類
1. 精確率與召回率
精確率與召回率多用於二分類問題。精確率(Precision)指的是模型判為正的所有樣本中有多少是真正的正樣本;召回率(Recall)指的是所有正樣本有多少被模型判為正樣本,即召回。設模型輸出的正樣本集合為AA,真正的正樣本集合為BB,則有:
Precision(A,B)=∥A⋂B∥∥A∥,Recall(A,B)=∥A⋂B∥∥B∥Precision(A,B)=‖A⋂B‖‖A‖,Recall(A,B)=‖A⋂B‖‖B‖。
有時候我們需要在精確率與召回率間進行權衡,一種選擇是畫出精確率-召回率曲線(Precision-Recall Curve),曲線下的面積被稱為AP分數(Average precision score);另外一種選擇是計算FβFβ分數:
Fβ=(1+β2)⋅precision⋅recallβ2⋅precision+recallFβ=(1+β2)⋅precision⋅recallβ2⋅precision+recall。
當β=1β=1稱為F1F1分數,是分類與信息檢索中最常用的指標之一。
2. ROC
設模型輸出的正樣本集合為AA,真正的正樣本集合為BB,所有樣本集合為CC,我們稱∥A⋂B∥∥B∥‖A⋂B‖‖B‖為真正率(True-positive rate),∥A−B∥∥C−B∥‖A−B‖‖C−B‖為假正率(False-positive rate)。
ROC曲線適用於二分類問題,以假正率為橫坐標,真正率為縱坐標的曲線圖,如:
AUC分數是曲線下的面積(Area under curve),越大意味着分類器效果越好。
3. 對數損失
對數損失(Log loss)亦被稱為邏輯回歸損失(Logistic regression loss)或交叉熵損失(Cross-entropy loss)。
對於二分類問題,設y∈{0,1}y∈{0,1}且p=Pr(y=1)p=Pr(y=1),則對每個樣本的對數損失為:
Llog(y,p)=−logPr(y∥p)=−(ylog(p)+(1−y)log(1−p))Llog(y,p)=−logPr(y‖p)=−(ylog(p)+(1−y)log(1−p))。
可以很容易地將其擴展到多分類問題上。設YY為指示矩陣,即當樣本ii的分類為kk時yi,k=1yi,k=1;設PP為估計的概率矩陣,即pi,k=Pr(ti,k=1)pi,k=Pr(ti,k=1),則對每個樣本的對數損失為:
Llog(Yi,Pi)=−logPr(Yi∥Pi)=∑k=1Kyi,klogpi,kLlog(Yi,Pi)=−logPr(Yi‖Pi)=∑k=1Kyi,klogpi,k。
4. 鉸鏈損失
鉸鏈損失(Hinge loss)一般用來使“邊緣最大化”(maximal margin)。
鉸鏈損失最開始出現在二分類問題中,假設正樣本被標記為1,負樣本被標記為-1,yy是真實值,ww是預測值,則鉸鏈損失定義為:
LHinge(w,y)=max{1−wy,0}=∥1−wy∥+LHinge(w,y)=max{1−wy,0}=‖1−wy‖+。
然后被擴展到多分類問題,假設ywyw是對真實分類的預測值,ytyt是對非真實分類預測中的最大值,則鉸鏈損失定義為:
LHinge(yw,yt)=max{1+yt−yw,0}LHinge(yw,yt)=max{1+yt−yw,0}。
注意,二分類情況下的定義並不是多分類情況下定義的特例。
5. 混淆矩陣
混淆矩陣(Confusion Matrix)又被稱為錯誤矩陣,通過它可以直觀地觀察到算法的效果。它的每一列是樣本的預測分類,每一行是樣本的真實分類(反過來也可以),顧名思義,它反映了分類結果的混淆程度。混淆矩陣ii行jj列的原始是原本是類別ii卻被分為類別jj的樣本個數,計算完之后還可以對之進行可視化:
6. kappa系數
kappa系數(Cohen’s kappa)用來衡量兩種標注結果的吻合程度,標注指的是把N個樣本標注為C個互斥類別。計算公式為
K=po−pe1−pe=1−1−po1−peK=po−pe1−pe=1−1−po1−pe。
其中popo是觀察到的符合比例,pepe是由於隨機性產生的符合比例。當兩種標注結果完全相符時,K=1K=1,越不相符其值越小,甚至是負的。
是不是雲里來霧里去的,現在舉個栗子,對於50個測試樣本的二分類問題,預測與真實分布情況如下表:
GROUND | |||
---|---|---|---|
1 | 0 | ||
PREDICT | 1 | 20 | 5 |
0 | 10 | 15 |
預測與真實值相符共有20+15個,則觀察到的符合比例為po=(20+15)/50=0.7po=(20+15)/50=0.7。計算pepe比較復雜,PREDICT預測為1的比例為0.5,GROUND中1的比例為0.6,從完全隨機的角度來看,PREDICT與GROUND均為1的概率為0.5 * 0.6 = 0.3,PREDICT與GROUND均為0的概率為0.5 * 0.4 = 0.2,則PREDICT與GROUND由於隨機性產生的符合比例為0.2 + 0.3 = 0.5,即pe=0.5pe=0.5,最后求得K=po−pe1−pe=0.7−0.51−0.5=0.4K=po−pe1−pe=0.7−0.51−0.5=0.4。
7. 准確率
准確率(Accuracy)衡量的是分類正確的比例。設y^iy^i是是第ii個樣本預測類別,yiyi是真是類別,在nsamplensample個測試樣本上的准確率為
accuracy=1nsample∑i=1nsample1(y^i=yi)accuracy=1nsample∑i=1nsample1(y^i=yi)。
其中1(x)1(x)是indicator function,當預測結果與真實情況完全相符時准確率為1,兩者越不相符准確率越低。
雖然准確率適用范圍很廣,可用於多分類以及多標簽等問題上,但在多標簽問題上很嚴格,在有些情況下區分度較差。
8. 海明距離
海明距離(Hamming Distance)用於需要對樣本多個標簽進行分類的場景。對於給定的樣本ii,y^ijy^ij是對第jj個標簽的預測結果,yijyij是第jj個標簽的真實結果,LL是標簽數量,則y^iy^i與yiyi間的海明距離為
DHamming(y^i,yi)=1L∑j=1L1(y^ij≠yij)DHamming(y^i,yi)=1L∑j=1L1(y^ij≠yij)。
其中1(x)1(x)是indicator function。當預測結果與實際情況完全相符時,距離為0;當預測結果與實際情況完全不符時,距離為1;當預測結果是實際情況的真子集或真超集時,距離介於0到1之間。
我們可以通過對所有樣本的預測情況求平均得到算法在測試集上的總體表現情況,當標簽數量LL為1時,它等於1-Accuracy,當標簽數L>1L>1時也有較好的區分度,不像准確率那么嚴格。
9. 傑卡德相似系數
傑卡德相似系數( Jaccard similarity coefficients)也是用於需要對樣本多個標簽進行分類的場景。對於給定的樣本ii,y^iy^i是預測結果,yiyi是真實結果,LL是標簽數量,則第ii個樣本的傑卡德相似系數為
J(y^i,yi)=∥y^i⋂yi∥∥yi^⋃yi∥J(y^i,yi)=‖y^i⋂yi‖‖yi^⋃yi‖。
它與海明距離的不同之處在於分母。當預測結果與實際情況完全相符時,系數為1;當預測結果與實際情況完全不符時,系數為0;當預測結果是實際情況的真子集或真超集時,距離介於0到1之間。
我們可以通過對所有樣本的預測情況求平均得到算法在測試集上的總體表現情況,當標簽數量LL為1時,它等於Accuracy。
10. 多標簽排序
在這節我們介紹一些更精細化的多標簽分類效果衡量工具。設真實標簽分類情況為y∈{0,1}nsamples×nlabelsy∈{0,1}nsamples×nlabels,分類器預測情況為f^∈Rnsamples×nlabelsf^∈Rnsamples×nlabels。
10.1 涵蓋誤差
涵蓋誤差(Coverage error)計算的是預測結果中平均包含多少真實標簽,適用於二分類問題。涵蓋誤差定義為:
coverage(y,f^)=1nsamples∑i=1nsamplesmaxj:yij=1rankijcoverage(y,f^)=1nsamples∑i=1nsamplesmaxj:yij=1rankij,
其中rankij=∥∥{k:f^ik≥f^ij}∥∥rankij=‖{k:f^ik≥f^ij}‖。可以看到它實際衡量的是真實標簽中有多少排在預測結果的前面。
10.2 標簽排序平均精度
標簽排序平均精度(Label ranking average precision)簡稱LRAP,它比涵蓋誤差更精細:
LRAP(y,f^)=1nsamples∑i=1nsamples1∥yi∥∑j:yij=1∥Lij∥rankijLRAP(y,f^)=1nsamples∑i=1nsamples1‖yi‖∑j:yij=1‖Lij‖rankij,
其中Lij={k:yik=1,f^ik≥f^ij}Lij={k:yik=1,f^ik≥f^ij},rankij=∥∥{k:f^ik≥f^ij}∥∥rankij=‖{k:f^ik≥f^ij}‖。
10.3 排序誤差
排序誤差(Ranking loss)進一步精細考慮排序情況:
ranking(y,f^)=1nsamples∑i=1nsamples1∥yi∥(nlabels−∥yi∥))∥Lij∥ranking(y,f^)=1nsamples∑i=1nsamples1‖yi‖(nlabels−‖yi‖))‖Lij‖,
其中Lij={(k,l):f^ik<f^ij,yik=1,yil=0}Lij={(k,l):f^ik<f^ij,yik=1,yil=0}。
二、回歸
擬合問題比較簡單,所用到的衡量指標也相對直觀。假設yiyi是第ii個樣本的真實值,y^iy^i是對第ii個樣本的預測值。
1. 平均絕對誤差
平均絕對誤差MAE(Mean Absolute Error)又被稱為l1l1范數損失(l1l1-norm loss):
MAE(y,y^)=1nsamples∑i=1nsamples∥yi−y^i∥MAE(y,y^)=1nsamples∑i=1nsamples‖yi−y^i‖。
2. 平均平方誤差
MSE(y,y^)=1nsamples∑i=1nsamples(yi−y^i)2MSE(y,y^)=1nsamples∑i=1nsamples(yi−y^i)2。
3. 解釋變異
explained variance(y,y^)=1−Var{y−y^}Var{y}explained variance(y,y^)=1−Var{y−y^}Var{y}。
4. 決定系數
決定系數(Coefficient of determination)又被稱為R2R2分數:
R2(y,y^)=1−∑nsamplesi=1(yi−y^i)2∑nsamplesi=1(yi−y¯)2R2(y,y^)=1−∑i=1nsamples(yi−y^i)2∑i=1nsamples(yi−y¯)2,
其中y¯=1nsamples∑nsamplesi=1yiy¯=1nsamples∑i=1nsamplesyi。
三、聚類
1 . 蘭德指數
蘭德指數(Rand index)需要給定實際類別信息CC,假設KK是聚類結果,aa表示在CC與KK中都是同類別的元素對數,bb表示在CC與KK中都是不同類別的元素對數,則蘭德指數為:
RI=a+bCnsamples2RI=a+bC2nsamples,
其中Cnsamples2C2nsamples數據集中可以組成的總元素對數,RI取值范圍為[0,1][0,1],值越大意味着聚類結果與真實情況越吻合。
對於隨機結果,RI並不能保證分數接近零。為了實現“在聚類結果隨機產生的情況下,指標應該接近零”,調整蘭德系數(Adjusted rand index)被提出,它具有更高的區分度:
ARI=RI−E[RI]max(RI)−E[RI]ARI=RI−E[RI]max(RI)−E[RI],
具體計算方式參見Adjusted Rand index。
ARI取值范圍為[−1,1][−1,1],值越大意味着聚類結果與真實情況越吻合。從廣義的角度來講,ARI衡量的是兩個數據分布的吻合程度。
2. 互信息
互信息(Mutual Information)也是用來衡量兩個數據分布的吻合程度。假設UU與VV是對NN個樣本標簽的分配情況,則兩種分布的熵(熵表示的是不確定程度)分別為:
H(U)=∑i=1∥U∥P(i)log(P(i)),H(V)=∑j=1∥V∥P′(j)log(P′(j))H(U)=∑i=1‖U‖P(i)log(P(i)),H(V)=∑j=1‖V‖P′(j)log(P′(j)),
其中P(i)=∥Ui∥/N,P′(j)=∥Vj∥/NP(i)=‖Ui‖/N,P′(j)=‖Vj‖/N。UU與VV之間的互信息(MI)定義為:
MI(U,V)=∑i=1∥U∥∑j=1∥V∥P(i,j)log(P(i,j)P(i)P′(j))MI(U,V)=∑i=1‖U‖∑j=1‖V‖P(i,j)log(P(i,j)P(i)P′(j)),
其中P(i,j)=∥Ui⋂Vj∥/NP(i,j)=‖Ui⋂Vj‖/N。標准化后的互信息(Normalized mutual information)為:
NMI(U,V)=MI(U,V)H(U)H(V)√NMI(U,V)=MI(U,V)H(U)H(V)。
與ARI類似,調整互信息(Adjusted mutual information)定義為:
AMI=MI−E[MI]max(H(U),H(V))−E[MI]AMI=MI−E[MI]max(H(U),H(V))−E[MI]。
利用基於互信息的方法來衡量聚類效果需要實際類別信息,MI與NMI取值范圍為[0,1][0,1],AMI取值范圍為[−1,1][−1,1],它們都是值越大意味着聚類結果與真實情況越吻合。
3. 輪廓系數
輪廓系數(Silhouette coefficient)適用於實際類別信息未知的情況。對於單個樣本,設aa是與它同類別中其他樣本的平均距離,bb是與它距離最近不同類別中樣本的平均距離,輪廓系數為:
s=b−amax(a,b)s=b−amax(a,b)。
對於一個樣本集合,它的輪廓系數是所有樣本輪廓系數的平均值。
輪廓系數取值范圍是[−1,1][−1,1],同類別樣本越距離相近且不同類別樣本距離越遠,分數越高。
四、信息檢索
信息檢索評價是對信息檢索系統性能(主要滿足用戶信息需求的能力)進行評估,與機器學習也有較大的相關性,感興趣的可以參考這篇不錯的博文。
五、總結
上面介紹了非常多的指標,實際應用中需要根據具體問題選擇合適的衡量指標。那么具體工作中如何快速使用它們呢?優秀的Python機器學習開源項目Scikit-learn實現了上述絕指標的大多數,使用起來非常方便。