christopher-gower-291240-unsplash
 程式與統計統計模型

Logistic Regression 羅吉斯迴歸 | part2 – 模型建置、診斷與比較 | R語言

Logistic Regression, 羅吉斯回歸模型,適用於預測二元類別目標變數的發生機率(p),和線性回歸模型類似,與線性回歸主要不同之處在於:(1) 目標變數是目標事件發生機率P經過log函數轉換成log odds值才進行線性預測,且(2)羅吉斯回歸的各項參數是透過最大概似法(MLE)進行估計的。

Logistic Regression part1 前情提要

Logistic Regression – part1 – 資料探勘與處理」篇的重點回顧:

  1. 探索預測變數自身分佈情況以及各預測變數與目標變數之間的關係。
  2. 資料預處理,將類別水準直過多的變數進行簡化。
  3. 隨機產生訓練與測試資料集。
  4. 計算各預測變數的Information Value來初步判斷各預測變數對目標變數的影響程度。
  5. 依據IV值初步從13個變數篩選出6個變數包括:RELATIONSHIP, MARITALSTATUS, AGE, EDUCATIONNUM, CAPITALGAIN,OCCUPATION_rep。

分析資料與問題

Problem: 預測薪資大於50K(ABOVE50K)的影響特徵因素有哪些?

Data: adult dataset (snapshot)

目標變數(1):ABOVE50K

預測變數(13):AGE, WORKCLASS, EDUCATION, EDUCATIONNUM, MARITALSTATUS, OCCUPATION, RELATIONSHIP, RACE, SEX, CAPITALGAIN, CAPITALLOSS, HOURSPERWEEK, NATIVECOUNTRY

分析步驟

(part 2 篇會說明步驟6~8的部分)(步驟1~5請參考「Logistic Regression – part1 – 資料探勘與處理」)

  1. 資料載入與檢視
  2. 資料探勘
  3. 資料前處理
  4. 產生訓練資料集與測試資料集
  5. 計算特徵變數IV值(Information Value),篩選變數
  6. 訓練模型與預測
  7. 模型診斷與調整
  8. 模型比較(v.s. Machine Learning Methods)

6. 訓練模型與預測

接續「Logistic Regression – part1 – 資料探勘與處理」,我們將近一步針對初步篩選出的6預測變數進行羅基斯回歸模型分析。

除了摘要模型,我們另外針對共線性進行檢查。發現變數RELATIONSHIP和MARITALSTATUS有共線性。

因此,我們根據RELATIONSHIP和MARITALSTATUS的IV值,捨棄其中較低者,重新再進行一次模型建置。

並在重新檢視共線性。可以發現去除MARITALSTATUS後,所有變數的VIF值都小於4了。

於是我們使用此模型來預測測試資料集。

為了優化模型正確率,我們使用InformationValue套件中的optimalCutoff函數來尋找最適機率切點。發現最適機率值切點跟預設的0.5一樣。




決定了機率切點後,我們來驗證模型使用測試資料集的預測效果如何。我們會分別計算以下指標:

  • Confusion Matrix
    • misClassification Rate
    • precision
    • Sensitivity
    • Specifisity
  • Concordance
  • ROC/AUC

Confusion Matrix: 左欄為預測值,上方欄則為實際值。

預測錯誤率(misClassification Rate)

預測精準度(Precision,及所有預測為1的事件中,真實亦為1的事件比率)。

Sensitivity

$$Sensitivity=\frac{\sharp\space Actual\space 1’s\space and\space Predicted\space as\space 1’s}{\sharp\space of\space Actual\space 1’s}$$

又稱Recall(捕捉率),即真實為1,且被正確預測為1的比例。(通常與Precision精準度成反比)

Specificity

$$Specificity=\frac{\sharp\space Actual\space 0’s\space and\space Predicted\space as\space 0’s}{\sharp\space of\space Actual\space 0’s}$$

即真實為0,且被正確預測為0的比例。

Concordance。則為所有預測結果(0,1)成對的機率值中,真實為1的事件,1的機率高於0的機率佔所有成對資料的比例。理想中,該比例越高越好,即表示所有預測(0,1)的機率值,若真實為1,則1的預測機率理應都大於0的預測機率。(discordance則為相反結果的比例,tied則為機率無差別的結果比例,三比例相加應為100%)。

ROC/AUC。可以發現在ROC曲線下面積為88.85%。理想中,會希望ROC曲線前段越陡越好,後段越緩越好。表示模型整體預測能力的好壞。

logistic regression

總結以上指標數據,可以發現模型預測能力還不錯,錯誤率15.92%都還在能接受範圍內。




7. 模型診斷與調整

為了近一步看看模型有無優化空間以及合適度,常見做法包括(1)殘差分析 (2)K-fold Cross Validation (3)Bootstrap (4)StepwiseRegression。我們這邊就以逐步回歸為範例,來看看模型是否有優化空間。

我們同時使用逐步向後/向前法,並比較兩法最後的結果(AIC)是否有差。

我們發現不管是逐步向前或向後法,最後結果都與原始logitMod的結果是一樣的。

而理想中好的模型,偏差平方和(Deviance)應該在+-3之內,我們在此透過繪圖來檢視。

可以發現偏差平方和皆都落在+-3範圍內(藍色虛線)。

logistic regression

8. 模型比較(v.s. Machine Learning Methods)

我們將傳統羅吉斯回歸預測結果與近期新穎的機器學習法預測結果做比較。

8-1. 類神經網路Neural Netwoarks(NN)

類神經網路的預測分類錯誤率為15.22%,稍低於羅吉斯回歸的15.92%。

8-2. 決策樹CART

決策樹的預測分類錯誤率為15.07%,低於羅吉斯回歸的15.92%。

8-3. 隨機森林Random Forest(RF)

隨機森林的預測分類錯誤率為15.11%,低於羅吉斯回歸的15.92%。

8-4. 支援向量機Support Vector Machine(SVM)

SVM的預測分類錯誤率為15.35%,亦低於羅吉斯回歸的15.92%。

綜合以上結果,我們摘要傳統羅吉斯回歸與機器學習法的預測結果如下表:

演算法 預測錯誤率
傳統羅吉斯回歸 15.92%
類神經網路 15.22%
決策樹(CART) 15.11%
支持向量機(SVM) 15.35%

可以發現機器學習法的對所有測試資料的預測錯誤率沒有比傳統羅吉斯回歸差距太大。

Confusion Matrix看的是模型對於所有data的預測正確度(accuracy),但因為我們的大部分的資料都是<=50K,所以我們更會比較在不同資料使用水平下,模型在正確度的表現我們在此會使用ROC曲線及曲線下面積AUC來看比較五個模型分別在不同資料水平下的模型預測正確率(accuracy)表現

先載入套件ROCR。並替所有模型預測結果產生一組放置(X軸)False Positive Rate和(Y軸)True Positive Rate的data frame,以便後續繪製各模型的ROC曲線。

首先是Logistic Regression的部份如下:

其他機器學習法如法炮製如下:

準備好各模型預測結果dd, dd1, ~ ,dd4的data frame後,我們將他們轉換成ROC曲線。

從圖中可以觀察到,模型中以Neural Networks表現最好,及能使用最少的資料,可以捕捉到最多的目標事件1。(理想中,ROC曲線前段越陡越好,後段則越緩越佳)。

logistic regression




我們進一步將ROC曲線下面積AUC計算出來。

可以發現,Neural Networks曲線下面積最高,Logistic Regression則次之。但因為類神經網路有諸多黑箱邏輯,故為了有更多的解釋基礎,一般來說,還是會選擇使用羅吉斯回歸結果來說明。從此範例也可發現,傳統羅吉斯回歸的對此資料集的預測能力並不亞於諸多新穎的機器學習法。

總結

  • 羅吉斯回歸與回歸模型相似,必須符合許多基本假設,也因此對資料分配有較多要求,資料前處理的需求亦較多(遺失值、離群值、資料分佈)。
  • 回歸模型基本上並不包含變數篩選,所以事前會使用IV(information value)來做變數初步篩選,事後也會使用VIF檢視共線性。
  • 和線性回歸一樣,羅吉斯會將類別型變數轉換成虛擬變數,因此要避免類別水準值過多的情形。
  • 評估模型適合度,需綜合考量整體錯誤率(misclassification rate)與在不同資料量水平下的捕捉率(ROC/AUC)
  • 羅吉斯回歸適合用來預測類別變數(二元變數)的機率
  • 模型調整的工約80%是在於資料前處理。

更多模型建置筆記連結:

  1. Linear Regression | 線性迴歸模型 | using AirQuality Dataset
  2. Regularized Regression | 正規化迴歸 – Ridge, Lasso, Elastic Net | R語言
  3. Logistic Regression 羅吉斯迴歸 | part1 – 資料探勘與處理 | 統計 R語言
  4. Decision Tree 決策樹 | CART, Conditional Inference Tree, Random Forest
  5. Regression Tree | 迴歸樹, Bagging, Bootstrap Aggregation | R語言
  6. Random Forests 隨機森林 | randomForest, ranger, h2o | R語言
  7. Gradient Boosting Machines GBM | gbm, xgboost, h2o | R語言
  8. Hierarchical Clustering 階層式分群 | Clustering 資料分群 | R統計
  9. Partitional Clustering | 切割式分群 | Kmeans, Kmedoid | Clustering 資料分群
  10. Principal Components Analysis (PCA) | 主成份分析 | R 統計

參考:

  1. 歐萊禮  R資料科學

在《Logistic Regression 羅吉斯迴歸 | part2 – 模型建置、診斷與比較 | R語言》中有 3 則留言

  1. 感謝您的這篇文章,收穫非常多,不過我想請問總結的第二段
    回歸模型基本上並不包含變數篩選
    意思是,我如果利用glm所建立的羅吉斯模型,我並不能作挑選有顯著的變數當作我的重要變數嗎?

    1. 您好,
      「回歸模型基本上並不包含變數篩選」這句話在這邊指的是說「尋找模型方程式的最佳變數組合」,
      因為每一次跑羅吉斯模型我們只能寫死指定某n個x變數來解釋y變數的配飾效果(也會告訴我們每個x變數與y變數的關係顯著性),但不知道是否用某n個x變數就是最好的回歸方程式的組合。
      所以如果要找「尋找模型方程式的最佳變數組合」,我們會額外進行幾個處理,常見的方法包括(1)「逐步回歸」和(2)「lasso回歸(regularization regression)」。
      (1)逐步回歸會使用向前、向後或雙向逐一加減x變數來看哪個x變數組合的方程式的回歸模型表現最好;
      (2)而後者lasso回歸則會幫每個x變數加入權重,並在回歸目標是加入懲罰因子(限制模型複雜度),來看每個x變數的權重要拿捏在多少程度(0~1)才能配釋出最佳回歸方程式。
      希望有回答到你!^^

  2. 您好:
    看了此篇文章獲益良多,但有一個部分想請教。
    在8-4.Support Vector Machine(SVM)中,
    predict(svm4,testData, type = “decision”)計算出來的數值有超過1或小於-1,例如:-2.3、3.005,
    想問這個是SVM-Y的預測機率值嗎?感謝!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *