在使用機器學習算法過程中,針對不同的問題需要不用的模型評估標准,這里統一匯總。主要以兩大類分類與回歸分別闡述。
一、分類問題
1、混淆矩陣
混淆矩陣是監督學習中的一種可視化工具,主要用於比較分類結果和實例的真實信息。矩陣中的每一行代表實例的預測類別,每一列代表實例的真實類別。
真正(True Positive , TP):被模型預測為正的正樣本。 假正(False Positive , FP):被模型預測為正的負樣本。 假負(False Negative , FN):被模型預測為負的正樣本。 真負(True Negative , TN):被模型預測為負的負樣本。 真正率(True Positive Rate,TPR):TPR=TP/(TP+FN),即被預測為正的正樣本數 /正樣本實際數。 假正率(False Positive Rate,FPR) :FPR=FP/(FP+TN),即被預測為正的負樣本數 /負樣本實際數。 假負率(False Negative Rate,FNR) :FNR=FN/(TP+FN),即被預測為負的正樣本數 /正樣本實際數。 真負率(True Negative Rate,TNR):TNR=TN/(TN+FP),即被預測為負的負樣本數 /負樣本實際數/2
2、准確率(Accuracy)
准確率是最常用的分類性能指標。
Accuracy = (TP+TN)/(TP+FN+FP+TN)
即正確預測的正反例數 /總數
3、精確率(Precision)
精確率容易和准確率被混為一談。其實,精確率只是針對預測正確的正樣本而不是所有預測正確的樣本。表現為預測出是正的里面有多少真正是正的。可理解為查准率。
Precision = TP/(TP+FP)
即正確預測的正例數 /預測正例總數
4、召回率(Recall)
召回率表現出在實際正樣本中,分類器能預測出多少。與真正率相等,可理解為查全率。
Recall = TP/(TP+FN),即正確預測的正例數 /實際正例總數
5、F1 score
F值是精確率和召回率的調和值,更接近於兩個數較小的那個,所以精確率和召回率接近時,F值最大。很多推薦系統的評測指標就是用F值的。
2/F1 = 1/Precision + 1/Recall
6、ROC曲線
邏輯回歸里面,對於正負例的界定,通常會設一個閾值,大於閾值的為正類,小於閾值為負類。如果我們減小這個閥值,更多的樣本會被識別為正類,提高正類的識別率,但同時也會使得更多的負類被錯誤識別為正類。為了直觀表示這一現象,引入ROC。根據分類結果計算得到ROC空間中相應的點,連接這些點就形成ROC curve,橫坐標為False Positive Rate(FPR假正率),縱坐標為True Positive Rate(TPR真正率)。一般情況下,這個曲線都應該處於(0,0)和(1,1)連線的上方,如圖:
ROC曲線中的四個點和一條線: 點(0,1):即FPR=0, TPR=1,意味着FN=0且FP=0,將所有的樣本都正確分類。 點(1,0):即FPR=1,TPR=0,最差分類器,避開了所有正確答案。 點(0,0):即FPR=TPR=0,FP=TP=0,分類器把每個實例都預測為負類。 點(1,1):分類器把每個實例都預測為正類。 總之:ROC曲線越接近左上角,該分類器的性能越好。而且一般來說,如果ROC是光滑的,那么基本可以判斷沒有太大的overfitting
7、AUC
AUC(Area Under Curve)被定義為ROC曲線下的面積(ROC的積分),通常大於0.5小於1。隨機挑選一個正樣本以及一個負樣本,分類器判定正樣本的值高於負樣本的概率就是 AUC 值。AUC值(面積)越大的分類器,性能越好,如圖:
8、PR曲線
PR曲線的橫坐標是精確率P,縱坐標是召回率R。評價標准和ROC一樣,先看平滑不平滑(藍線明顯好些)。一般來說,在同一測試集,上面的比下面的好(綠線比紅線好)。當P和R的值接近時,F1值最大,此時畫連接(0,0)和(1,1)的線,線和PRC重合的地方的F1是這條線最大的F1(光滑的情況下),此時的F1對於PRC就好像AUC對於ROC一樣。一個數字比一條線更方便調型。
有時候模型沒有單純的誰比誰好(比如圖二的藍線和青線),所以選擇模型還是要結合具體的使用場景。下面是兩個場景: 1,地震的預測 對於地震的預測,我們希望的是RECALL非常高,也就是說每次地震我們都希望預測出來。這個時候我們可以犧牲PRECISION。情願發出1000次警報,把10次地震都預測正確了,也不要預測100次對了8次漏了兩次。 2,嫌疑人定罪 基於不錯怪一個好人的原則,對於嫌疑人的定罪我們希望是非常准確的。即時有時候放過了一些罪犯(recall低),但也是值得的。 對於分類器來說,本質上是給一個概率,此時,我們再選擇一個CUTOFF點(閥值),高於這個點的判正,低於的判負。那么這個點的選擇就需要結合你的具體場景去選擇。反過來,場景會決定訓練模型時的標准,比如第一個場景中,我們就只看RECALL=99.9999%(地震全中)時的PRECISION,其他指標就變得沒有了意義。
當正負樣本數量差距不大的情況下,ROC和PR的趨勢是差不多的,但是在正負樣本分布極不均衡的情況下,PRC比ROC更能真實的反映出實際情況,因為此時ROC曲線看起來似乎很好,但是卻在PR上效果一般。
二、回歸問題
擬合(回歸)問題比較簡單,所用到的衡量指標也相對直觀。假設yiyi是第ii個樣本的真實值,ŷ iy^i是對第ii個樣本的預測值。
1. 平均絕對誤差(MAE)
平均絕對誤差MAE(Mean Absolute Error)又被稱為l1范數損失(l1-norm loss):
2. 平均平方誤差(MSE)
平均平方誤差MSE(Mean Squared Error)又被稱為l2范數損失(l2-norm loss):
3、均方根誤差(RMSE)
RMSE雖然廣為使用,但是其存在一些缺點,因為它是使用平均誤差,而平均值對異常點(outliers)較敏感,如果回歸器對某個點的回歸值很不理性,那么它的誤差則較大,從而會對RMSE的值有較大影響,即平均值是非魯棒的。
4、解釋變異
解釋變異( Explained variance)是根據誤差的方差計算得到的:
5、決定系數
決定系數(Coefficient of determination)又被稱為R2分數:
三、聚類
1 . 蘭德指數
蘭德指數(Rand index)需要給定實際類別信息C,假設K是聚類結果,a表示在C與K中都是同類別的元素對數,b表示在C與K中都是不同類別的元素對數,則蘭德指數為:
其中數據集中可以組成的總元素對數,RI取值范圍為[0,1],值越大意味着聚類結果與真實情況越吻合。
對於隨機結果,RI並不能保證分數接近零。為了實現“在聚類結果隨機產生的情況下,指標應該接近零”,調整蘭德系數(Adjusted rand index)被提出,它具有更高的區分度:
具體計算方式參見Adjusted Rand index。
ARI取值范圍為[−1,1],值越大意味着聚類結果與真實情況越吻合。從廣義的角度來講,ARI衡量的是兩個數據分布的吻合程度。
2. 互信息
互信息(Mutual Information)也是用來衡量兩個數據分布的吻合程度。假設UU與VV是對NN個樣本標簽的分配情況,則兩種分布的熵(熵表示的是不確定程度)分別為:
利用基於互信息的方法來衡量聚類效果需要實際類別信息,MI與NMI取值范圍為[0,1],AMI取值范圍為[−1,1],它們都是值越大意味着聚類結果與真實情況越吻合。
3. 輪廓系數
輪廓系數(Silhouette coefficient)適用於實際類別信息未知的情況。對於單個樣本,設aa是與它同類別中其他樣本的平均距離,bb是與它距離最近不同類別中樣本的平均距離,輪廓系數為:
對於一個樣本集合,它的輪廓系數是所有樣本輪廓系數的平均值。
輪廓系數取值范圍是[−1,1][−1,1],同類別樣本越距離相近且不同類別樣本距離越遠,分數越高。
四、信息檢索
信息檢索評價是對信息檢索系統性能(主要滿足用戶信息需求的能力)進行評估,與機器學習也有較大的相關性,感興趣的可以參考這篇不錯的博文。
五、總結
上面介紹了非常多的指標,實際應用中需要根據具體問題選擇合適的衡量指標。那么具體工作中如何快速使用它們呢?優秀的Python機器學習開源項目Scikit-learn實現了上述絕指標的大多數,使用起來非常方便。