1. 程式人生 > >模型評估的基本方法

模型評估的基本方法

介紹

       “所有模型都是壞的,但有些模型是有用的”。我們建立模型之後,接下來就要去評估模型,確定這個模型是否‘有用’。當你費盡全力去建立完模型後,你會發現僅僅就是一些單個的數值或單個的曲線去告訴你你的模型到底是否能夠派上用場。

       在實際情況中,我們會用不同的度量去評估我們的模型,而度量的選擇,完全取決於模型的型別和模型以後要做的事。下面我們就會學習到一些用於評價模型的常用度量和圖表以及它們各自的使用場景。

內容

預測模型的型別

分類模型評價度量

混淆矩陣(Confusion Matrix)

ROC曲線

AUC(ROC曲線下面積)

Lift(提升)和Gain(增益)

K-S圖

基尼係數

預測模型的型別

       當說到預測模型時,我們會想到有迴歸模型和分類模型。用於評價這兩種模型的度量是不相同的。我們首先要說的是分類問題。

       在分類問題中,我們用兩種演算法:分類輸出型:演算法像支援向量機和KNN那樣,輸出的是分型別資料。例如一個二分類問題,它的輸出不是0就是1。概率輸出型:這個有邏輯迴歸、隨機森林、梯度提升、Adaboost等演算法,都是以概率作為輸出的。要想把概率型輸出變為分型別輸出,只要為其設立一個閾值即可。

分類模型評價度量

混淆矩陣(Confusion Matrix)

判定方法:根據不同的模型選不同的引數。

原理:混淆矩陣是一個N X N矩陣,N為分類的個數。假如我們面對的是一個二分類問題,也就是N=2,我們就得到一個2 X 2矩陣。在學習這個矩陣之前,我們需要知道一些簡單的定義。(個人不喜歡這部分的中文翻譯,一直是保留英文)

Accuracy(準確度):預測正確的數佔所有數的比例。

Positive Predictive Value(陽性預測值) or Precision(精度):陽性預測值被預測正確的比例。

Negative Predictive Value(陰性預測值):陰性預測值被預測正確的比例。

Sensity(靈敏度) or recall(召回率):在陽性值中實際被預測正確所佔的比例。

Specificity(特異度):在陰性值中實現被預測正確所佔的比例。


若我們得到一個模型的混淆矩陣如下:


我們可以看出,這個模型的準確度為88%,陽性預測值比較高而陰性預測值較低。對於靈敏度和特異度也是相同。這是因為我們選的閾值而導致的,若我們降低閾值,這兩對數值就會變的相近。一般的情況下,我們只關心其中的一個定義度量。例如,在醫藥公司,一般會更加關心最小化誤診率,也就是他們需要的是高特異度。而在磨損模型中我們更關心的是靈敏度。可以看出混淆模型一般只能用於分類輸出型模型中。

ROC曲線

判定方法:ROC曲線應儘量偏離參考線。

原理:ROC全稱為Receiver Operation Characteristic Curve,中文名叫做‘接受者操作特徵曲線’,中文名簡直就是直翻。ROC曲線其實就是從混淆矩陣衍生出來的圖形,其橫座標為1-Specificity,縱座標為Sensitivity。


上面那條曲線就是ROC曲線,隨著閾值的減小,更多的值歸於正類,敏感度和1-特異度也相應增加,所以ROC曲線呈遞增趨勢。而那條45度線是一條參照線,也就是說ROC曲線要與這條曲線比較。

簡單的說,如果我們不用模型,直接隨機把客戶分類,我們得到的曲線就是那條參照線,然而我們使用了模型進行預測,就應該比隨機的要好,所以ROC曲線要儘量遠離參照線,越遠,我們的模型預測效果越好。

AUC(ROC曲線下面積)

判定方法:AUC應該大於0.5.

原理:ROC曲線是根據與那條參照線進行比較來判斷模型的好壞,但這只是一種直覺上的定性分析,如果我們需要精確一些,就要用到AUC,也就是ROC曲線下面積。


看上圖,參考線的面積是0.5,ROC曲線與它偏離越大,ROC曲線就越往左上方靠攏,它下面的面積(AUC)也就越大,這裡面積是0.869。我們可以根據AUC的值與0.5相比,來評估一個分類模型的預測效果。

Lift(提升)和Gain(增益)

判定方法:lift應一直大於1.

原理:Lift=(d/b+d)/(c+d/a+b+c+d).它衡量的是,與不用模型相比,模型的預測能力提升了多少。不利用模型,我們只能利用正例的比例‘c+d/a+b+c+d’這個樣本資訊來估計正例的比例(baseline model),而利用模型之後,只需要從我們預測為正例的那個樣本的子集(b+d)中挑選正例,這時預測的準確率為d/b+d.

由此可見,lift(提升指數)越大,模型的預測效果越好。如果這個模型的預測能力跟baseline model一樣,那麼這個模型就沒有任何意義。

一個好的分類模型,就是要偏離baseline model足夠遠。在lift圖中,表現就是,在depth為1之前,lift一直保持較高的(大於1的)數值,也即曲線足夠陡峭。

Gain與Lift相當類似,Gain chart是不同閾值下d/b+d的軌跡,與Lift的區別就在於縱軸刻度的不同。

K-S圖

判定方法:其值在0到100之間,值越大,模型表現越好。

原理:K-S圖,英文為Kolmogorov-Smirnov chart,是用來評估分類模型表現的圖。更準確的來說,K-S是用來度量陽性與陰性分類區分程度的。若我們把總體嚴格按照陽性和陰性分成兩組,則K-S值為100,如果我們是隨機區分陽性與陰性,則K-S值為0.所以分類模型的K-S值都在0到100之間,值越大,模型從陰性資料中區分陽性資料的能力越強。


基尼係數

判定方法:基尼係數應大於60%,就算好模型。

原理:基尼係數經常用於分類問題,其可以直接從AUC中得到。其公式為:

Gini = 2*AUC - 1