出處:http://www.zhaokv.com/2016/03/ml-metric.html
在使用機器學習算法的過程中,針對不同場景需要不同的評價指標,在這裏對常用的指標進行一個簡單的彙總。
一、分類
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(Mean Squared Error)又被稱爲l2l2範數損失(l2l2-norm
loss):
MSE(y,y^)=1nsamples∑i=1nsamples(yi−y^i)2MSE(y,y^)=1nsamples∑i=1nsamples(yi−y^i)2。
3. 解釋變異
解釋變異( Explained variance)是根據誤差的方差計算得到的:
explainedvariance(y,y^)=1−Var{y−y^}Varyexplainedvariance(y,y^)=1−Var{y−y^}Vary。
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實現了上述絕指標的大多數,使用起來非常方便。