1. 程式人生 > >一份非常全面的機器學習分類與迴歸演算法的評估指標彙總

一份非常全面的機器學習分類與迴歸演算法的評估指標彙總

本文是《機器學習寶典》第 3 篇,讀完本文你能夠掌握分類與迴歸演算法的評估指標。

PS:文末附有練習題

讀完機器學習演算法常識之後,你已經知道了什麼是欠擬合和過擬合、偏差和方差以及貝葉斯誤差。在這篇給大家介紹一些機器學習中離線評估模型效能的一些指標。

當我們訓練得到了多個模型之後,如何衡量這幾個模型的效能呢?也就是說我們需要一個能夠衡量模型“好壞”的標準,我們稱之為評估指標。在對比不同的模型效果時,使用不同的評估指標往往會導致不同的結論,這也就是說模型的效果好壞是相對的。

針對不同型別的學習任務,我們有不同的評估指標,這裡我們來介紹最常見的分類與迴歸演算法的一些評估指標。

分類指標

生活中大多數的分類問題都屬於二分類問題,所以這裡以二分類為例,來說明下分類相關的一些指標。

正式介紹指標之前,先來普及一些基本概念:有時候“陽性”、“真”、“正類”、“1” 指的是一回事,“陰性”、“假”、“負類”、“0”指的也是一回事。例如模型對這個樣本的預測結果為 1,可以認為模型對這個樣本的預測結果為真、或者為正類、或者為陽性,其實說的都是一個意思。

混淆矩陣

混淆矩陣(confusion matrix)是一個評估分類問題常用的工具,對於 k 元分類,其實它就是一個k x k的表格,用來記錄分類器的預測結果。對於常見的二分類,它的混淆矩陣是 2x2 的。

在二分類中,可以將樣本根據其真實結果和模型的預測結果的組合劃分為真陽性(true positive,TP)、真陰性(true negative,TN)、假陽性(false positive,FP)、假陰性(false negative,FN)。根據 TP、TN、FP、FN 即可得到二分類的混淆矩陣。

準確度

準確率(accuracy)是指模型預測正確(包括預測為真正確和預測為假正確)的樣本數量佔總樣本數量的比例,即

其中,表示模型正確分類的樣本個數,表示所有的樣本個數。

在二分類中,準確率可以通過下面的計算公式得到。

準確率是分類問題中的一個最簡單也最直觀的評估指標,但是準確率存在一些侷限性。比如,在二分類中,當負樣本佔比 99 %時,如果模型把所有樣本都預測為負樣本也能獲得 99% 的準確率。雖然準確率看起來很高,但是其實這個模型時沒有用,因為它找不出一個正樣本。

精確率

精確率(precision)是指模型預測為真,實際也為真的樣本數量佔模型預測所有為真的樣本數量的比例,即

舉例來說明,比如警察要抓小偷,抓了 10 個人,其中有 6 個人是小偷,那麼精確率就是 6/10 = 0.6。

召回率

召回率(recall)有時候也叫查全率,是指模型預測為真,實際也為真的樣本數量佔實際所有為真的樣本數量的比例,即

舉例來說明,還是上面的警察抓小偷的例子,抓了 10 個人,其中 6 個人是小偷,還有另外 3 個小偷逃之夭夭,那麼召回率就是 6 / ( 6 + 3) ≈ 0.67。

F1值/Fα值

一般來說,精確率和召回率是互斥的,也就是說精確率高的話,召回率會變低;召回率高的話,精確率會變低。所以設計了一個同時考慮精確率和召回率的指標 F1值。F1值是精確率和召回率的調和平均,即

在某些場景下,我們對精確率與召回率的關注程度不一樣,這時候,F1值更一般的形式Fα值就能夠滿足。Fα值定義如下

其中,α 的大小表示召回率對精確率的相對重要程度。

多分類的情況

很多時候我們遇到的是多分類問題,這就意味著每兩兩類別的組合都對應一個二元的混淆矩陣。假設得到了 n 個二分類的混淆矩陣,那如何來平均這 n 個結果呢?

巨集平均

第一種辦法就是先在各個混淆矩陣中分別計算出結果,再計算平均值,這種方式稱為“巨集平均”。

微平均

除了上面的巨集平均之外,我們也可以將二元混淆矩陣的對應的元素進行平均,得到 TP、TN、FP、FN 的平均值,然後再根據這些平均值來計算,這種方式稱為“微平均”。

ROC

在前面介紹的這些指標中(如準確率、精確率、召回率等)都需要得到模型預測的結果(正類或負類),對很多模型來說,預測得到的是一個屬於正類的概率值,所以就需要指定一個閾值,閾值以上的為正類,否則為負類。這個與之的大小直接決定了模型的泛化能力。

有一個評估指標叫受試者工作特徵(Receiver Operating Characteristic,ROC)曲線,這種評估指標可以不用指定閾值。ROC曲線的縱軸是真陽率(TPR),橫軸是假陽率(FPR)。

真陽率和假陽率的計算公式如下:

可以發現,TPR和Recall的計算公式是一樣的。那麼如何繪製ROC曲線呢?可以看到,ROC曲線是由一系列 (FPR, TPR)點構成的,但一個特定的模型,只得到一個分類結果,即只有一組 (FPR, TPR),對應ROC曲線上的一個點,如何得到多個呢?

我們將模型對所有樣本的預測值(屬於正類的概率值)降序排列,然後依次將預測的概率值作為閾值,每次得到該閾值下模型預測結果為正類、負類的樣本數,然後生成一組 (FPR, TPR) 值,這樣就可以得到ROC曲線上的一點,最後將所有的點連線起來就出現了ROC曲線。很明顯,閾值設定的次數越多,就會生成更多的 (FPR, TPR) 值,畫出的ROC曲線也就越光滑。也就是說 ROC曲線的光滑程度與閾值設定次數的多少有絕對的關係,與樣本數量沒有必然聯絡。現實中,我們畫出的 ROC 曲線多數都是不光滑的。

ROC曲線越靠近左上角,表示效果越好。左上角座標為(0,1),即 FPR = 0,TPR = 1,這意味著 FP(假陽性)=0, FN(假陰性)=0,這就是一個完美的模型,因為能夠對所有的樣本正確分類。ROC曲線中的對角線(y=x)上的所有的點都表示模型的區分能力與隨機猜測沒有差別。

AUC

AUC(Area Under Curve)被定義為ROC曲線下的面積,很明顯,AUC的結果不會超過 1,通常ROC曲線都在 y = x 這條直線上面,所以,AUC的值一般在 0.5 ~ 1 之間。

如何理解AUC的作用呢?隨機挑選一個正樣本(P)和負樣本(N),模型對這兩個樣本進行預測得到每個樣本屬於正類的概率值,根據概率值對樣本進行排序後,正樣本排在負樣本前面的概率就是AUC值。

AUC可以通過下面的公式計算得到。

其中,rank為將模型對樣本預測後的概率值從小到大排序後的正樣本的序號(排序從1開始),|P|為正樣本數,|N|為負樣本數。

需要注意的是,如果多個樣本被模型預測的概率值一樣,那麼求rank的時候只需要將這些原始rank加起來求平均即可。所以說相等概率得分的樣本,無論正負,誰在前,誰在後無所謂。

對數損失

對數損失(Logistic Loss,logloss)是對預測概率的似然估計,其標準形式為:

對數損失最小化本質是上利用樣本中的已知分佈,求解導致這種分佈的最佳模型引數,使這種分佈出現概率最大。

對數損失對應的二分類的計算公式為:

其中,N為樣本數,為第i個樣本預測為1的概率。

對數損失在多分類問題中也可以使用,其計算公式為:

其中,N為樣本數,C為類別數,表示第i個樣本的類別為j,為第i個樣本屬於類別j的概率。

logloss衡量的是預測概率分佈和真實概率分佈的差異性,取值越小越好。

迴歸指標

在迴歸學習任務中,我們也有一些評估指標,一起來看看吧!

平均絕對誤差

平均絕對誤差(Mean Absolute Error,MAE)公式為:

其中,N為樣本數,為第i個樣本的真實值,為第i個樣本的預測值。

均方誤差

均方誤差(Mean Squared Error,MSE)公式為:

平均絕對百分誤差

平均絕對百分誤差(Mean Absolute Percentage Error,MAPE)公式為:

MAPE通過計算絕對誤差百分比來表示預測效果,其取值越小越好。如果MAPE=10,這表明預測平均偏離真實值10%。

由於MAPE計算與量綱無關,因此在特定場景下不同問題具有一定可比性。不過MAPE的缺點也比較明顯,在  處無定義。另外需要注意的是,MAPE對負值誤差的懲罰大於正值誤差,比如預測一個酒店消費是200元,真實值是150元的會比真實值是250的MAPE大。

均方根誤差

均方根誤差(Root Mean Squared Error)的公式為:

RMSE代表的是預測值和真實值差值的樣本標準差。和MAE相比,RMSE對大誤差樣本有更大的懲罰。不過RMSE有一個缺點就是對離群點敏感,這樣會導致RMSE結果非常大。

基於RMSE也有一個常用的變種評估指標叫均方根對數誤差(Root Mean Squared Logarithmic Error,RMSLE),其公式為:

RMSLE對預測值偏小的樣本懲罰比預測值偏大的樣本懲罰更大,比如一個酒店消費均價是200元,預測成150元的懲罰會比預測成250的大。

R2

R2(R-Square)的公式為:

R2用於度量因變數的變異中可由自變數解釋部分所佔的比例,一般取值範圍是 0~1,R2越接近1,表明迴歸平方和佔總平方和的比例越大,迴歸線與各觀測點越接近,用x的變化來解釋y值變差的部分就越多,迴歸的擬合程度就越好。

練習題

看完這篇文章,我們來做幾道練習題來檢驗下學習成果:

  1. 為什麼說ROC曲線的光滑程度與樣本數量沒有絕對的關係呢?

  2. 如果一個模型的AUC小於0.5,可能是因為什麼原因造成的呢?

  3. 在一個預測流量的場景中,嘗試了多種迴歸模型,但是得到的 RMSE 指標都非常高,考慮下可能是因為什麼原因造成的呢?

  4. 在一個二分類問題中,15個樣本的真實結果為[0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0],模型的預測結果為[1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1],計算準確率、精確率、召回率以及F1值。

  5. 在一個二分類問題中,7個樣本[A, B, C, D, E, F, G]的真實結果為[1, 1, 0, 0, 1, 1, 0],模型的預測概率為[0.8, 0.7, 0.5, 0.5, 0.5, 0.5, 0.3],計算AUC值。

想要學習更多機人工智慧知識,歡迎關注公眾號AI派

以上所有的練習題答案我都會公佈在我的知識星球中,方便後續做一個知識沉澱;另外,關於文章有任何疑問或者想要深入學習與交流,都可以加入我的知識星球來交流(加入方式:掃描下方二維碼或者點選“閱讀原文”)。

參考:

[1] 周志華.機器學習.第二章第三節(效能度量)
[2] 美團演算法團隊.美團機器學習實戰.第一章第一節(評估指標)
[3] https://blog.csdn.net/qq_22238533/article/details/78666436
[4] https://blog.csdn.net/u013704227/article/details/77604500