เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

glmnet พร้อม trainControl และการปรับจูนแบบกำหนดเอง

ดังที่เห็นในวิดีโอ โมเดล glmnet สามารถ fit หลายโมเดลพร้อมกันในครั้งเดียว (ซึ่งเป็นหนึ่งในข้อดีของแพ็กเกจนี้) คุณสามารถใช้ประโยชน์จากจุดนี้ได้ด้วยการส่งค่า lambda จำนวนมาก ซึ่งควบคุมระดับ penalization ในโมเดล ฟังก์ชัน train() ฉลาดพอที่จะ fit เพียงหนึ่งโมเดลต่อค่า alpha และส่งค่า lambda ทั้งหมดพร้อมกันเพื่อการ fitting แบบขนาน

ตัวอย่าง tuning grid ที่แนะนำสำหรับโมเดล glmnet คือ:

expand.grid(
  alpha = 0:1,
  lambda = seq(0.0001, 1, length = 100)
)

กริดนี้สำรวจค่า lambda จำนวนมาก (ในที่นี้คือ 100 ค่า) ตั้งแต่ค่าเล็กมากจนถึงค่าใหญ่มาก (คุณสามารถเพิ่มค่า lambda สูงสุดเป็น 10 ได้ แต่สำหรับแบบฝึกหัดนี้ 1 ถือเป็นขอบเขตบนที่เหมาะสมแล้ว)

หากต้องการสำรวจโมเดลน้อยลง ให้ใช้ลำดับ lambda ที่สั้นลง ตัวอย่างเช่น lambda = seq(0.0001, 1, length = 10) จะ fit 10 โมเดลต่อค่า alpha หนึ่งค่า

นอกจากนี้ tuneGrid ดังกล่าวยังให้คุณศึกษาโมเดล penalized ทั้งสองรูปแบบ ได้แก่ ridge regression และ lasso regression โดย alpha = 0 คือ pure ridge regression และ alpha = 1 คือ pure lasso regression คุณยังสามารถ fit โมเดลแบบผสม (หรือที่เรียกว่า elastic net) โดยกำหนด alpha ระหว่าง 0 ถึง 1 ตัวอย่างเช่น alpha = 0.05 จะเป็น ridge regression 95% และ lasso regression 5%

ในแบบฝึกหัดนี้ จะสำรวจเฉพาะ 2 รูปแบบสุดขั้ว ได้แก่ pure ridge และ pure lasso regression เพื่อแสดงให้เห็นความแตกต่างระหว่างทั้งสอง

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Machine Learning ด้วย caret ใน R

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เทรนโมเดล glmnet บนข้อมูล overfit โดยให้ y เป็นตัวแปรตอบสนอง และตัวแปรอื่นทั้งหมดเป็นตัวแปรอธิบาย อย่าลืมใช้ trainControl แบบกำหนดเองจากแบบฝึกหัดก่อนหน้า (myControl) และใช้ tuneGrid แบบกำหนดเองเพื่อสำรวจ alpha = 0:1 พร้อมค่า lambda จำนวน 20 ค่าในช่วง 0.0001 ถึง 1 สำหรับแต่ละค่า alpha
  • พิมพ์ model ออกทาง console
  • พิมพ์ค่า max() ของสถิติ ROC ใน model[["results"]] โดยเข้าถึงได้ผ่าน model[["results"]][["ROC"]]

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Train glmnet with custom trainControl and tuning: model
model <- train(
  ___, 
  ___,
  tuneGrid = ___(
    ___,
    ___
  ),
  method = ___,
  trControl = ___
)

# Print model to console


# Print maximum ROC statistic
แก้ไขและรันโค้ด