จาก 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

  1. Drop Row นั้นทิ้งไปเลย
  2. Drop Column นั้นทิ้งไปเลย
  3. Imputation เติมด้วยค่าพิเศษ ที่ไม่มีอยู่ในข้อมูล เช่นตัวเลข -1, -Infinity หรือข้อความว่า “Unknown”, “N/A”
  4. Imputation เติมด้วยค่า Mean / Median / Mode จากข้อมูลทั้งหมด เช่น เติมอายุที่ขาดไป จากอายุเฉลี่ยของข้อมูลทั้ง Dataset
  5. Imputation เติมด้วยค่า Mean / Median / Mode จากข้อมูลบางส่วน เช่น เติมอายุที่ขาดไป จากอายุเฉลี่ยของนักเรียนห้องเดียวกัน
  6. Imputation เติมด้วยค่าจากอัลกอริทึม เช่น K-Nearest Neighbour, Bi-Linear Interpolation, etc.
  7. Imputation เติมด้วยค่าด้วยมือของเราเอง ทีละค่า ๆ ด้วยการแก้ไขข้อมูลโดยตรง จากวิจารณญาณ
  8. เติมด้วยค่าที่ต่อเนื่องก่อนหน้า หรือค่าถัดไป สำหรับข้อมูลแบบ Time Series หรือข้อมูลมีลำดับ
  9. Linear Interpolation + Seasonal Adjustment สำหรับข้อมูลแบบ Time Series หรือข้อมูลมีลำดับ
  10. สร้าง Category ใหม่ ถือว่าค่า Null, NaN ก็เป็นข้อมูล 1 Category
  11. ใช้หลาย ๆ วิธีผสมกัน แล้วหาค่าเฉลี่ย, Mode, Median
  12. Preprocessing ไปแล้ว เทรนโมเดลเรียบร้อย แล้วนำผลลัพธ์กลับมาปรับจูน Preprocessing รอบใหม่

Mean = ค่าเฉลี่ย, Median = ค่ามัธยฐาน, Mode = ค่าฐานนิยม (ค่าที่พบมากที่สุด) สำหรับข้อมูลตัวเลข เราสามาถเลือกใช้ได้ทั้ง 3 อย่าง แต่ถ้าเป็นข้อมูลข้อความ หรือ Category เราต้องใช้ Mode แทน

Comparison of linear and bilinear interpolation some 1- and 2-dimensional interpolations. Credit https://commons.wikimedia.org/wiki/File:Comparison_of_1D_and_2D_interpolation.svg
Comparison of linear and bilinear interpolation some 1- and 2-dimensional interpolations. Credit https://commons.wikimedia.org/wiki/File:Comparison_of_1D_and_2D_interpolation.svg

ข้อดี ข้อเสีย ของแต่ละวิธีจัดการข้อมูลขาดหาย

ทุกวิธีการจัดการข้อมูลขาดหาย ล้วนมี ข้อดี ข้อเสีย แตกต่างกัน ตั้งแต่

  • 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 วิธี

เรามาเริ่มกันเลยดีกว่า

Open In Colab

แชร์ให้เพื่อน:

Surapong Kanoktipsatharporn on FacebookSurapong Kanoktipsatharporn on LinkedinSurapong Kanoktipsatharporn on Rss
Surapong Kanoktipsatharporn
Solutions Architect at Bua Labs
The ultimate test of your knowledge is your capacity to convey it to another.

Published by Surapong Kanoktipsatharporn

The ultimate test of your knowledge is your capacity to convey it to another.