ปรับแต่ง 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
)