機器學習評估指標

機器學習評估指標

1、回歸(Regression)演算法指標

  • Mean Absolute Error 平均絕對誤差
  • Mean Squared Error 均方誤差
  • Root Mean Squared Error:均方根誤差
  • Coefficient of determination 決定係數

以下為一元變數和二元變數的線性回歸示意圖:

怎樣來衡量回歸模型的好壞呢? 我們第一眼自然而然會想到採用殘差(實際值與預測值差值)的均值來衡量,即:

問題 1:用殘差的均值合理嗎?

當實際值分布在擬合曲線兩側時,對於不同樣本而言 有正有負,相互抵消,因此我們想到採用預測值和真實值之間的距離來衡量。

1.1 平均絕對誤差 MAE

平均絕對誤差MAE(Mean Absolute Error)又被稱為 L1範數損失。

問題 2:MAE有哪些不足?

MAE雖能較好衡量回歸模型的好壞,但是絕對值的存在導致函數不光滑,在某些點上不能求導,可以考慮將絕對值改為殘差的平方,這就是均方誤差。

1.2 均方誤差 MSE

均方誤差MSE(Mean Squared Error)又被稱為 L2範數損失 。

問題 3: 還有沒有比MSE更合理一些的指標?

由於MSE與我們的目標變數的量綱不一致,為了保證量綱一致性,我們需要對MSE進行開方 。

1.3 均方根誤差 RMSE

問題 4: RMSE有沒有不足的地方?有沒有規範化(無量綱化的指標)?

上面的幾種衡量標準的取值大小與具體的應用場景有關係,很難定義統一的規則來衡量模型的好壞。比如說利用機器學習演算法預測上海的房價RMSE在2000元,我們是可以接受的,但是當四五線城市的房價RMSE為2000元,我們還可以接受嗎?下面介紹的決定係數就是一個無量綱化的指標。

1.4 決定係數 R^2

變數之所以有價值,就是因為變數是變化的。什麼意思呢?比如說一組因變數為[0, 0, 0, 0, 0],顯然該因變數的結果是一個常數0,我們也沒有必要建模對該因變數進行預測。假如一組的因變數為[1, 3, 7, 10, 12],該因變數是變化的,也就是有變異,因此需要通過建立回歸模型進行預測。這裡的變異可以理解為一組數據的方差不為0。

決定係數又稱為R^2 score,反映因變數的全部變異能通過回歸關係被自變數解釋的比例。

如果結果是0,就說明模型預測不能預測因變數。 如果結果是1。就說明是函數關係。 如果結果是0-1之間的數,就是我們模型的好壞程度。 化簡上面的公式 ,分子就變成了我們的均方誤差MSE,下面分母就變成了方差:

問題 5: 以上評估指標有沒有缺陷,如果有,該怎樣改進?

以上的評估指標是基於誤差的均值對進行評估的,均值對異常點(outliers)較敏感,如果樣本中有一些異常值出現,會對以上指標的值有較大影響,即均值是非魯棒的。

1.5 解決評估指標魯棒性問題

我們通常用一下兩種方法解決評估指標的魯棒性問題:

  • 剔除異常值
  • 設定一個相對誤差 ,當該值超過一定的閾值時,則認為其是一個異常點,剔除這個異常點,將異常點剔除之 後。再計算平均誤差來對模型進行評價。
  • 使用誤差的分位數來代替
  • 如利用中位數來代替平均數。例如 MAPE:

MAPE是一個相對誤差的中位數,當然也可以使用別的分位數。

2、分類(Classification)演算法指標

  • 精度 Accuracy
  • 混淆矩陣 Confusion Matrix
  • 準確率(查准率) Precision
  • 召回率(查全率)Recall
  • Fβ Score
  • AUC Area Under Curve
  • KS Kolmogorov-Smirnov

2.1 精度 Acc

預測正確的樣本的佔總樣本的比例,取值範圍為[0,1],取值越大,模型預測能力越好。

其中:

精度評價指標對平等對待每個類別,即每一個樣本判對 (0) 和判錯 (1) 的代價都是一樣的。

問題 6: 精度有什麼缺陷?什麼時候精度指標會失效?

  • 對於有傾向性的問題,往往不能用精度指標來衡量。
  • 比如,判斷空中的飛行物是導彈還是其他飛行物,很顯然為了減少損失,我們更傾向於相信是導彈而採用相應的防護措施。此時判斷為導彈實際上是其他飛行物與判斷為其他飛行物實際上是導彈這兩種情況的重要性是不一樣的;
  • 對於樣本類別數量嚴重不均衡的情況,也不能用精度指標來衡量。
  • 比如銀行客戶樣本中好客戶990個,壞客戶10個。如果一個模型直接把所有客戶都判斷為好客戶,得到精度為99%,但這顯然是沒有意義的。

對於以上兩種情況,單純根據Accuracy來衡量演算法的優劣已經失效。這個時候就需要對目標變數的真實值和預測值做更深入的分析。

2.2 混淆矩陣 Confusion Matrix

這裡牽扯到三個方面:真實值,預測值,預測值和真實值之間的關係,其中任意兩個方面都可以確定第三個。

通常取預測值和真實值之間的關係、預測值對矩陣進行劃分:

  • True positive (TP)
  • 真實值為Positive,預測正確(預測值為Positive)
  • True negative (TN)
  • 真實值為Negative,預測正確(預測值為Negative)
  • False positive (FP)
  • 真實值為Negative,預測錯誤(預測值為Positive),第一類錯誤, Type I error。
  • False negative (FN)
  • 真實值為Positive,預測錯誤(預測值為 Negative),第二類錯誤, Type II error。

2.3 準確率(查准率) Precision

Precision 是分類器預測的正樣本中預測正確的比例,取值範圍為[0,1],取值越大,模型預測能力越好。

2.4 召回率(查全率)Recall

Recall 是分類器所預測正確的正樣本占所有正樣本的比例,取值範圍為[0,1],取值越大,模型預測能力越好。

應用場景:

  1. 地震的預測 對於地震的預測,我們希望的是Recall非常高,也就是說每次地震我們都希望預測出來。這個時候我們可以犧 牲Precision。情願發出1000次警報,把10次地震都預測正確了;也不要預測100次對了8次漏了兩次。
  • 「寧錯拿一萬,不放過一個」,分類閾值較低
  1. 嫌疑人定罪 基於不錯怪一個好人的原則,對於嫌疑人的定罪我們希望是非常準確的。即使有時候放過了一些罪犯,但也 是值得的。因此我們希望有較高的Precision值,可以合理地犧牲Recall。
  • 「寧放過一萬,不錯拿一個」,「疑罪從無」,分類閾值較高

問題 7: 某一家互聯網金融公司風控部門的主要工作是利用機器模型抓取壞客戶。互聯網金融公司要擴大業務量,盡量多的吸引好客戶,此時風控部門該怎樣調整Recall和Precision?如果公司壞賬擴大,公司縮緊業務,儘可能抓住更多的壞客戶,此時風控部門該怎樣調整Recall和Precision?

如果互聯網公司要擴大業務量,為了減少好客戶的誤抓率,保證吸引更多的好客戶,風控部門就會提高閾值,從而提高模型的查准率Precision,同時,導致查全率Recall下降。如果公司要縮緊業務,儘可能抓住更多的壞客戶,風控部門就會降低閾值,從而提高模型的查全率Recall,但是這樣會導致一部分好客戶誤抓,從而降低模型的查准率 Precision。

根據以上幾個案,我們知道隨著閾值的變化Recall和Precision往往會向著反方向變化,這種規律很難滿足我們的期望,即Recall和Precision同時增大。

問題 8: 有沒有什麼方法權衡Recall和Precision 的矛盾?

我們可以用一個指標來統一Recall和Precision的矛盾,即利用Recall和Precision的加權調和平均值作為衡量標準。

2.5 Fβ Score

Precision和Recall 是互相影響的,理想情況下肯定是做到兩者都高,但是一般情況下Precision高、Recall 就低, Recall 高、Precision就低。為了均衡兩個指標,我們可以採用Precision和Recall的加權調和平均(weighted harmonic mean)來衡量,即Fβ Score,公式如下:

β表示權重:

通俗的語言就是:β 越大,Recall的權重越大, 越小,Precision的權重越大。

由於Fβ Score 無法直觀反映數據的情況,同時業務含義相對較弱,實際工作用到的不多。

2.6 ROC 和 AUC

AUC是一種模型分類指標,且僅僅是二分類模型的評價指標。AUC是Area Under Curve的簡稱,那麼Curve就是 ROC(Receiver Operating Characteristic),翻譯為"接受者操作特性曲線"。也就是說ROC是一條曲線,AUC是 一個面積值。

2.6.1 ROC

ROC曲線為 FPR 與 TPR 之間的關係曲線,這個組合以 FPR 對 TPR,即是以代價 (costs) 對收益 (benefits),顯然收益越高,代價越低,模型的性能就越好。

  • x 軸為假陽性率(FPR):在所有的負樣本中,分類器預測錯誤的比例

  • y 軸為真陽性率(TPR):在所有的正樣本中,分類器預測正確的比例(等於Recall)

為了更好地理解ROC曲線,我們使用具體的實例來說明:

如在醫學診斷的主要任務是盡量把生病的人群都找出來,也就是TPR越高越好。而盡量降低沒病誤診為有病的人數,也就是FPR越低越好。

不難發現,這兩個指標之間是相互制約的。如果某個醫生對於有病的癥狀比較敏感,稍微的小癥狀都判斷為有病,那麼他的TPR應該會很高,但是FPR也就相應地變高。最極端的情況下,他把所有的樣本都看做有病,那麼TPR達到1,FPR也為1。

我們以FPR為橫軸,TPR為縱軸,得到如下ROC空間:

我們可以看出,左上角的點(TPR=1,FPR=0),為完美分類,也就是這個醫生醫術高明,診斷全對。點A(TPR>FPR),醫生A的判斷大體是正確的。中線上的點B(TPR=FPR),也就是醫生B全都是蒙的,蒙對一半,蒙錯一半;下半平面的點C(TPR<FPR),這個醫生說你有病,那麼你很可能沒有病,醫生C的話我們要反著聽,為真庸醫。上圖中一個閾值,得到一個點。現在我們需要一個獨立於閾值的評價指標來衡量這個醫生的醫術如何,也就是遍歷所有的閾值,得到 ROC 曲線。

假設下圖是某醫生的診斷統計圖,為未得病人群(上圖)和得病人群(下圖)的模型輸出概率分布圖(橫坐標表示模型輸出概率,縱坐標表示概率對應的人群的數量),顯然未得病人群的概率值普遍低於得病人群的輸出概率值(即正常人診斷出疾病的概率小於得病人群診斷出疾病的概率)。

豎線代表閾值。顯然,圖中給出了某個閾值對應的混淆矩陣,通過改變不同的閾值 ,得到一系列的混淆矩陣,進而得到一系列的TPR和FPR,繪製出ROC曲線。

閾值為1時,不管你什麼癥狀,醫生均未診斷出疾病(預測值都為N),此時 ,位於左下。閾值為 0 時,不管你什麼癥狀,醫生都診斷結果都是得病(預測值都為P),此時 ,位於右上。

2.6.2 AUC

AUC定義:

  • AUC 值為 ROC 曲線所覆蓋的區域面積,顯然,AUC越大,分類器分類效果越好。
  • AUC = 1,是完美分類器。
  • 0.5 < AUC < 1,優於隨機猜測。有預測價值。
  • AUC = 0.5,跟隨機猜測一樣(例:丟銅板),沒有預測價值。
  • AUC < 0.5,比隨機猜測還差;但只要總是反預測而行,就優於隨機猜測。

註:對於AUC小於 0.5 的模型,我們可以考慮取反(模型預測為positive,那我們就取negtive),這樣就可以保證模型的性能不可能比隨機猜測差。

以下為ROC曲線和AUC值的實例:

AUC的物理意義 AUC的物理意義正樣本的預測結果大於負樣本的預測結果的概率。所以AUC反應的是分類器對樣本的排序能力。另外值得注意的是,AUC對樣本類別是否均衡並不敏感,這也是不均衡樣本通常用AUC評價分類器性能的一個原因。

問題 13 :小明一家四口,小明5歲,姐姐10歲,爸爸35歲,媽媽33歲,建立一個邏輯回歸分類器,來預測小明家人為成年人概率。

以下為三種模型的輸出結果,求三種模型的 AUC :

  1. AUC更多的是關注對計算概率的排序,關注的是概率值的相對大小,與閾值和概率值的絕對大小沒有關係 例子中並不關注小明是不是成人,而關注的是,預測為成人的概率的排序。
  2. AUC只關注正負樣本之間的排序,並不關心正樣本內部,或者負樣本內部的排序。這也體現了AUC的本質: 任意個正樣本的概率都大於負樣本的概率的能力。

例子中AUC只需要保證(小明和姐姐)(爸爸和媽媽),小明和姐姐在前2個排序,爸爸和媽媽在後2個排序,而不會考慮小明和姐姐誰在前,或者爸爸和媽媽誰在前 。AUC只與概率的相對大小(概率排序)有關,和絕對大小沒關係。由於三個模型概率排序的前兩位都是未成年人(小明,姐姐),後兩位都是成年人(媽媽,爸爸),因此三個模型的AUC都等於1。

問題 14:以下已經對分類器輸出概率從小到大進行了排列,哪些情況的AUC等於1, 情況的AUC為0(其中背景色表示True value,紅色表示成年人,藍色表示未成年人)。

D 模型, E模型和F模型的AUC值為1,C 模型的AUC值為0(爸媽為成年人的概率小於小明和姐姐,顯然這個模型預測反了)。

AUC的計算

  • 法1:AUC為ROC曲線下的面積,那我們直接計算面積可得。面積為一個個小的梯形面積(曲線)之和。計算的精度與閾值的精度有關 。
  • 法2:根據AUC的物理意義,我們計算正樣本預測結果大於負樣本預測結果概率。取n1* n0(n1為正樣本數,n0為負樣本數)個二元組,每個二元組比較正樣本和負樣本的預測結果,正樣本預測結果高於負樣本預測結果則為預測正確,預測正確的二元組佔總二元組的比率就是最後得到的AUC。時間複雜度為O(N* M)。
  • 法3:我們首先把所有樣本按照score排序,依次用rank表示他們,如最大score的樣本,rank=n (n=n0+n1,其中n0為負樣本個數,n1為正樣本個數),其次為n-1。那麼對於正樣本中rank最大的樣本,rank_max,有n1-1個其他正樣本比他score小,那麼就有(rank_max-1)-(n1-1)個負樣本比他score小。其次為(rank_second-1)-(n1-2)。最後我們得到正樣本大於負樣本的概率為 :

其計算複雜度為O(N+M)。

下面有一個簡單的例子:

真實標籤為 (1, 0, 0, 1, 0) 預測結果1(0.9, 0.3, 0.2, 0.7, 0.5) 預測結果2(0.9, 0.3, 0.2, 0.7, 0.8))

分別對兩個預測結果進行排序,並提取他們的序號 結果1 (5, 2, 1, 4, 3) 結果2 (5, 2, 1, 3, 4)

對正分類序號累加 結果1:SUM正樣本(rank(score))=5+4=9 結果2: SUM正樣本(rank(score))=5+3=8

計算兩個結果的AUC: 結果1:AUC= (9-2*3/2)/6=1 結果2:AUC= (8-2*3/2)/6=0.833

問題 15:為什麼說 ROC 和AUC都能應用於非均衡的分類問題?

ROC曲線只與橫坐標 (FPR) 和 縱坐標 (TPR) 有關係 。我們可以發現TPR只是正樣本中預測正確的概率,而FPR只是負樣本中預測錯誤的概率,和正負樣本的比例沒有關係。因此 ROC 的值與實際的正負樣本比例無關,因此既可以用於均衡問題,也可以用於非均衡問題。而 AUC 的幾何意義為ROC曲線下的面積,因此也和實際的正負樣本比例無關。

2.7 KS Kolmogorov-Smirnov

KS值是在模型中用於區分預測正負樣本分隔程度的評價指標,一般應用於金融風控領域。

與ROC曲線相似,ROC是以FPR作為橫坐標,TPR作為縱坐標,通過改變不同閾值,從而得到ROC曲線。

而在KS曲線中,則是以閾值作為橫坐標,以FPR和TPR作為縱坐標,ks曲線則為TPR-FPR,ks曲線的最大值通常為ks值。

為什麼這樣求KS值呢?我們知道,當閾值減小時,TPR和FPR會同時減小,當閾值增大時,TPR和FPR會同時增大。而在實際工程中,我們希望TPR更大一些,FPR更小一些,即TPR-FPR越大越好,即ks值越大越好。

可以理解TPR是收益,FPR是代價,ks值是收益最大。圖中綠色線是TPR、藍色線是FPR。


推薦閱讀:

吳恩達機器學習第七周課後感
計算圖與反向傳播
為什麼說人工智慧和機器學習是生產力的未來
機器學習-線性回歸
南京大學周志華教授綜述論文:弱監督學習

TAG:機器學習 | 深度學習DeepLearning | 數據挖掘 |