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

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

—1. การวัดประสิทธิภาพโมเดลแบบ regression

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

– Mean Squared Error(MSE)

– Root-Mean-Squared-Error(RMSE)

– Mean-Absolute-Error(MAE)

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

—2. การวัดประสิทธิภาพโมเดลแบบ classification

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

◦ Confusion Matrix

◦ Precision and Recall

◦ Accuracy

◦ F-Measure

◦ ROC Graph and Area Under Curve (AUC)

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

Confusion Matrix

confusion matrix ที่เราสามารถพบเจอจะมีรูปแบบ 2 แบบ แบบที่ค่า predict อยู่ซ้ายมือ,actual อยู่ด้านบน กับอีกแบบคือ actual อยู่ซ้ายมือและ predict อยู่ด้านบน ตามภาพด้านล่างนี้ครับ

  1. แบบ predict-actual
ที่มา : https://www.semanticscholar.org/paper/Learning-ensembles-of-first-order-clauses-that-Shavlik-Goadrich/bf713c58e965e3ddbcdc65f2095b6a91823339d0

2. แบบ actual-predict

ที่มา : https://medium.com/@mirthful_sunset_cattle_231/confusion-matrix-48cc396b1b58

ตัวอย่าง Confusion Matrix

ที่มา : https://towardsdatascience.com/understanding-confusion-matrix-a9ad42dcfd62

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

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


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


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


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

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


การคำนวณหาค่าการวัดผลต่างๆ

1) Accuracy

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

2) Precision หรือ Positive Predictive Value

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

3) Sensitivity หรือ Recall

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

4) Specificity

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

5) F1-Score

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

ROC Curve (receiver operating characteristic)

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

ที่มา : https://www.datasciencecentral.com/profiles/blogs/roc-curve-explained-in-one-picture

1. Optimal cut-off point ของ ROC

การเลือก Optimal cut-off point หรือจุดที่อยู่บนกราฟ ที่จะได้ค่า AUC มากที่สุด (ให้ผลดีที่สุด) คือ จุดที่อยุ่ใกล้มุมซ้ายบนมากที่สุด ซึ่งจะเป็นจุดที่ Sensitivity สูงและ Specificity สูงด้วยเช่นกัน

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

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

Precision-Recall Curve

ที่มา : https://www.r-bloggers.com/2020/01/area-under-the-precision-recall-curve/

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

7