ในมุมมองของการล้อมกรอบให้เจอวัตถุที่ต้องการ
1. ค่า Precision
ค่า Precision วัดจากสูตร
ค่า Precission ไม่ได้ยึด Ground Truth เป็นตัวเทียบแต่ยึดจากสิ่งที่โมเดลล้อมมาได้ทั้งหมด สมมุตว่ามี 1 class เท่านั้น ดังนั้น
- ค่า TP + FP คือที่โมเดลล้อมมาได้ทั้งหมด (ไม่ใช่กรอบ Ground Truth ที่กำหนดไว้เพื่อนำไป Train ภาพ)
- ล้อมมาแล้วจะโดนวัตถุจริงหรือไม่โดนหรือวาดกรอบมั่วๆก็ได้
- ค่า Precision = ล้อมจริงและถูกต้อง / จำนวนที่ล้อมทั้งหมด
- ค่านี้สามารถมั่วได้ โดยมั่วจากการที่ในภาพมีวัตถุเป้าหมาย อยู่เป็นจำนวนมาก (เช่น หาคน จากภาพฝูงคน)
- การล้อมมั่วเยอะๆ ไปทั่วทั้งภาพ ย่อมไปโดนกับวัตถุเป้าหมายจำนวนมาก กลายเป็นค่า Precission สูง (สูงแบบยิงมั่ว)
- ดังนั้นค่า Precission = 0.8 หมายถึง ล้อมมา 10 กรอบ มีถูกต้อง 8 กรอบ
- แต่ค่า Precission = 0.8 นี้ไม่ได้บอกว่าโมเดลมีคุณภาพดีหรือไม่เพราะถ้าภาพมีวัตถุเป้าหมายอยู่เต็มไปหมดล้อมอย่างไรก็โดน ในทางกลับกันถ้าในภาพหาวัตถุเป้าหมายยากมาก เช่น หาคนที่ใส่หมวกในภาพฝูงชน แม่นยำ 0.8 ถือว่าดีมากเพราะล้อมกรอบไป 10 ครั้งเจอ 8 คนที่ใส่หมวกตามที่ตั้งเป้าไว้
2. ข้อด้อยของ Precission
จากสูตรข้างต้นแสดงว่า ค่า Precission วัดจาก
- Precision = หาเจอและถูก / (หาเจอและถูก + หาเจอแต่ผิด)
- Precision = หาเจอและถูก / หาเจอทั้งหมด
- เช่น ถ้า หาเจอทั้งหมด 100 และถูกทั้งหมด 100 ค่า Precision คือ 1.0
- แต่อย่าลืมว่า หาเจอ 100 นั้น ถ้า Dataset มีแต่ Positive ไม่ว่าจะหายังไงก็เจอ
แสดงว่าถ้า Dataset Imbalanced เช่น Positive มีจำนวนเยอะมากๆ แต่ Negative น้อยมาก เช่น Positive 200,000 คน และ Negative แค่ 10 คน ดังนั้นแค่สุ่มๆหามาก็จะถูกทั้งหมด
3. ค่า Recall (หรือ TPR)
ค่า Recall หรือเรียกว่า TPR คือ True Positive Rate ยึดเทียบกับ Ground Truth โดยมีสูตรเป็น
เนื่องจากในกรณีของภาพ TP + FN คือ กรอบทั้งหมดที่นักวิจัยกำหนดเป้าวัตถุไว้แล้วนำไปเทรน ดังนั้น
หรือเขียนอีกแบบเป็น
สังเกตว่าค่า Recall ยึดเทียบกับจำนวนที่กำหนดไว้ตอนนำไปเทรนภาพไม่ใช่จำนวนที่โมเดลล้อมเจอเอง ดังนั้นค่า Recall จึงเป็นค่าที่ใช้ประสิทธิภาพจริงของโมเดลว่าทำงานได้แม่นยำขนาดไหน เช่น ถ้ามีค่า Recall = 0.8 หมายถึง กำหนดกรอบที่ถูกต้องไว้ 10 กรอบ และระบบเจอที่ถูกต้องเพียง 8 กรอบเท่านั้น
ความปล่อยปละละเลยของ Recall คือ
Recall = จำนวนที่ล้อมกรอบและถูกต้อง เทียบกับ จำนวนที่กำหนดไว้ คำว่า จำนวนที่ล้อมกรอบและถูกต้องนี้ มันจะล้อมไปกี่ครั้งก็ได้ ดังนั้น Recall = 0.8 มีการกำหนดกรอบเป้าหมายไว้ 10 ระบบอาจจะล้อมไป 16 ครั้ง ใน 16 ครั้งมี ถูกต้อง 8 ครั้งไม่ถูกต้อง 8 จำนวน 8 ครั้งที่ไม่ถูกต้องนี้ ไม่ได้นำมาคิดใน Recall เพราะสูตรเอาแค่ที่ล้อมถูกต้องมาคำนวณกับค่า Ground Truth เท่านั้น
4. ข้อด้อยของ Recall
ค่า Recall คำนวณจาก
- Recall = หาเจอแล้วถูก / จำนวนที่ถูกทั้งหมด
- จำนวนที่ถูกทั้งหมด เป็นจำนวนที่ระบบกำหนดไว้ว่าเป็น Positive
- กรณีที่ Imbalanced Dataset เราแยกกลุ่ม Positive กับ Negative เอาไว้
- จำนวนตัวอย่างที่ Positive เราจะรู้อยู่แล้ว เช่น มีรายการ Fraud 10 รายการ
- ถ้าระบบเจอรายการ Fraud 5 รายการ แสดงว่าค่า Recall = 5 / 10 = 0.5
ข้อด้อย – ข้อด้อยของ Recall คือ สังเกตว่า Recall ไม่ได้สนใจ False Alarm หรือ False Positive ดังนั้น
- ระบบตรวจจับที่ Alert ทุกครั้งที่มีคนผ่านประตู ก็จะมีค่า Recall = 1.0
- เพราะว่ามันตรวจพบทุกคนเลย ในทุกคนนั้นต้องมี Positive ปนมาอยู่แล้ว
5. เปรียบเทียบ Precision กับ Recall
เนื่องจาก Precision คำนวณจาก
- Precision = หาเจอและถูก / จำนวนที่หาเจอทั้งหมด
- Recall = หาเจอและถูก / จำนวนที่ถูกทั้งหมด
จะเห็นว่าค่า 2 ค่านี้ ใช้เศษคือ หาเจอและถูก ดังนั้นกรณีที่
- ถ้าระบบมั่วหา แล้วกลุ่ม Positive เยอะมาก
- ถ้ากลุ่ม Positive เยอะกว่ากลุ่ม Negative และระบบมั่วหา
- ระบบจะเจอ Positive เยอะมากๆเพราะกลุ่ม Positive มันใหญ่ ดังนั้น
- ค่า Precision จะสูง เช่น 0.8 แต่ค่า Recall จะต่ำเพราะมั่วหา อย่างมากก็ 0.5
- ถ้าระบบมั่วหาถี่ๆมากๆ แบบ Alert เกือบทุกครั้ง แล้วกลุ่ม Positive น้อยมาก
- ระบบจะเจอ Positive สูงมากจนเกือบครบเลย เพราะ Alert เกือบทุกครั้ง
- ค่า Recall จะสูงมากเช่น 0.9
- ค่า Precission จะน้อยมากๆ เพราะ Alert เยอะตัวหารจะใหญ่ อย่างมากก็ 0.5
ดังนั้นจะเห็นว่าในทั้ง 2 กรณีค่า Precision กับ Recall จะต้องนำมาใช้ร่วมกันในการประเมินประสิทธิภาพโมเดล
6. ค่า F-Score
ค่า F-Score มีสูตรถ่วงน้ำหนักที่ตัวหารเป็น 2 เพราะตัวหารเอา Precision + Recall จะได้สูตรเป็น

รูปภาพ 432 สูตรทั่วไปของ F-Score
กรณีที่ให้ความสำคัญ
- B > 1 เน้น Recall คือ เน้นให้เจอให้ได้ไม่สนใจว่าจะกี่ครั้ง เน้นว่า True Positive Rate คือ อัตราที่ระบบตอบถูก (โดยไม่สนใจจำนวนครั้งที่ตอบ)
- B < 1 เน้น Precision คือ เน้นแม่นยำ คือ จำนวนครั้งที่ถูก / จำนวนครั้งที่ยิง
- B = 1 เน้นเท่ากันทั้ง เน้นเจอ และ แม่นยำ
ดังนั้นถ้าเราดูทั้ง 2 กรณีที่จับมั่ว
- ถ้าจับมั่วและกลุ่ม Positive เยอะมาก จะได้ Precision สูง เช่น 0.8 แต่ Recall ต่ำเช่น 0.5 จะได้ F1-Score เป็น 2(0.8)(0.5)/(0.8 + 0.5) = 2(0.4)/1.3 = 0.61
- ถ้าจับมั่วและกลุ่ม Positive น้อย แต่จับถี่ๆมากๆรัวๆ จะได้ Precision ต่ำ เช่น 0.5 แต่ Recall จะสูงเช่น 0.8 ก็จะได้ F1-Score เป็น 2(0.5)(0.8)/(0.5 + 0.8) = 2(0.4)/1.3 = 0.61
7. Precision และ Recall กรณีจับยาเสพติด
ตำรวจได้รับรายงานว่ามีการซื้อขายยาเสพติดในผับแห่งหนึ่ง ตำรวจจะทำอย่างไร
กรณีที่ปิดผับและไล่จับหมดทุกคน
- Precision = จำนวนที่เจอและถูก / จำนวนที่เจอทั้งหมด
- Recall = จำนวนที่เจอและถูก / จำนวนที่ถูกทั้งหมด
กรณีนี้สมมุติว่าในผับมีคน 100 คน และมีคนซื้อขายยาเสพติด 2 คน ดังนั้น
- Precision = 2 / 100 = 0.02
- Recall = 2 / 2 = 1.0
ซึ่งค่า Precision ต่ำมาก แต่ค่า Recall สูงมาก ค่า Recall ไว้วัดประสิทธิผล แต่ค่า Precision ไว้วัดประสิทธิภาพ
8 วิธีดู ROC Curve
เนื่องจาก ROC Curve นำ TPR กับ FPR มาพล็อตในกราฟเดียวกัน ค่า FPR มีสูตรเป็น
FPR = FP / (FP + TN)
นั่นคือคำนวณจาก จำนวนที่ระบบล้อมผิด เทียบกับ จำนวนกลุ่มที่ไม่ใช่ทั้งหมด (กลุ่ม Negative) ในการล้อมกรอบ กลุ่มที่ไม่ใช่หมายถึงพื้นที่เหลืออื่นๆที่ไม่ถูกล้อมกรอบไว้ พื้นที่นอกกรอบ และการคำนวณค่า FP + TN คำนวณเอาจาก IoU (Intersection over Union) ที่ได้ area มาน้อยกว่า threshold ที่ตั้งไว้

รูปภาพ 433 วิธีการเทียบประสิทธิภาพความแม่นยำโดยดู ROC Curve
ทดลองนำความรู้ไปอ่านค่า ROC Curve ของภาพใน Paper จะได้เป็น

รูปภาพ 434 วิธีการอ่าน ROC Curve เพื่อเทียบความแม่นยำระหว่าง Model
9. Jaccard Score
เวลาเราใช้ accuracy_score เพื่อเทียบค่า int ของ classifier ระหว่าง y_test กับ y_predicted มันจะใช้ Jaccard Similarity Coefficient ที่มีสูตรดังนี้

รูปภาพ 435 หลักการของ Jaccard Score
มันคือสัดส่วนระหว่าง
คะแนน = จำนวนที่เหมือนกัน / จำนวนทั้งหมด
คำว่า |A intersect B| นั่นคือ นับคะแนนเฉพาะตัวที่คล้ายกัน เหมือนกัน มีส่วนที่ intersect กัน ส่วน |A union B| คือ จำนวนทั้งหมดของทั้ง 2 กลุ่ม เช่น

รูปภาพ 436 วิธีการคำนวณ Jaccard Score
สังเกตว่าการคำนวณ Jaccard Score จึงเหมาะกับ Classification ที่ได้ค่า y ออกมาเป็นเลขที่ class เช่น 1, 2, … เวลาที่เราแปลผลก็คือ ถ้าได้ค่าออกมา 33% นั่นคือ ส่วนที่เหมือนกับคำตอบที่ถูกต้องมีเพียงแค่ 33% จากทั้งหมดเท่านั้น หรือกล่าวได้ว่าตอบถูกแค่ 33% เท่านั้น
10. R2 Score
ค่า R^2 Score เป็นการเปรียบเทียบระหว่าง ความคลาดเคลื่อนไปจากค่าจริง / ความแปรปรวนของข้อมูลจริง ถ้าได้ค่า R2 score มาเป็น 1.0 คือสมบูรณ์ ถ้าได้มาเป็น 0.0 คือโมเดลแย่พอๆกับการเดาด้วยค่าเฉลี่ย ถ้าน้อยกว่า 0.0 คือแย่กว่าค่าเฉลี่ย ถ้าใกล้ 1 คือยิ่งดี ถ้าใกล้ 0 คือยิ่งแย่

รูปภาพ 437 สูตรคำนวณของ R2 Score
