คำนวณ Confusion Matrix
อย่างที่เห็นในวิดีโอ confusion matrix เป็นเครื่องมือที่มีประโยชน์มากสำหรับการปรับผลลัพธ์ของโมเดลและตรวจสอบผลลัพธ์ที่เป็นไปได้ทั้งหมดของการพยากรณ์ (true positive, true negative, false positive, false negative)
ก่อนสร้าง confusion matrix ต้องกำหนด "เกณฑ์" สำหรับตัดค่าความน่าจะเป็นที่พยากรณ์ไว้ เพื่อแปลงค่าความน่าจะเป็นให้เป็น factor ของคลาสที่พยากรณ์ ใช้ ifelse() ร่วมกับ factor() ดังนี้:
pos_or_neg <- ifelse(probability_prediction > threshold, positive_class, negative_class)
p_class <- factor(pos_or_neg, levels = levels(test_values))
confusionMatrix() ใน caret พัฒนาต่อยอดจาก table() ของ R พื้นฐาน โดยเพิ่มสถิติเสริมที่มีประโยชน์หลายรายการนอกเหนือจากตารางอัตราพื้นฐาน สามารถคำนวณ confusion matrix (พร้อมสถิติที่เกี่ยวข้อง) โดยใช้ผลลัพธ์ที่พยากรณ์และผลลัพธ์จริง เช่น:
confusionMatrix(p_class, test_values)
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning ด้วย caret ใน R
คำแนะนำการฝึกหัด
- ใช้
ifelse()เพื่อสร้าง character vector ชื่อm_or_rโดยให้เป็นคลาสบวก"M"เมื่อpมากกว่า 0.5 และเป็นคลาสลบ"R"ในกรณีอื่น - แปลง
m_or_rให้เป็น factor ชื่อp_classโดยมีระดับ (levels) เหมือนกับของtest[["Class"]] - สร้าง confusion matrix ด้วย
confusionMatrix()โดยส่งp_classและคอลัมน์"Class"จากชุดข้อมูลtestเป็นอาร์กิวเมนต์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# If p exceeds threshold of 0.5, M else R: m_or_r
# Convert to factor: p_class
# Create confusion matrix