在使用機器學習演算法的過程中,針對不同場景需要不同的評價指標,在這裡對常用的指標進行一個簡單的彙總。
作者:無影隨想
時間:2016年3月。
出處:http://www.zhaokv.com/2016/03/ml-metric.html
聲明:版權所有,轉載請聯繫作者並註明出處
在使用機器學習演算法的過程中,針對不同場景需要不同的評價指標,在這裡對常用的指標進行一個簡單的彙總。
一、分類
1. 精確率與召回率
精確率與召回率多用於二分類問題。精確率(Precision)指的是模型判為正的所有樣本中有多少是真正的正樣本;召回率(Recall)指的是所有正樣本有多少被模型判為正樣本,即召回。設模型輸出的正樣本集合為$A$,真正的正樣本集合為$B$,則有:
$\text{Precision}(A,B)=\frac{|A\bigcap B|}{|A|},\text{Recall}(A,B)=\frac{|A\bigcap B|}{|B|}$。
有時候我們需要在精確率與召回率間進行權衡,一種選擇是畫出精確率-召回率曲線(Precision-Recall Curve),曲線下的面積被稱為AP分數(Average precision score);另外一種選擇是計算$F_{\beta}$分數:
$F_{\beta}=(1+\beta^2)\cdot\frac{\text{precision}\cdot\text{recall}}{\beta^2\cdot\text{precision}+\text{recall}}$。
當$\beta=1$稱為$F_1$分數,是分類與信息檢索中最常用的指標之一。
2. ROC
設模型輸出的正樣本集合為$A$,真正的正樣本集合為$B$,所有樣本集合為$C$,我們稱$\frac{|A\bigcap B|}{|B|}$為真正率(True-positive rate),$\frac{|A- B|}{|C-B|}$為假正率(False-positive rate)。
ROC曲線適用於二分類問題,以假正率為橫坐標,真正率為縱坐標的曲線圖,如:
AUC分數是曲線下的面積(Area under curve),越大意味著分類器效果越好。
3. 對數損失
對數損失(Log loss)亦被稱為邏輯回歸損失(Logistic regression loss)或交叉熵損失(Cross-entropy loss)。
對於二分類問題,設$y\in\{0,1\}$且$p={\rm Pr}(y=1)$,則對每個樣本的對數損失為:
$L_{\rm log}(y,p)=-\log{\rm Pr}(y|p)=-(y\log(p)+(1-y)\log(1-p))$。
可以很容易地將其擴展到多分類問題上。設$Y$為指示矩陣,即當樣本$i$的分類為$k$時$y_{i,k}=1$;設$P$為估計的概率矩陣,即$p_{i,k}={\rm Pr}(t_{i,k}=1)$,則對每個樣本的對數損失為:
$L_{\log}(Y_i,P_i)=-\log{\rm Pr}(Y_i|P_i)=\sum\limits_{k=1}^{K}y_{i,k}\log p_{i,k}$。
4. 鉸鏈損失
鉸鏈損失(Hinge loss)一般用來使“邊緣最大化”(maximal margin)。
鉸鏈損失最開始出現在二分類問題中,假設正樣本被標記為1,負樣本被標記為-1,$y$是真實值,$w$是預測值,則鉸鏈損失定義為:
$L_{\text{Hinge}}(w, y)=\max\{1-wy,0\}=|1-wy|_+$。
然後被擴展到多分類問題,假設$y_w$是對真實分類的預測值,$y_t$是對非真實分類預測中的最大值,則鉸鏈損失定義為:
$L_{\text{Hinge}}(y_w, y_t)=\max\{1+y_t-y_w,0\}$。
註意,二分類情況下的定義並不是多分類情況下定義的特例。
5. 混淆矩陣
混淆矩陣(Confusion Matrix)又被稱為錯誤矩陣,通過它可以直觀地觀察到演算法的效果。它的每一列是樣本的預測分類,每一行是樣本的真實分類(反過來也可以),顧名思義,它反映了分類結果的混淆程度。混淆矩陣$i$行$j$列的原始是原本是類別$i$卻被分為類別$j$的樣本個數,計算完之後還可以對之進行可視化:
6. kappa繫數
kappa繫數(Cohen's kappa)用來衡量兩種標註結果的吻合程度,標註指的是把N個樣本標註為C個互斥類別。計算公式為
$\mathcal{K}=\frac{p_o-p_e}{1-p_e}=1-\frac{1-p_o}{1-p_e}$。
其中$p_o$是觀察到的符合比例,$p_e$是由於隨機性產生的符合比例。當兩種標註結果完全相符時,$\mathcal{K}=1$,越不相符其值越小,甚至是負的。
是不是雲里來霧裡去的,現在舉個慄子,對於50個測試樣本的二分類問題,預測與真實分佈情況如下表:
GROUND | |||
---|---|---|---|
1 | 0 | ||
PREDICT | 1 | 20 | 5 |
0 | 10 | 15 |
預測與真實值相符共有20+15個,則觀察到的符合比例為$p_o=(20+15)/50=0.7$。計算$p_e$比較複雜,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,即$p_e=0.5$,最後求得$\mathcal{K}=\frac{p_o-p_e}{1-p_e}=\frac{0.7-0.5}{1-0.5}=0.4$。
7. 準確率
準確率(Accuracy)衡量的是分類正確的比例。設$\hat{y}_i$是是第$i$個樣本預測類別,$y_i$是真是類別,在$n_{\rm sample}$個測試樣本上的準確率為
${\rm accuracy}=\frac{1}{n_{\rm sample}}\sum\limits_{i=1}^{n_{\rm sample}}1(\hat{y}_i=y_i)$。
其中$1(x)$是indicator function,當預測結果與真實情況完全相符時準確率為1,兩者越不相符準確率越低。
雖然準確率適用範圍很廣,可用於多分類以及多標簽等問題上,但在多標簽問題上很嚴格,在有些情況下區分度較差。
8. 海明距離
海明距離(Hamming Distance)用於需要對樣本多個標簽進行分類的場景。對於給定的樣本$i$,$\hat{y}_{ij}$是對第$j$個標簽的預測結果,${y}_{ij}$是第$j$個標簽的真實結果,$L$是標簽數量,則$\hat{y}_i$與$y_i$間的海明距離為
$D_{Hamming}(\hat{y}_i,y_i)=\frac{1}{L}\sum\limits_{j=1}^L 1(\hat{y}_{ij}\neq y_{ij})$。
其中$1(x)$是indicator function。當預測結果與實際情況完全相符時,距離為0;當預測結果與實際情況完全不符時,距離為1;當預測結果是實際情況的真子集或真超集時,距離介於0到1之間。
我們可以通過對所有樣本的預測情況求平均得到演算法在測試集上的總體表現情況,當標簽數量$L$為1時,它等於1-Accuracy,當標簽數$L>1$時也有較好的區分度,不像準確率那麼嚴格。
9. 傑卡德相似繫數
傑卡德相似繫數( Jaccard similarity coefficients)也是用於需要對樣本多個標簽進行分類的場景。對於給定的樣本$i$,$\hat{y}_i$是預測結果,${y}_i$是真實結果,$L$是標簽數量,則第$i$個樣本的傑卡德相似繫數為
$J(\hat{y}_i,y_i)=\frac{|\hat{y}_i\bigcap y_i|}{|\hat{y_i}\bigcup y_i|}$。
它與海明距離的不同之處在於分母。當預測結果與實際情況完全相符時,繫數為1;當預測結果與實際情況完全不符時,繫數為0;當預測結果是實際情況的真子集或真超集時,距離介於0到1之間。
我們可以通過對所有樣本的預測情況求平均得到演算法在測試集上的總體表現情況,當標簽數量$L$為1時,它等於Accuracy。
10. 多標簽排序
在這節我們介紹一些更精細化的多標簽分類效果衡量工具。設真實標簽分類情況為$y\in\{0, 1\}^{n_\text{samples} \times n_\text{labels}}$,分類器預測情況為$\hat{f}\in\mathbb{R}^{n_\text{samples} \times n_\text{labels}}$。
10.1 涵蓋誤差
涵蓋誤差(Coverage error)計算的是預測結果中平均包含多少真實標簽,適用於二分類問題。涵蓋誤差定義為:
$coverage(y,\hat{f})=\frac{1}{n_\text{samples}}\sum\limits_{i=1}^{n_\text{samples}}\max\limits_{j:y_{ij}=1}\text{rank}_{ij}$,
其中$\text{rank}_{ij}=\left|\left\{k:\hat{f}_{ik}\ge \hat{f}_{ij} \right\}\right|$。可以看到它實際衡量的是真實標簽中有多少排在預測結果的前面。
10.2 標簽排序平均精度
標簽排序平均精度(Label ranking average precision)簡稱LRAP,它比涵蓋誤差更精細:
$LRAP(y,\hat{f})=\frac{1}{n_\text{samples}}\sum\limits_{i=1}^{n_\text{samples}}\frac{1}{|y_i|}\sum\limits_{j:y_{ij}=1}\frac{|\mathcal{L}_{ij}|}{\text{rank}_{ij}}$,
其中$\mathcal{L}_{ij}=\left\{k:y_{ik}=1,\hat{f}_{ik}\ge\hat{f}_{ij}\right\}$,$\text{rank}_{ij}=\left|\left\{k:\hat{f}_{ik}\ge \hat{f}_{ij} \right\}\right|$。
10.3 排序誤差
排序誤差(Ranking loss)進一步精細考慮排序情況:
$ranking(y,\hat{f})=\frac{1}{n_\text{samples}}\sum\limits_{i=1}^{n_\text{samples}}\frac{1}{|y_i|(n_\text{labels}-|y_i|))}\left|\mathcal{L}_{ij} \right|$,
其中$\mathcal{L}_{ij}=\left\{(k,l):\hat{f}_{ik}<\hat{f}_{ij}, y_{ik}=1, y_{il}=0\right\}$。
二、擬合
擬合問題比較簡單,所用到的衡量指標也相對直觀。假設$y_i$是第$i$個樣本的真實值,$\hat{y}_i$是對第$i$個樣本的預測值。
1. 平均絕對誤差
平均絕對誤差MAE(Mean Absolute Error)又被稱為$l1$範數損失($l1$-norm loss):
${\rm MAE}(y, \hat{y})=\frac{1}{n_{\rm samples}}\sum\limits_{i=1}^{n_{\rm samples}}|y_i-\hat{y}_i|$。
2. 平均平方誤差
平均平方誤差MSE(Mean Squared Error)又被稱為$l2$範數損失($l2$-norm loss):
${\rm MSE}(y, \hat{y})=\frac{1}{n_{\rm samples}}\sum\limits_{i=1}^{n_{\rm samples}}(y_i-\hat{y}_i)^2$。
3. 解釋變異
解釋變異( Explained variance)是根據誤差的方差計算得到的:
${\rm explained variance}(y,\hat{y})=1-\frac{{\rm Var}\{y-\hat{y}\}}{{\rm Var}{y}}$。
4. 決定繫數
決定繫數(Coefficient of determination)又被稱為$R^2$分數:
$R^2(y,\hat{y})=1-\frac{\sum_{i=1}^{n_{\rm samples}}(y_i-\hat{y}_i)^2}{\sum_{i=1}^{n_{\rm samples}}(y_i-\bar{y})^2}$,
其中$\bar{y}=\frac{1}{n_{\rm samples}}\sum_{i=1}^{n_{\rm samples}}y_i$。
三、聚類
1 . 蘭德指數
蘭德指數(Rand index)需要給定實際類別信息$C$,假設$K$是聚類結果,$a$表示在$C$與$K$中都是同類別的元素對數,$b$表示在$C$與$K$中都是不同類別的元素對數,則蘭德指數為:
${\rm RI}=\frac{a+b}{C_2^{n_{\rm samples}}}$,
其中$C_2^{n_{\rm samples}}$數據集中可以組成的總元素對數,RI取值範圍為$[0,1]$,值越大意味著聚類結果與真實情況越吻合。
對於隨機結果,RI並不能保證分數接近零。為了實現“在聚類結果隨機產生的情況下,指標應該接近零”,調整蘭德繫數(Adjusted rand index)被提出,它具有更高的區分度:
${\rm ARI}=\frac{{\rm RI}-E[{\rm RI}]}{\max({\rm RI})-E[{\rm RI}]}$,
具體計算方式參見Adjusted Rand index。
ARI取值範圍為$[-1,1]$,值越大意味著聚類結果與真實情況越吻合。從廣義的角度來講,ARI衡量的是兩個數據分佈的吻合程度。
2. 互信息
互信息(Mutual Information)也是用來衡量兩個數據分佈的吻合程度。假設$U$與$V$是對$N$個樣本標簽的分配情況,則兩種分佈的熵(熵表示的是不確定程度)分別為:
$H(U)=\sum\limits_{i=1}^{|U|}P(i)\log (P(i)), H(V)=\sum\limits_{j=1}^{|V|}P'(j)\log (P'(j))$,
其中$P(i)=|U_i|/N,P'(j)=|V_j|/N$。$U$與$V$之間的互信息(MI)定義為:
${\rm MI}(U,V)=\sum\limits_{i=1}^{|U|}\sum\limits_{j=1}^{|V|}P(i,j)\log\left ( \frac{P(i,j)}{P(i)P'(j)}\right )$,
其中$P(i,j)=|U_i\bigcap V_j|/N$。標準化後的互信息(Normalized mutual information)為:
${\rm NMI}(U,V)=\frac{{\rm MI}(U,V)}{\sqrt{H(U)H(V)}}$。
與ARI類似,調整互信息(Adjusted mutual information)定義為:
${\rm AMI}=\frac{{\rm MI}-E[{\rm MI}]}{\max(H(U), H(V))-E[{\rm MI}]}$。
利用基於互信息的方法來衡量聚類效果需要實際類別信息,MI與NMI取值範圍為$[0,1]$,AMI取值範圍為$[-1,1]$,它們都是值越大意味著聚類結果與真實情況越吻合。
3. 輪廓繫數
輪廓繫數(Silhouette coefficient)適用於實際類別信息未知的情況。對於單個樣本,設$a$是與它同類別中其他樣本的平均距離,$b$是與它距離最近不同類別中樣本的平均距離,輪廓繫數為:
$s=\frac{b-a}{\max(a,b)}$。
對於一個樣本集合,它的輪廓繫數是所有樣本輪廓繫數的平均值。
輪廓繫數取值範圍是$[-1,1]$,同類別樣本越距離相近且不同類別樣本距離越遠,分數越高。
四、信息檢索
信息檢索評價是對信息檢索系統性能(主要滿足用戶信息需求的能力)進行評估,與機器學習也有較大的相關性,感興趣的可以參考這篇不錯的博文。
四、總結
上面介紹了非常多的指標,實際應用中需要根據具體問題選擇合適的衡量指標。那麼具體工作中如何快速使用它們呢?優秀的Python機器學習開源項目Scikit-learn實現了上述絕指標的大多數,使用起來非常方便。