จาก ep ก่อน ที่เราสอนเรื่อง ใช้ Deep Neural Network วิเคราะห์ข้อมูลแบบ Structure หรือข้อมูลแบบตาราง Tabular Data จะมีงานสำคัญที่ต้องทำก่อนเทรน คือการ Preprocessing จัดเตรียมข้อมูล ซึ่งมีหลายอย่าง เช่น Fillna, Normalize, Categorize, Clipping, Binning, Feature Engineering ต่าง ๆ , etc. ใน ep นี้เราจะมาเรียนรู้กันเรื่อง การจัดการกับข้อมูลไม่ครบ วิธีเติมค่าที่ขาดหายไป หรือ Null
ในโลกแห่งความเป็นจริง เราจะพบปัญหาข้อมูลขาดหายไปอยู่เสมอ เช่น User กรอกแบบฟอร์มไม่ครบ หรือ ใส่ – ใส่ space มาแทน, ระบบมีหลายเวอร์ชัน, ข้อมูลมาจากหลายที่ ที่ Format แตกต่างกันนิดหน่อย, etc.
ทำไมต้องจัดการข้อมูลขาดหาย ก่อนป้อนเทรน Machine Learning
เมื่อมีข้อมูลขาดหายไป เราจะเป็นต้องจัดการข้อมูลเหล่านั้น ก่อนป้อนเข้าสู่ระบบ Neural Network ก่อนจะใช้เทรน Machine Learning เนื่องจากโมเดลจะรับข้อมูลเป็นตัวเลขเท่านั้น การรับข้อมูล Null, NaN ทำให้มีผลต่อการคำนวน สูตรคณิตศาสร์ภายในโมเดล เช่น NaN * 5 = ? หรือ หาค่าเฉลี่ย แล้วมีค่า NaN ปนมาด้วย ทำให้รวนกันไปหมด
วิธีจัดการค่า Null / NaN
- Drop Row นั้นทิ้งไปเลย
- Drop Column นั้นทิ้งไปเลย
- Imputation เติมด้วยค่าพิเศษ ที่ไม่มีอยู่ในข้อมูล เช่นตัวเลข -1, -Infinity หรือข้อความว่า “Unknown”, “N/A”
- Imputation เติมด้วยค่า Mean / Median / Mode จากข้อมูลทั้งหมด เช่น เติมอายุที่ขาดไป จากอายุเฉลี่ยของข้อมูลทั้ง Dataset
- Imputation เติมด้วยค่า Mean / Median / Mode จากข้อมูลบางส่วน เช่น เติมอายุที่ขาดไป จากอายุเฉลี่ยของนักเรียนห้องเดียวกัน
- Imputation เติมด้วยค่าจากอัลกอริทึม เช่น K-Nearest Neighbour, Bi-Linear Interpolation, etc.
- Imputation เติมด้วยค่าด้วยมือของเราเอง ทีละค่า ๆ ด้วยการแก้ไขข้อมูลโดยตรง จากวิจารณญาณ
- เติมด้วยค่าที่ต่อเนื่องก่อนหน้า หรือค่าถัดไป สำหรับข้อมูลแบบ Time Series หรือข้อมูลมีลำดับ
- Linear Interpolation + Seasonal Adjustment สำหรับข้อมูลแบบ Time Series หรือข้อมูลมีลำดับ
- สร้าง Category ใหม่ ถือว่าค่า Null, NaN ก็เป็นข้อมูล 1 Category
- ใช้หลาย ๆ วิธีผสมกัน แล้วหาค่าเฉลี่ย, Mode, Median
- Preprocessing ไปแล้ว เทรนโมเดลเรียบร้อย แล้วนำผลลัพธ์กลับมาปรับจูน Preprocessing รอบใหม่
Mean = ค่าเฉลี่ย, Median = ค่ามัธยฐาน, Mode = ค่าฐานนิยม (ค่าที่พบมากที่สุด) สำหรับข้อมูลตัวเลข เราสามาถเลือกใช้ได้ทั้ง 3 อย่าง แต่ถ้าเป็นข้อมูลข้อความ หรือ Category เราต้องใช้ Mode แทน
ข้อดี ข้อเสีย ของแต่ละวิธีจัดการข้อมูลขาดหาย
ทุกวิธีการจัดการข้อมูลขาดหาย ล้วนมี ข้อดี ข้อเสีย แตกต่างกัน ตั้งแต่
- Effort ที่ใช้
- เวลาในประมวลผล
- คุณภาพของข้อมูล
- Reproducibility
- ความแม่นยำของโมเดล
ปัจจัยการเลือกวิธีจัดการข้อมูล Null
การจะเลือกวิธีใด ควรพิจารณาจาก ชนิดข้อมูล ขนาดของข้อมูล การกระจายของข้อมูล ความเร็วของข้อมูล จำนวนของข้อมูลที่ขาดหายไป บวกกับข้อดีข้อเสียด้านบน
เราจะเลือกวิธีใดถือเป็น Hyperparameter แบบนึง แต่เป็น Indirect Hyperparameter ทางอ้อม เพราะไม่ได้ทำกับโมเดลโดยตรง
หมายเหตุ Imputation = การกำหนดค่าให้บางอย่าง โดยอนุมานเอาจาก ค่าของผลลัพธ์ หรือกระบวนการที่ค่านั้นสนับสนุนอยู่ (the assignment of a value to something by inference from the value of the products or processes to which it contributes.)
เราจะมาดูตัวอย่างการวิธีจัดการข้อมูลขาดหาย ที่เป็นที่นิยม 5 วิธี