ทำความเข้าใจ accuracy,precision,recall,f1-score

ในการวัดประสิทธิภาพของ model ที่เราได้สร้างมาด้วยความยากลำบากนั้น ซึ่งเรียกขั้นตอนนี้ว่า evaluate model ในกรณีที่เป็นแบบ regression หรือ target ข้อมูลเป็นแบบ scale หรือแบบตัวเลขซึ่งมีทั้งแบบ discrete พวกจำนวนเต็มและ continuous แบบต่อเนื่อง เราจะใช้ตามข้อมูลด้านล่าง ดังนี้

—การวัดประสิทธิภาพ regression

– Mean Squared Error(MSE)

– Root-Mean-Squared-Error(RMSE)

– Mean-Absolute-Error(MAE)

ส่วนตัวจะใช้ RMSE เป็นหลักครับ สูตรคำนวณตามภาพด้านบนครับ

—การวัดประสิทธิภาพ classification

classification หรือ target เป็นแบบ categorical หรือถ้ามีสองค่าก็จะเรียกว่าไบนารี เช่น การทายว่าเป็นหมาหรือแมว , เป็นมะเร็งหรือไม่เป็น, ท้องหรือไม่ท้อง เป็นต้น กรณีนี้เราจะใช้ดังนี้

◦ Confusion Matrix

◦ Precision and Recall

◦ Accuracy

◦ F-Measure

◦ ROC Graph and Area Under Curve (AUC)

ซึ่งในบทความนี้เราจะมาเน้นกันในส่วนของ การวัดประสิทธิภาพของ model classification กันครับ ก่อนอื่นเราต้องมาทำความรู้จักกับ False Positive,True Positive, False Negative,True Negative ซึ่งค่าเหล่านี้จะได้มาจากตาราง confusion matrix ครับ เรามาดูตัวอย่างกันครับ

จากภาพข้างบน ในกรณีนี้ผู้ทำภาพซึ่งน่าจะเป็นชาวต่างชาติต้องการสื่อให้เข้าใจง่ายขึ้นครับ ในภาพนี้เราจะแทนคุณหมอให้เป็น model ที่ทำนายว่าคนไข้กำลังตั้งท้องอยู่หรือไม่

1) True Positive คือ จำนวนที่ทำนายตรงกับข้อมูลจริงในคลาสที่กำลังพิจารณา (โมเดลบอกท้อง ผลจริงคือท้อง)


2) False Positive คือ จำนวนที่ทำนายผิดเป็นคลาสที่กำลังพิจารณา (โมเดลบอกท้อง ผลจริงคือไม่ท้อง)


3) False Negative คือ จำนวนที่ทำนายผิดเป็นคลาสที่ไม่ได้พิจารณา (โมเดลบอกไม่ท้อง ผลจริงคือท้อง)


4)True Negative คือ จำนวนที่ทำนายตรงกับข้อมูลจริงในคลาสที่ไม่ได้พิจารณา (โมเดลบอกไม่ท้อง ผลจริงคือไม่ท้อง)

จากตัวอย่างนี้ แสดงให้เห็นว่า จะมีกรณีที่เราจำเป็นต้องพิจารณาจากสถานการณ์จริงว่าเหตุการณ์ไหนที่อยู่ในเกณฑ์ที่รับได้หรือเหตุการณ์ไหนที่ต้องระมัดระวังไม่ให้เกิดขึ้น กรณีข้างบนนี้ type 2 error น่าจะไม่ควรให้เกิด เพราะจะทำให้เกิดอันตรายได้ ดังนั้น ควรลดค่า False Negative ให้ได้มากที่สุด ต่อไปเรามาดูว่าจะนำค่าเหล่านี้ไปใช้กับอะไรบ้าง

สูตรคำนวณค่าต่างๆ

Confusion Matrix

ตัวอย่างการคำนวณ

1) Accuracy

ค่าความแม่นยำโดยรวม คำนวนได้จากสูตร
Accuracy = (TP+TN)/(TP+TN+FP+FN) = (20+1820)/(20+1820+180+10) = 0.91
หรือ ค่าที่โมเดลทายถูกทั้งหมด/ค่าทั้งหมด

2) Precision หรือ Positive Predictive Value

ความแม่นยำที่สนใจแค่ในส่วนที่โมเดลทำนายถูกว่าเป็นคลาสที่กำลังพิจารณา
Precision = TP/(TP+FP) = 20/(20+180) = 0.1
หรือ ค่าที่โมเดลทายเป็นคลาสที่กำลังพิจารณาถูก/ค่าที่โมเดลทำนายว่าเป็นคลาสที่กำลังพิจารณาทั้งถูกและผิด

3) Sensitivity หรือ Recall

ความไว ความแม่นยำที่สนใจในส่วนของเหตุการณ์จริงที่เกิด
Sensitivity/Recall = TP/(TP+FN) = 20/(20+10) = 0.67
หรือ ค่าที่โมเดลทายเป็นคลาสที่กำลังพิจารณาถูก/ค่าเหตุการณ์จริงเป็นคลาสที่กำลังพิจารณาทั้งถูกและผิด

4) Specificity

ความจำเพาะ หาค่าได้จากสูตร
Specificity = TN/(TN+FP) = 1820/(1820+180) = 0.91

5) F1-Score

เป็นค่าที่ได้จากการเอาค่า precision และ recall มาคำนวณรวมกัน F1 สร้างขึ้นมาเพื่อเป็น single metric ที่วัดความสามารถของโมเดล ไม่ต้องเลือกระหว่าง precision, recall เพราะเฉลี่ยให้แล้ว
F1 = 2*[(precision*recall)/(precision+recall)] = 2*[(0.1*0.67)/(0.1+0.67)]
= 0.17

การดูผล Sensitivity and Specificity

ความไว(Sensitivity) มีประโยชน์ในการป้องกันผลลบปลอม (false negative / Type 2 error) เพราะว่าการทดสอบยิ่งไวมากเท่าไร โอกาสการได้ผลลบ (เช่น การพบว่าไม่มีโรค แต่จริง ๆ มีโรค) ก็น้อยลงเท่านั้น และดังนั้น ถ้าความไวอยู่ที่ 100% โอกาสได้ผลลบปลอมก็อยู่ที่ 0% 

ความจำเพาะ(Specificity) มีประโยชน์ในการป้องกันผลบวกปลอม (false positive / Type 1 error) เพราะว่าการทดสอบยิ่งจำเพาะมากเท่าไร โอกาสการได้ผลบวก (เช่น การพบว่ามีโรคแต่จริง ๆ ไม่มีโรค) ก็น้อยลงเท่านั้น และดังนั้น ถ้าความจำเพาะอยู่ที่ 100% โอกาสได้ผลบวกปลอมก็อยู่ที่ 0%

ตัวอย่าง

เพื่อความปลอดภัยของท่าอากาศยาน เครื่องตรวจโลหะอาจจะตั้งให้ส่งสัญญาณเตือนแม้สำหรับวัตถุที่เสี่ยงน้อย เช่น หัวเข็มขัดหรือลูกกุญแจ (คือการตรวจมีความจำเพาะต่ำ specificity และ การตรวจมีความไวสูง sensitivity) เพื่อลดโอกาสเสี่ยงพลาดวัตถุอันตราย การแลกเปลี่ยนข้อดีข้อเสียเช่นนี้สามารถแสดงในกราฟเส้นโค้ง receiver operating characteristic (ROC) การทดสอบที่สมบูรณ์จะไว 100% (เช่น คนป่วยทั้งหมดมีผลบวก) และจำเพาะ 100% (เช่น คนปกติทั้งหมดมีผลลบ) แต่ว่า โดยทฤษฎีแล้ว การทดสอบทุกอย่างจะมีขอบเขตความผิดพลาดต่ำสุดที่เรียกว่า Bayes error rate

การวัดผลในทางการแพทย์

ค่า Sensitivity หรือ “true positive rate” คือสัดส่วนของผู้ป่วยที่ให้ผลการทดสอบเป็นบวกต่อผู้ป่วยทั้งหมด ในทางปฏิบัติควรเลือกใช้การตรวจที่มีค่า Sensitivity สูงๆ ในการตรวจคัดกรองผู้ป่วยสําหรับโรคที่มีความรุนแรงมากแต่สามารถรักษาได้ นอกจากนี้ยังเหมาะจะใช้ เป็นการตรวจเบื้องตนเพื่อลดจํานวนผู้ป่วยที่จะต้องทำการตรวจที่จําเพาะ(specitivity)ขึ้นเพื่อการวินิจฉัยต่อไป ผลการตรวจด้วยวิธีการที่มีค่า Sensitivity สูง

ค่า Specificity หรือ “true negative rate” สูง หมายความว่าผู้ป่วยที่โมเดลทำนายว่าเป็นโรคมีโอกาสที่จะเป็นโรคจริงสูง ดังนั้นจึงมีประโยชน์ในการยืนยันการวินิจฉัยในกรณีที่มีข้อมูลจากการตรวจอื่นชี้แนะมาบ้างแล้วว่าผู้ป่วยน่าจะป่วยด้วยโรคนั้น และช่วยป้องกันกรณีที่โมเดลทำนายว่ามีโรคแต่จริงๆไม่มี ซึ่งจะก่อให้เกิดผลเสียแก่ผู้ป่วยอย่างมากทั้งด้าน จิตใจและการรักษาเสี่ยงต่ออันตราย เช่น กรณีของโรคมะเร็ง หรือทางด้านค่าใช้จ่ายในการรักษา เป็นต้น

ROC Curve (receiver operating characteristic)

ในการศึกษาเรื่อง ROC curve มี 2 ประเด็นสำคัญ ที่ต้องให้ความสำคัญ ได้แก่

1. Optimal cut-off point ของ ROC

การเลือก Optimal cut-off point ที่จะได้ค่า AUC มากที่สุด (ให้ผลดีที่สุด) คือ จุดที่อยุ่ใกล้มุมซ้ายบนมากที่สุด ซึ่งจะเป็นจุดที่ Sensitivity สูงและ Specificity สูงด้วยเช่นกัน ซึ่งในทางปฏิบัตินั้น ขึ้นกับจุดประสงค์ของการใช้เครื่องมือ เช่น ถ้าต้องการเครื่องมือที่ sensitivity สูงก็อาจเลือกใช้จุด A แต่ถ้าต้องการใช้เครื่องมือที่ specificity สูงก็อาจเลือกใช้จุด D เป็นต้น รวมถึงปัจจัยอื่น ๆ เช่น ในแง่ของการนำเครื่องมือมาใช้จริงอาจต้องคำนึงถึงผลต่างๆที่ตามมา เช่น cost,สภาพจิตใจ อื่นๆ ตามที่กล่าวมาแล้วข้างต้น

2. พื้นที่ใต้กราฟ (AUC; Area under the curve)

ค่ายิ่งเข้าใกล้ 1 มากยิ่งดี เพราะโมเดลจะมีประสิทธิภาพ

ตัวอย่างอื่นๆของ ROC Curve

Precision-Recall Curve

สรุปในส่วนการวัดผล classification คิดว่าคงต้องพิจารณาทั้งหมด ตั้งแต่ confusion matrix จนถึงค่าข้างบนดังกล่าวข้างต้นครับ

1