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

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

– Mean Squared Error(MSE)

– Root-Mean-Squared-Error(RMSE)

– Mean-Absolute-Error(MAE)

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

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

1) Accuracy

2) Precision

3) Recall

4) F1-Score

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

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

1) True Positive คือ โมเดลบอกท้อง ผลจริงคือท้อง


2) False Positive คือ โมเดลบอกท้อง ผลจริงคือไม่ท้อง


3) False Negative คือ โมเดลบอกไม่ท้อง ผลจริงคือท้อง


4)True Negative คือ โมเดลบอกไม่ท้อง ผลจริงคือไม่ท้อง

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

1) Accuracy ค่าความแม่นยำโดยรวม คำนวนได้จากสูตร
Accuracy = (TP+TN)/(TP+TN+FP+FN) = (13+16)/(13+16+1+0) = 0.97
หรือ ค่าที่โมเดลทายถูกทั้งหมด/ค่าทั้งหมด

2) Precision ความแม่นยำที่สนใจแค่ในส่วนที่โมเดลทำนาย
Precision = TP/(TP+FP) = 13/(13+1) = 0.93
หรือ ค่าที่โมเดลทายถูก/ค่าที่โมเดลทำนายว่าเกิดเหตุการณ์ทั้งถูกและผิด

3) Recall ความแม่นยำที่สนใจในส่วนของเหตุการณ์จริงที่เกิด
Recall = TP/(TP+FN) = 13/(13+0) = 1
หรือ ค่าที่โมเดลทายถูก/ค่าเหตุการณ์จริงที่เกิดทั้งถูกและผิด


4) F1-Score เป็นค่าที่ได้จากการเอาค่า precision และ recall มาคำนวณรวมกัน เพื่อสะดวกในการหาตัววัดผลที่ไม่ต้องเลือกอย่างใดอย่างหนึ่ง
F1 = 2*[(precision*recall)/(precision+recall)] = 2*[(0.93*1)/(0.93+1)]
= 0.96

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

0