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

ปรับแต่ง trainControl

อย่างที่เห็นในวิดีโอ พื้นที่ใต้เส้นโค้ง ROC เป็นตัวเลขสรุปเดียวที่มีประโยชน์มาก สำหรับวัดความสามารถของโมเดลในการแยกแยะคลาสบวกออกจากคลาสลบ (เช่น แยกทุ่นระเบิดออกจากหิน) AUC ที่ 0.5 ไม่ดีไปกว่าการเดาสุ่ม AUC ที่ 1.0 คือโมเดลที่ทำนายได้สมบูรณ์แบบ และ AUC ที่ 0.0 คือโมเดลที่ทำนายผิดพลาดอย่างสมบูรณ์ (ซึ่งแทบไม่เกิดขึ้นในทางปฏิบัติ)

เมตริกนี้มักมีประโยชน์กว่าการจัดอันดับโมเดลด้วยความแม่นยำที่เกณฑ์คงที่เพียงอย่างเดียว เนื่องจากโมเดลแต่ละตัวอาจต้องการขั้นตอนการปรับเทียบที่แตกต่างกัน (เช่น การดู confusion matrix ในแต่ละขั้น) เพื่อหาเกณฑ์การจำแนกที่เหมาะสมที่สุด

สามารถใช้ฟังก์ชัน trainControl() ใน caret เพื่อให้โมเดลใช้ AUC แทนความแม่นยำในการปรับพารามิเตอร์ได้ โดยฟังก์ชัน twoClassSummary() ช่วยให้ทำสิ่งนี้ได้อย่างสะดวก

เมื่อใช้ twoClassSummary() อย่าลืมระบุอาร์กิวเมนต์ classProbs = TRUE ด้วย มิฉะนั้นโมเดลจะเกิดข้อผิดพลาด (เนื่องจากการคำนวณ AUC ต้องการค่าความน่าจะเป็นของคลาส ไม่ใช่แค่การทำนายคลาสเพียงอย่างเดียว)

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

Machine Learning ด้วย caret ใน R

ดูคอร์ส

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

  • ปรับแต่งออบเจกต์ trainControl ให้ใช้ twoClassSummary แทน defaultSummary
  • ใช้ cross-validation แบบ 10-fold
  • อย่าลืมกำหนดให้ trainControl() คืนค่าความน่าจะเป็นของคลาสด้วย

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

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

# Create trainControl object: myControl
myControl <- trainControl(
  method = "cv",
  number = ___,
  summaryFunction = defaultSummary,
  classProbs = ___, # IMPORTANT!
  verboseIter = TRUE
)
แก้ไขและรันโค้ด