แอดไม่ได้เขียนเรื่องสถิตินานมาก แต่จริงๆเรื่องนี้เป็นเรื่องที่แอดชอบที่สุดเลย
ปีนี้เลยตั้งใจอยากกลับมาเขียนบทความสถิติแบบเต็มๆอีกครั้งทุกสัปดาห์ ชุบชีวิตซีรีส์ที่เคยเขียนไว้เมื่อหลายปีก่อน 555+ เป็นกำลังใจให้แอดด้วยนะคร้าบ ❤️
วันก่อนเราเปิดตัว It’s Friyay [อิทส์ ฟราย เยย์] ตอนแรกเรื่อง Everybody Writes วันนี้เปิดตัวอีกหนึ่งซีรีส์ Statistics Mondee [สถิติ มันส์ดี] ให้ทุกคนได้อัพเดทความรู้สถิติสนุกๆด้วยกัน
EP แรกมาเรียนตารางความถี่ง่ายๆแต่ทรงพลังมากในโลกสถิติ ชื่อของมันคือ Confusion Matrix

Table of Contents
What is confusion matrix
Confusion matrix คือตาราง cross tabulation (เรียกสั้นๆว่า cross-tab) แบบพิเศษที่นำข้อมูลสองคอลัมน์คือ actual, prediction มาทำเป็นตารางสรุปผล cross กันตามชื่อเลย
ส่วนใหญ่เรานิยมใช้แกนนอนเป็น actual ส่วนแกนตั้งเป็น prediction

Use case หลักของ confusion matrix คือการวัดผลโมเดล binary classification ในทางสถิติและ machine learning ตัวอย่างเช่น ผลการทำนายของโมเดล logistic regression
📝 Binary classification คือโมเดลที่ทำนายค่าแบบ binary (yes/ no) – วันนี้ฝนจะตกหรือไม่ตก ลูกค้าจะซื้อหรือไม่ซื้อสินค้า churn prediction และ credit scoring เป็นต้น
วิธีสร้าง confusion matrix ทำได้หลายวิธี ถ้าง่ายสุดใน spreadsheets ก็ใช้ pivot table หรือฟังก์ชัน =COUNTIFS() สร้างเป็นตารางความถี่ง่ายๆ
Basic Terminology
แต่ละช่องในตาราง confusion matrix จะมีชื่อเฉพาะด้วย คือ True Positive (TP), True Negative (TN), False Positive (FP) และ False Negative (FN)
สิ่งที่ทุกคนต้องเข้าใจมีอยู่สองอย่างคือ ความหมายของ True/False และ Positive/Negative
โดยช่องที่ขึ้นต้นด้วย True แปลว่าโมเดลเราทายถูก True Positive, True Negative ส่วนช่องที่ขึ้นต้นด้วย False แปลว่าโมเดลทายผิด False Positive, False Negative

ส่วน Positive คือ class ที่เราสนใจเป็นหลัก และ Negative คือ class รอง เช่น ถ้าเราอยากรู้ว่าลูกค้าที่เข้ามาในเว็บ e-commerce ของเราจะสั่งของหรือเปล่า (add to cart, purchase)
สั่งของ Yes = Positive ไม่สั่งของ No = Negative
เราต้องกำหนด positive class ทุกครั้งเวลาเราทำโจทย์ binary classification
📝 ปกติพวกนี้แอดไม่เคยจำเลย 555+ แค่วาดรูปนี้บ่อยๆ เดี๋ยวก็ใช้ตารางนี้คล่องแล้ว
Basic Metrics
ความสวยงามของ confusion matrix คือมันสร้างได้ง่ายมาก และเราสามารถคำนวณค่าสถิติหลายๆตัวจากตารางนี้ โดย classification metrics 4 ตัวที่เรานิยมใช้กันคือ
- Overall Accuracy
- Precision
- Recall
- F1 score
มาลองทำความเข้าใจแต่ละตัวแบบเจาะลึกด้วยกัน เห็นสมการอย่าเพิ่งตกใจ 555+

* N ในสูตรนี้คือ total sample size ในตาราง
Overall accuracy คือค่าความแม่นยำ (ถูกต้อง) โดยรวมของโมเดล ในสูตรด้านบนคือ (TP+TN)/N ถ้าเรารู้ค่า accuracy เราจะคำนวณ error rate ได้ทันทีเลย ด้วยสูตรนี้
1 – overall accuracy = error rate
ส่วน metrics อื่นๆ แอดขอใช้ทับศัพท์เลยจะเข้าใจง่ายกว่า อย่าพยายามแปลไทยเลย 555+

Precision บอกว่าจากผลที่โมเดลทำนายเป็น positive ทั้งหมด โมเดลเราทาย positive ถูกจริงๆเท่าไหร่ ถ้าเขียนสูตรก็จะได้ TP/(TP+FP) ตัวหารด้านล่างคือ total positives
Recall ในทางสถิติเรียกว่า Sensitivity คือค่าที่บอกว่าโมเดลเราเจอ actual positive class ที่เราสนใจมากหรือน้อยเพียงใด ด้วยสูตร TP/(TP+FN)

F1-Score คือการหาค่าเฉลี่ยของ precision และ recall ไม่ได้บวกกันหารสองตรงๆ แต่เป็นค่าเฉลี่ยแบบ harmonic mean ใช้สูตร 2*(precision*recall) / (precision+recall)
📝 ถ้าอยากหาค่า metric เดียวไว้วัดผลโมเดลเลย หลายคนจะแนะนำให้ใช้ F1-Score เพราะมันรวม precision, recall ไว้ในการคำนวณแล้ว นอกจาก F1 ยังมี F0.5 F2 ได้ด้วยนะครับ
How to do it in Excel
มาลองดูตัวอย่างการคำนวณง่ายๆใน Microsoft Excel

วิธีการอ่านผลค่า metrics จะอ่านแบบ % ก็ได้ เช่น accuracy = 0.75 โมเดลเรามีความแม่นยำโดยรวมที่ 75% (error = 1-0.75 = 0.25)
overall accuracy
=(C3+D4)/SUM(C3:D4)
precision
=C3/(C3+C4)
recall
=C3/(C3+D3)
f1-score
=2*(C7*C8)/(C7+C8)
More than 2×2
ถ้าจำนวน classes ของเรามีมากกว่าสอง classes เราสามารถสร้างตาราง multiclass confusion matrix แบบ 3×3, 4×4 หรือ 5×5 เลยก็ได้

ตัวอย่าง R code ง่ายๆเขียนเสร็จในสองบรรทัด
# sample code in R
table1 = table(actual, prediction)
# overall accuracy
sum(diag(table1)) / sum(table1)
ผลรวมของเส้นทแยงมุม diagonal หารด้วยจำนวน N ทั้งหมดเป็นค่า overall accuracy เหมือนกับตาราง 2×2 ส่วน precision, recall, F1-score สามารถคำนวณแยกเป็นของแต่ละคลาสได้
What to Know
สรุปไอเดียสำคัญของ confusion matrix
- มันคือตารางความถี่ cross tabulation ง่ายๆ เอาข้อมูล actual x prediction
- เรานิยมใช้ตารางนี้คำนวณค่า metrics วัดผลโมเดล binary classification
- สูตรการคำนวณ accuracy, precision, recall, F1-score ทำได้ง่ายๆใน spreadsheets
- แต่ถ้าเขียนโปรแกรมก็ง่ายกว่าเยอะเลย 555+
📝 และเหตุผลที่เราเรียกมันว่า confusion matrix ก็เพราะว่าโมเดลเราสับสนระหว่างค่า True, False ทำนายผลผิดบ้าง เช่น จาก True เป็น False หรือ False เป็น True
จบแล้ว! ง่ายเหลือเชื่อ ถ้าใครอยากอ่านบทความสถิติดีๆแบบนี้ ติดตามได้ใน series ใหม่ “สถิติ มันส์ดี” ตอนใหม่มาทุกวันจันทร์ แต่เมื่อวานแอดเขียนไม่ทัน แง 😭 555+
Leave a Reply