in Technology

Precision and Recall

ภาพประกอบ Pexels Mikhail Nilov

เจอคำศัพท์ในวิชา classification เลยต้องไปอ่านทบทวนและมาจดไว้หน่อย ในแง่การทายผลใดๆ เรามีศัพท์พื้นฐานสำหรับวัด “ความแม่น” ในการทายอยู่ 2 คำคือ precision และ recall ซึ่งต่างกัน

แผนภาพใน Wikipedia ทำไว้เข้าใจง่ายดี

ถ้าอธิบายด้วยภาษาบ้านๆ เรามีโจทย์ว่าในถาดมีลูกแก้ว 20 ลูก แบ่งเป็น 2 สีคือดำและขาว เรามีโอกาสทายได้ 10 ครั้ง ต้องทายว่าลูกไหนคือสีดำ

  • Precision คือ ทายว่าเป็นสีดำถูกกี่ลูก ในโอกาสทาย 10 ครั้ง
  • Recall คือ ทายว่าเป็นสีดำถูกที่ลูก จากสีดำทั้งหมดในถาด

ถ้าอธิบายให้เป็นภาษาคณิตศาสตร์สักหน่อย ในการพยากรณ์ใดๆ เราสามารถแยกเป็นทายว่าใช่ (positive) และทายว่าไม่ (negative) เมื่อนำมาเทียบกับผลของจริง ที่มีทั้ง positive และ negative เช่นกัน ก็จะได้เมทริกซ์ 4 ช่อง ที่เรียกว่า confusion matrix ตามภาพ

  • True Positive (TP) = ทายว่าใช่ ผลคือใช่ (แม่น ✔)
  • False Negative (FN) = ทายว่าไม่ ผลคือใช่ (ไม่แม่น ❌)
  • False Positive (FP) = ทายว่าใช่ ผลคือไม่ (ไม่แม่น ❌)
  • True Negative (TN) = ทายว่าไม่ ผลคือไม่ (แม่น ✔)

นำนิยามข้างต้นมา

Precision คือ ทายว่าใช่แล้วทายถูก (TP) แค่ไหน ในการทายว่าใช่ทั้งหมด (TP + FP)

Precision = TP / (TP + FP)

Recall (บ้างก็เรียก Sensitivity) คือ ทายว่าใช่แล้วทายถูก (TP) แค่ไหน ในผลของจริงที่เป็นใช่ทั้งหมด (TP ส่วนที่ทายถูก + FN ส่วนที่ทายผิด)

Recall = TP / (TP + FN)

นอกจากนี้ยังมี Accuracy ที่เข้าใจง่ายกว่า คือทายถูกต้องทุกเคส (TP+TN) แค่ไหนในการทายทั้งหมด

Accuracy = (TP + FN) / (TP + TN + FP + FN)

บทความอธิบายเวอร์ชันอื่นๆ ที่อ่านพบ

Lo-Fi AI vs Hi-Fi AI

บทความใน Fast Company ที่เขียนโดย Ali Kashani ซีอีโอของบริษัทหุ่นยนต์ Serve Robotics ให้คำนิยามของ AI ในปัจจุบันว่า

  • Lo-Fi AI คือ AI ที่มีค่า precision หรือ recall เยอะ เพียงอย่างใดอย่างหนึ่ง
  • Hi-Fi AI คือ AI ที่มีค่า precision และ recall เยอะทั้งคู่

Lo-Fi AI คือ AI ที่ทำงานง่ายๆ ได้แม่นยำ โดยเลือกเทไปทาง precision หรือ recall สักทาง และทำงานนั้นให้ดีไปเลย เช่น ระบบดักสแปม ที่เน้นการดักจับให้ได้มากๆ (high precision คือเพิ่มจำนวนการเหวี่ยงแหให้จับได้เยอะๆ แม้อาจมีจับผิด false positive เพิ่มขึ้น)

Hi-Fi AI คือ AI ที่ทำให้ดีทั้ง precision และ recall ซึ่งยังทำได้ยากมากในปัจจุบัน เช่น รถยนต์ไร้คนขับ ที่ต้องการความแม่นยำทั้งสองแบบ (ไม่เอาทั้งฝ่าไฟแดง false negative และหยุดที่ไฟเขียว false positive) ภายในระยะเวลาที่รวดเร็วมาก (ไม่งั้นชน)

ในโลก AI ยังมีการคิดคะแนนความน่าเชื่อถือ (reliability) ของ AI ที่เรียกว่า F1 Score โดยนำค่า precision กับ recall มาเฉลี่ยแบบ harmonic mean กันอีกที

F1 Score = 2 (precision * recall) / (precision + recall)

หากคะแนน F1 Score สูงเกิน 90% ก็ถือว่าได้คะแนนค่อนข้างสูงแล้ว ซึ่งประเมินกันว่า AI ที่ดีที่สุดในปัจจุบันทำได้ประมาณ 99% ส่วนรถยนต์ไร้คนขับจะทำงานได้เหมือนมนุษย์จริงๆ อาจต้องใช้คะแนน 99.9999% (six nines)

เหตุนี้ทำให้สตาร์ตอัพรถยนต์ไร้คนขับหลายราย เลือกแก้ปัญหาในโดเมนที่ง่ายกว่ารถจริงบนถนนจริง (narrowly-defined applications of autonomy) เช่น ตีกรอบลงมาเหลือการขับรถบรรทุกบนไฮเวย์เพียงอย่างเดียว (Aurora) หรือ ใช้รถเล็กวิ่งช้า ขนสินค้าอย่างเดียว (Nuro)

กรณีของ Serve Robotics ใช้หุ่นยนต์อัตโนมัติขนสินค้าไปส่ง เลือกเงื่อนไขที่ง่ายกว่าเดิม เช่น พอเลือกเดินบนทางเท้า ห้ามข้ามถนนตอนไฟแดงแน่ๆ แต่ก็อาจหยุดตอนไฟเขียวได้ถ้าไม่แน่ใจ (ถ้าเป็นถนนจริงอาจชน แต่บนทางเท้าไม่ชน) ทำให้มีอัตรา recall ที่ไฟแดงสูงถึง 99.9999% แต่อัตรา precision ที่ไฟเขียวปานกลาง (80%) ทำให้คะแนน F1 อยู่ที่ 90% ซึ่งเป็นสิ่งที่สามารถทำให้เกิดขึ้นได้จริงแล้ว