轉自http://www.lxweimin.com/p/6ffa3df3ec86
為什么需要評估模型
評估訓練出的模型是準確預測的關鍵。訓練出的模型是建立在總數據的子集上的,其被稱為訓練數據,訓練結束后該模型將被用于預測其它新數據。
通過訓練集產生的模型,利用測試數據來進行模型效果的評估,評估結果以模型評估報告的形式呈現,在報告中通過AUC值、模型準確率、模型召回率等一系列評估指標將幫助判斷模型是否可行以及是否滿足業務目標。
一方面,如果一個模型完全適應其訓練數據,但是在訓練數據外的數據集上卻不能很好的擬合數據,那么它將會過度擬合。
出現這種情況時我們則需要采取一些措施,如:
增加訓練數據可以有限的避免過擬合。
減少特征數或使用較少的特征組合,對于按區間離散化的特征,增大劃分的區間。
交叉檢驗,通過交叉檢驗得到較優的模型參數。
正則化(即保留特征,但是減小特征變量的數量級)。
另一方面,如果模型在訓練集表現差,不必說在測試集表現也會同樣會很差,這可能是欠擬合導致。
出現這種情況時我們則需要采取一些措施,如:
增加新特征,可以考慮加入進特征組合、高次特征,來增大假設空間;
-
嘗試非線性模型,比如核SVM 等模型;
這里有一個可以參考理解的示例:http://www.cnblogs.com/ooon/p/5715918.html
解讀模型評估指標
模型評估之 — 混淆矩陣
[圖片上傳失敗...(image-dc98cf-1511234245738)]
TP(實際為正預測為正),FP(實際為負但預測為正),TN(實際為負預測為負),FN(實際為正但預測為負)
通過混淆矩陣我們可以給出各指標的值:
-
召回率(Recall,TNR):預測對的正例數占真正的正例數的比率計算公式:
Recall=TP / (TP+FN)
-
準確率:反映分類器統對整個樣本的判定能力,能將正的判定為正,負的判定為負,計算公式:
Accuracy=(TP+TN) / (TP+FP+TN+FN)
-
精準率:指的是所得數值與真實值之間的精確程度;預測正確的正例數占預測為正例總量的比率,計算公式:
Precision=TP / (TP+FP)
-
陰性預測值:陰性預測值被預測準確的比例,計算公式:
NPV=TN / (TN+FN)
-
F值:F-score是Precision和Recall加權調和平均數,并假設兩者一樣重要,計算公式:
F1 Score=(2RecallPrecision) / (Recall+Precision)
模型評估之 — ROC圖和AUC
** ROC曲線說明:**
Sensitivity=正確預測到的正例數/實際正例總數
1-Specificity=正確預測到的負例數/實際負例總數
縱坐標為Sensitivity(True Positive Rate),橫坐標為1-Specificity(True Negative Rate),ROC 曲線則是不同閾值下Sensitivity和1-Specificity的軌跡。
閾值:閾值就是一個分界線,用于判定正負例的,在模型預測后我們會給每條預測數據進行打分(0<score<1)。如:指定閾值為0.6,那么評分低于0.6的會被判定為負例(不好的),評分高于0.6的即會判定為正例(好的),隨著閾值的減小,判定為正例的樣本相應地就會增加。
AUC(Area Under the ROC Curve)指標在模型評估階段常被用作最重要的評估指標來衡量模型的準確性,橫坐標為其中隨機分類的模型AUC為0.5,所以模型的AUC基線值大于0.5才有意義。
模型的ROC曲線越遠離對角線,說明模型效果越好,ROC曲線下的區域面積即為AUC值,AUC值越接近1模型的效果越好。隨著閾值的減小,Sensitivity和1-Specificity也相應增加,所以ROC曲線呈遞增態勢。
[圖片上傳失敗...(image-8bd495-1511234245737)]
評估指標之 — Lift提升圖
Lift =[TP/(TP+FP)] / [(TP+FN)/(TP+FP+FN+TN)] = PV_plus / pi1,它衡量的是,與不利用模型相比,模型的預測能力“變好”了多少,lift(提升指數)越大,模型的運行效果越好。
不利用模型,我們只能利用“正例的比例是(TP+FN)/(TP+FP+FN+TN)”這個樣本信息來估計正例的比例(baseline model),而利用模型之后,我們不需要從整個樣本中來挑選正例,只需要從我們預測為正例的那個樣本的子集TP+FP中挑選正例,這時預測的準確率PV_plus(Precision)為TP/(TP+FP)。
[圖片上傳失敗...(image-adccb2-1511234245736)]
上圖的縱坐標是lift,橫坐標是正例集百分比。隨著閾值的減小,更多的客戶就會被歸為正例,也就是預測成正例的比例變大。當閾值設得夠大,只有一小部分觀測值會歸為正例,但這一小部分一定是最具有正例特征的觀測值集合(用前面銀行向客戶推薦信用卡的例子來看,這一部分人群對推薦的反應最為活躍),所以在這個設置下,對應的lift值最大。同樣,當閾值設定得足夠的小,那么幾乎所有的觀測值都會被歸為正例(占比幾乎為100%)——這時分類的效果就跟baseline model差不多了,相對應的lift值就接近于1。
ROC曲線和lift曲線都能夠評價邏輯回歸模型的效果:類似信用評分的場景,希望能夠盡可能完全地識別出有違約風險的客戶,選擇ROC曲線及相應的AUC作為指標;
類似數據庫精確營銷的場景,希望能夠通過對全體消費者的分類而得到具有較高響應率的客戶群從而提高投入產出比,選擇lift曲線作為指標;
評估指標 — Gain增益圖
Gains(增益) 與 Lift (提升)類似:Lift 曲線是不同閾值下Lift和Depth的軌跡,Gain曲線則是不同閾值下PV_plus和Depth的軌跡,而PV_plus=Lift*pi1= TP/TP+FP,所以它們顯而易見的區別就在于縱軸刻度的不同。
增益圖是描述整體精準率的指標。按照模型預測出的概率從高到低排列,將每一個百分位數內的精準率指標標注在圖形區域內,就形成了非累積的增益圖。如果對每一個百分位及其之前的精準率求和,并將值標注在圖形區域內,則形成累積的增益圖。
模型評估之 — K-S圖
正樣本洛倫茲曲線記為f(x),負樣本洛倫茲曲線記為g(x),K-S曲線實際上是f(x)與g(x)的差值曲線。K-S曲線的最高點(最大值)定義為KS值,KS值越大,模型分值的區分度越好,KS值為0代表是最沒有區分度的隨機模型。準確的來說,K-S是用來度量陽性與陰性分類區分程度的。
ps:洛倫茲曲線定義
就是,在一個總體(國家、地區)內,以“最貧窮的人口計算起一直到最富有人口”的人口百分比對應各個人口百分比的收入百分比的點組成的曲線。用來計算基尼系數評價貧富差距的。
通俗點給你講:
你們街20家,按照財富做個排行,橫坐標20個點。第一個點縱坐標就是最窮那家人的財富,第二個點就是最窮的和次窮的財富總和,以此類推。連成線就是洛倫茲曲線了。
(洛倫茲曲線就是排序后的累計概率曲線)
[圖片上傳失敗...(image-788c51-1511234245736)]
其實通常在實際使用的過程中,我們大多數都是通過AUC指標和Recall召回率來判斷一個二分類模型的。