วิธีตรวจจับ Outliers ในข้อมูลด้วย Boxplot/ IQR และ qqplot
บทความที่แล้ว ได้พูดถึง missing values ในวันนี้ขอพูดถึง ค่า outliers ซึ่งจะมีผลการประสิทธิภาพของโมเดลอย่างมาก หากมีค่านี้รุนแรง หน้าที่สำคัญของ data analyst คือการทำความสะอาดข้อมูลให้พร้อมสำหรับทำงาน โดยปัญหาหลักๆของ data ที่เราเจอบ่อย ๆ คือเรื่อง missing values และ outliers
สมมุติว่า จากการสำรวจค่าความสูงของนักเรียน มัธยมศึกษา 5 พบว่า ความสูงของนักเรียนจำนวน 21 คน มีค่าดังต่อไปนี้174,168,250,170,155,153,99,169,212,162,157,173,160,177,155,178,179,159,157,179, 199,302,175,166,189 จะเห็นว่า ความสูงที่ผิดปกติคือข้อมูลที่สูงเกิน 2 เมตร เป็นต้น
จากรูปที่ 1 จะเห็นว่า มี ค่าผิดปกติ (Outliers)
Outlier (มีหลายชื่อ เช่น anomaly, extreme value) คือ data points ที่มีค่าสูงหรือต่ำกว่า data points ส่วนใหญ่ในชุดข้อมูลหนึ่งๆอย่างมาก เช่น ส่วนสูง 210 cm คือค่า outlier อ้างอิงสถิติจากเว็บไซต์ sizethailand ส่วนสูงเฉลี่ยชายและหญิงชาวไทย อายุ 16–25 ปี อยู่ที่ 171 cm และ 159 cm ตามลำดับ
วิธีการตรวจสอบ Outlier ในข้อมูลจะมีอยู่สองวิธีหลักๆคือ สร้างชาร์ท boxplot คำนวณค่าสถิติด้วยสูตร quartile ทั้งสองวิธีด้านบนมีความเกี่ยวข้องกัน
การทำ outlier detection ง่ายๆใน python โดยมีขั้นตอนต่อไปนี้
ขั้นตอนที่ 1: สร้าง Dataframe จาก list ของนักเรียน 21 คน
ขั้นตอนที่ 2 — คำนวณ Quartile
ขั้นตอนที่ 3 — คำนวณ IQR ( Interquartile Range)
เนื่องด้วย IQR ในทางสถิติคือค่าที่เราใช้วัดการกระจายตัวของข้อมูลหรือ measure of variability ถ้า IQR มีค่าต่ำแปลว่าข้อมูลกระจายตัวน้อย หรือถ้า IQR มีค่าสูงแปลว่าข้อมูลกระจายตัวมาก ด้วยเหตุนี้ IQR จึงถูกนำมาใช้ในการหา ค่าผิดปกติ โดย IQR มีสูตร Q3 — Q1 (Q3 = third quartile, Q1 = first quartile ที่เราคำนวณมาใน step แรก) จากตัวอย่างของเราจะได้ IQR = 179–159 = 20
ขั้นตอนที่ 4 — ติด Flag Outliers
หลังจากขั้นตอนที่ 3 พอเรารู้ upper/ lower bound แล้ว ที่เหลือก็แค่เขียน IF เพื่อสร้างเงื่อนไขง่ายๆ โดย outliers คือ data points ที่อยู่สูงกว่า upper bound หรือต่ำกว่า lower bound ในคอลัมน์ C เราสามารถเขียนสูตร IF() + OR() เพื่อ flag outliers ในข้อมูลของเรา โดย “Y” = outlier, “N” = normal data
ขั้นตอนที่ 5: สร้าง Boxplot และ Qqplot
boxplot คือการ visualize quartile ของข้อมูล โดยขอบกล่องด้านล่างของ boxplot คือ Q1 เส้นตรงทึบตรงกลางกล่องคือ Q2 และขอบกล่องด้านบนคือ Q3 ส่วนความยาวของกล่อง boxplot คือ IQR (คำนวณจาก Q3 — Q1) ที่ใช้วัดการกระจายตัวของข้อมูลนั่นเอง
Quantile-Quantile plot หรือ QQ plot คือ scatter plot ที่สร้างขึ้นโดยการพล็อต quantile ที่แตกต่างกัน 2 แบบต่อกัน ควอนไทล์แรกคือตัวแปรที่คุณกำลังทดสอบสมมติฐานและตัวแปรที่สองคือการแจกแจงจริงที่คุณกำลังทดสอบ ตัวอย่างเช่นหากคุณกำลังทดสอบว่าโดยปกติแล้วการแจกแจงอายุของพนักงานในทีมของคุณหรือไม่คุณกำลังเปรียบเทียบควอนไทล์ของ
สรุป
การตรวจจับ ค่าผิดปกติ (Outliner) ถือเป็น งานสำคัญของ นักวิทยาศาสตร์ข้อมูล ในบทความนี้ นำเสนอ สามวิธี คือ IQR, boxplot และ qqplot