認識 glmnet

使用 R 的 caret 進行 Machine Learning

Zach Mayer

Data Scientist at DataRobot and co-author of caret

認識 glmnet

  • 擴充 glm 模型,內建變數選擇
  • 有助處理共線性與小樣本
  • 兩種主要形式
    • Lasso 迴歸:懲罰非零係數的數量
    • Ridge 迴歸:懲罰係數絕對大小
  • 目標是取得精簡(簡單)的模型
  • 與 random forest 模型相輔相成
使用 R 的 caret 進行 Machine Learning

調整 glmnet 模型

  • lasso 與 ridge 的組合
  • 可同時擬合兩者的混合
  • alpha [0, 1]:從純 ridge 到純 lasso
  • lambda (0, infinity):懲罰強度
使用 R 的 caret 進行 Machine Learning

範例:「別過度擬合」

# Load data
overfit <- read.csv("overfit.csv")

# Make a custom trainControl
myControl <- trainControl(
  method = "cv", 
  number = 10,
  summaryFunction = twoClassSummary,
  classProbs = TRUE, # <- Super important!
  verboseIter = TRUE
)
使用 R 的 caret 進行 Machine Learning

先試預設值

# Fit a model
set.seed(42)
model <- train(
  y ~ ., 
  overfit, 
  method = "glmnet", 
  trControl = myControl
)

# Plot results
plot(model)
  • 3 個 alpha
  • 3 個 lambda
使用 R 的 caret 進行 Machine Learning

視覺化結果

依混合比例與 3 個正規化參數繪製的交叉驗證 ROC 折線圖。當正規化參數取中間值、混合比例約 0.55 時達到峰值。

使用 R 的 caret 進行 Machine Learning

一起來練習吧!

使用 R 的 caret 進行 Machine Learning

Preparing Video For Download...