แนะนำ glmnet

Machine Learning ด้วย caret ใน R

Zach Mayer

Data Scientist at DataRobot and co-author of caret

แนะนำ glmnet

  • ต่อยอดจาก glm โดยมีการคัดเลือกตัวแปรในตัว
  • ช่วยจัดการกับ collinearity และขนาดตัวอย่างที่เล็ก
  • มี 2 รูปแบบหลัก
    • Lasso regression: ลงโทษจำนวนสัมประสิทธิ์ที่ไม่เป็นศูนย์
    • Ridge regression: ลงโทษขนาดสัมบูรณ์ของสัมประสิทธิ์
  • มุ่งหาโมเดลที่กระชับ (เรียบง่าย)
  • ใช้ร่วมกับโมเดล random forest ได้ดี
Machine Learning ด้วย caret ใน R

การปรับจูนโมเดล glmnet

  • ผสานระหว่าง lasso และ ridge regression
  • ปรับสัดส่วนของทั้งสองโมเดลได้
  • alpha [0, 1]: จาก ridge ล้วนถึง lasso ล้วน
  • lambda (0, infinity): ขนาดของค่าปรับ
Machine Learning ด้วย caret ใน R

ตัวอย่าง: "don't overfit"

# 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
)
Machine Learning ด้วย caret ใน R

ลองใช้ค่าเริ่มต้น

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

# Plot results
plot(model)
  • alpha 3 ค่า
  • lambda 3 ค่า
Machine Learning ด้วย caret ใน R

ดูผลลัพธ์จากกราฟ

กราฟเส้นแสดง ROC แบบ cross-validated ตามเปอร์เซ็นต์การผสมสำหรับพารามิเตอร์ regularization สามค่า โดยมีจุดสูงสุดที่ 0.55 ที่ค่ากลางของพารามิเตอร์ regularization

Machine Learning ด้วย caret ใน R

มาฝึกกันเถอะ!

Machine Learning ด้วย caret ใน R

Preparing Video For Download...