1. 程式人生 > >如何評估一個機器學習模型

如何評估一個機器學習模型

為什麼需要評估模型

評估訓練出的模型是準確預測的關鍵。訓練出的模型是建立在總資料的子集上的,其被稱為訓練資料,訓練結束後該模型將被用於預測其它新資料。

通過訓練集產生的模型,利用測試資料來進行模型效果的評估,評估結果以模型評估報告的形式呈現,在報告中通過AUC值、模型準確率、模型召回率等一系列評估指標將幫助判斷模型是否可行以及是否滿足業務目標。

一方面,如果一個模型完全適應其訓練資料,但是在訓練資料外的資料集上卻不能很好的擬合數據,那麼它將會過度擬合

出現這種情況時我們則需要採取一些措施,如:

  • 增加訓練資料可以有限的避免過擬合。
  • 減少特徵數或使用較少的特徵組合,對於按區間離散化的特徵,增大劃分的區間。
  • 交叉檢驗,通過交叉檢驗得到較優的模型引數。
  • 正則化(即保留特徵,但是減小特徵變數的數量級)。

另一方面,如果模型在訓練集表現差,不必說在測試集表現也會同樣會很差,這可能是欠擬合導致。
出現這種情況時我們則需要採取一些措施,如:

  • 增加新特徵,可以考慮加入進特徵組合、高次特徵,來增大假設空間;
  • 嘗試非線性模型,比如核SVM 等模型;
    這裡有一個可以參考理解的示例:http://www.cnblogs.com/ooon/p/5715918.html

解讀模型評估指標

模型評估之 — 混淆矩陣

 

混淆矩陣


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曲線呈遞增態勢。

roc

 

評估指標之 — 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)。

lift圖

上圖的縱座標是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,所以它們顯而易見的區別就在於縱軸刻度的不同。

增益圖是描述整體精準率的指標。按照模型預測出的概率從高到低排列,將每一個百分位數內的精準率指標標註在圖形區域內,就形成了非累積的增益圖。如果對每一個百分位及其之前的精準率求和,並將值標註在圖形區域內,則形成累積的增益圖。


Gain圖

Gain圖

模型評估之 — K-S圖

正樣本洛倫茲曲線記為f(x),負樣本洛倫茲曲線記為g(x),K-S曲線實際上是f(x)與g(x)的差值曲線。K-S曲線的最高點(最大值)定義為KS值,KS值越大,模型分值的區分度越好,KS值為0代表是最沒有區分度的隨機模型。準確的來說,K-S是用來度量陽性與陰性分類區分程度的。

 

k-s圖

其實通常在實際使用的過程中,我們大多數都是通過AUC指標和Recall召回率來判斷一個二分類模型的。



作者:summerlovers
連結:https://www.jianshu.com/p/6ffa3df3ec86
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。