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)較敏感,如果樣本中有一些異常值出現,會對以上指標的值有較大影響,即均值是非魯棒的。(和MSE類似)
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],取值越大,模型預測能力越好。Precision越高,獲取的信息越正確,不過可能會遺漏一些信息。
2.4 召回率(查全率)Recall
Recall 是分類器所預測正確的正樣本占所有正樣本的比例,取值范圍為[0,1],取值越大,模型預測能力越好。Recall越高,獲取的正確信息越多,不過可能獲取信息的准度下降。
應用場景:
1. 地震的預測 對於地震的預測,我們希望的是Recall非常高,也就是說每次地震我們都希望預測出來。這個時候我們可以犧 牲Precision。情願發出1000次警報,把10次地震都預測正確了;也不要預測100次對了8次漏了兩次。“寧錯拿一萬,不放過一個”,分類閾值較低。
2. 嫌疑人定罪 基於不錯怪一個好人的原則,對於嫌疑人的定罪我們希望是非常准確的。即使有時候放過了一些罪犯,但也是值得的。因此我們希望有較高的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是一個曲線下的面積值。假設有一個分類器,並且改分類器可以將器可以得到將一個樣本預測為正的概率,並將此概率稱為這個樣本的得分。AUC的含義為:隨機給定一個正樣本和一個負樣本,用一個分類器進行分類和預測,該正樣本的得分比該負樣本的得分要大的概率 。
2.6.1 ROC
ROC曲線為 FPR 與 TPR 之間的關系曲線,這個組合以 FPR 對 TPR,即是以代價 (costs) 對收益 (benefits),顯然收益越高,代價越低,模型的性能就越好。
- x 軸為假陽性率(FPR):在所有的負樣本中,分類器預測錯誤的比例(FP為預測錯誤的正樣本,也就是說實際為負樣本),可以簡單理解為負樣本誤分為正樣本的概率:
- 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的物理意義。首先是ROC曲線繪制方法,ROC曲線最直觀的畫法就是將所有樣本按模型打分從高到低排序,然后將每一個樣本定為閾值,算一個tpr,tnr出來做圖。接下來舉幾個例子說明AUC值的物理含義。
現在假設有一個訓練好的二分類器對10個正負樣本(正例5個,負例5個)預測,得分按高到低排序得到的最好預測結果為[1, 1, 1, 1, 1, 0, 0, 0, 0, 0],即5個正例均排在5個負例前面,正例排在負例前面的概率為100%。然后繪制其ROC曲線,由於是10個樣本,除開原點我們需要描10個點,如下:
描點方式按照樣本預測結果的得分高低從左至右開始遍歷(也就是從左邊開始移動,在左邊的預測為1,右邊預測為0)。從原點開始,每遇到1便向y軸正方向移動y軸最小步長1個單位,這里是1/5=0.2;每遇到0則向x軸正方向移動x軸最小步長1個單位,這里也是0.2。不難看出,上圖的AUC等於1,印證了正例排在負例前面的概率的確為100%。
我們不妨再舉個栗子,預測結果序列為[1, 1, 1, 1, 0, 1, 0, 0, 0, 0]。ROC曲線如下圖:
計算上圖的AUC為0.96與計算正例排在負例前面的概率0.8 × 1 + 0.2 × 0.8 = 0.96相等,而左上角陰影部分的面積則是負例排在正例前面的概率0.2 × 0.2 = 0.04。
再看個栗子,預測結果序列為[1, 1, 1, 0, 1, 0, 1, 0, 0, 0],ROC曲線如下圖所示:
計算上圖的AUC為0.88與計算正例排在負例前面的概率0.6 × 1 + 0.2 × 0.8 + 0.2 × 0.6 = 0.88相等,左上角陰影部分的面積是負例排在正例前面的概率0.2 × 0.2 × 3 = 0.12。
通過上述幾個例子可以看出AUC反應的是分類器對樣本的排序能力(正樣本在前)。
問題 13 :小明一家四口,小明5歲,姐姐10歲,爸爸35歲,媽媽33歲,建立一個邏輯回歸分類器,來預測小明家人為成年人概率。
以下為三種模型的輸出結果,求三種模型的 AUC :
- AUC更多的是關注對計算概率的排序,關注的是概率值的相對大小,與閾值和概率值的絕對大小沒有關系 例子中並不關注小明是不是成人,而關注的是,預測為成人的概率的排序。
- 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)$。最后我們得到正樣本大於負樣本的概率為 :
下面有一個簡單的例子:
真實標簽為 (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曲線下的面積,因此也和實際的正負樣本比例無關。
ROC曲線的缺點:在類別不平衡的背景下,負例的數目眾多致使FPR的增長不明顯,導致ROC曲線呈現一個過分樂觀的估計效果。ROC的曲線$x$軸采用的是FPR,當負例$N$的數量遠遠超過正例$p$的數量的時候,$fp$的大幅增長只能換來FPR的微小改變。也就是說雖然“大量”負例被誤判為正例(這個大量是相對而言的),在ROC曲線上卻無法直觀的看出來。
舉個例子,假設一個數據集有正例20,負例10000,開始時有20個負例被錯判, ,接着又有20個負例錯判,
,在ROC曲線上這個變化是很細微的。而與此同時Precision則從原來的0.5下降到了0.33,在PR曲線上將會是一個大幅下降。
2.7 PR(Precision Recall) 曲線
PR曲線展示的是Precision vs Recall的曲線,PR曲線與ROC曲線的相同點是都采用了TPR (Recall),都可以用AUC來衡量分類器的效果。不同點是ROC曲線使用了FPR,而PR曲線使用了Precision,因此PR曲線的兩個指標都聚焦於正例。類別不平衡問題中由於主要關心正例,所以在此情況下PR曲線被廣泛認為優於ROC曲線。類別不平衡問題中ROC曲線確實會作出一個比較樂觀的估計,而PR曲線則因為Precision的存在會不斷顯現FP的影響。
PR vs ROC
- ROC曲線由於兼顧正例與負例,所以適用於評估分類器的整體性能,相比而言PR曲線完全聚焦於正例。
- 如果有多份數據且存在不同的類別分布,比如信用卡欺詐問題中每個月正例和負例的比例可能都不相同,這時候如果只想單純地比較分類器的性能且剔除類別分布改變的影響,則ROC曲線比較適合,因為類別分布改變可能使得PR曲線發生變化時好時壞,這種時候難以進行模型比較;反之,如果想測試不同類別分布下對分類器的性能的影響,則PR曲線比較適合。
- 如果想要評估在相同的類別分布下正例的預測情況,則宜選PR曲線。
- 類別不平衡問題中,ROC曲線通常會給出一個樂觀的效果估計,所以大部分時候還是PR曲線更好。
- 最后可以根據具體的應用,在曲線上找到最優的點,得到相對應的precision,recall,f1 score等指標,去調整模型的閾值,從而得到一個符合具體應用的模型。
2.8 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。
轉自:https://zhuanlan.zhihu.com/p/36305931