จาก ep ที่แล้วที่เราดูตัวอย่าง Machine Learning กับข้อมูลแบบตาราง ใน ep นี้เราจะมาเรียนรู้เรื่องที่จำเป็นในการวิเคราะห์ข้อมูลแบบตาราง นั่นก็คือ Feature Engineering ว่าจะช่วยเพิ่มประสิทธิภาพให้กับโมเดล Deep Neural Network ของเราได้อย่างไร
Feature Engineering
อัลกอริทึมของ Machine Learning จะเรียนรู้จาก Input มาสร้างเป็น Output ในตัว Input จะประกอบด้วย Feature ต่าง ๆ อยู่ในแต่ละ Column อัลกอริทึมจะต้องมองทะลุเข้าไปเรียนรู้ถึง Pattern ที่ซ่อนอยู่ใต้ Feature เหล่านั้น
Feature Engineering คือ การบวนการใช้ความรู้ Domain Knowledge ในการสร้าง Feature ใหม่ขึ้นมา ตัด Feature ที่ไม่เกี่ยวข้องทิ้งไป เพื่อช่วยทำให้อัลกอริทึมเรียนรู้ได้ดีขึ้น มีวิธีการดังนี้
- Imputation เติมข้อมูลที่ขาด (fillna, FillMissing)
- Handling Outliers จัดการข้อมูลโดด (replace, Rare)
- Binning จับข้อมูลใส่ตะกร้า (cut, qcut)
- Log Transform แปลงข้อมูล Exponential เป็น Linear
- One-Hot Encoding / Embedding แปลงข้อมูล Category เป็นหลาย Column (Categorify)
- Grouping Operations จัดกลุ่มข้อมูล แปลง Row เป็น Column เช่น Pivot Table
- Feature Split แตก Column เช่น แตกคำนำหน้า จาก Name (split)
- Scaling ทำให้ Mean=0, Std=1 (Normalize, Standardize)
- Extracting Date จะอธิบายต่อไป
เรามาเริ่มกันเลย
เรื่องราวของเรือ RMS Titanic เป็นเรื่องที่เราทุกคนน่าจะเคยผ่านตา จากการดูหนัง Hollywood กันมาบ้างแล้ว แต่เรื่องจริงที่เกิดขึ้นในประวัติศาสตร์ คือ ในวันที่ 15 เมษายน 1912 เรือไททานิคได้ออกเดินทางภารกิจแรก และชนเข้ากับภูเขาน้ำแข็งจนจมลงสู่ก้นมหาสมุทร คร่าชีวิตผู้คนจำนวน 1,502 ชีวิต จากผู้โดยสารและลูกเรือทั้งหมด 2,224 คน เป็นเหตุการณ์ช็อกโลกในสมัยนั้น ส่งผลให้มีการออกกฏระเบียบเพื่อความปลอดภัยบนเรือให้รัดกุมมากยิ่งขึ้น
เหตุผลหนึ่งที่มีผู้เสียชีวิตมากมายขนาดนี้ เนื่องจากบนเรือ RMS Titanic มีเรือชูชีพไม่เพียงพอสำหรับทุกคน ผู้รอดชีวิตไม่เพียงแต่จะต้องดวงดี ใส่เครื่องรางของขลัง วิ่งเร็วเท่านั้น เพราะว่ามีคนบางกลุ่มบางประเภท ที่มีโอกาสรอดชีวิตมากกว่าคนอื่น เช่น เด็ก สตรี และ ชนชั้นสูง
ในเคสนี้เราจะมาใช้ Machine Learning วิเคราะห์ว่าใครจะเป็นผู้รอดชีวิตจากโศกนาฏกรรมครั้งนี้บ้าง