What is Feature Engineering?
ทำไมโปรเจคที่ใช้ Machine Learning (ML) ถึงประสบความสำเร็จตามเป้าหมายในขณะที่บางโปรเจคที่ใช้ ML ถึงล้มเหลว ปัจจัยที่ตัดสินว่า ML ที่สร้างมาจะประสบผลสำเร็จหรือไม่นั้นขึ้นอยู่กับ feature ซึ่งหมายถึงข้อมูลที่จำเป็นต้องใช้ในการสร้างโมเดล โดยส่วนใหญ่ feature มักอยู่ในรูปแบบตัวเลข และ feature ได้มาจากการทำ feature engineering ซึ่งเป็นกระบวนการของการใช้ความรู้ความเชี่ยวชาญของนักวิทยาศาสตร์ข้อมูลเพื่อสร้าง feature ที่ทำให้อัลกอริทึมการเรียนรู้ของ ML ได้ผลลัพธ์ที่ดี โดยกระบวนนี้จะเกิดขึ้นหลังจากรวบรวมข้อมูลดิบและทำการทำความสะอาดข้อมูลแล้ว

เป้าหมายในการทำ feature engineering มีอยู่ 2 ข้อหลักๆ คือ
1. เพื่อเตรียมชุดข้อมูลอินพุต (input dataset) ที่เหมาะสมกับอัลกอริทึมของ ML ที่ต้องการจะใช้
2. เพื่อปรับปรุงประสิทธิภาพของ ML
จากการสำรวจของนิตยสาร Forbes นักวิทยาศาสตร์ด้านข้อมูลใช้เวลากว่า 80% ของการทำโปรเจคไปกับการเตรียมข้อมูล

จากสัดส่วนที่ข้างต้นแสดงให้เห็นถึงความสำคัญของ feature engineering โดยเทคนิคในการทำ feature engineering มีหลากหลายเทคนิค เช่น การจัดการข้อมูลที่สูญหายไปในตาราง (imputation), การจัดการค่าที่ผิดปกติ (handling outliers), การแปลงข้อมูลโดยใช้ค่าล็อก (log transform) , การแบ่งช่วงข้อมูล (binning), การเข้ารหัสข้อมูลให้เป็น binary 0 กับ 1 (one-hot encoding)
เทคนิคบางอย่างอาจทำงานได้ดีขึ้นกับอัลกอริทึมหรือชุดข้อมูลบางอย่าง ในขณะที่บางส่วนอาจมีประโยชน์ในทุกกรณี วิธีที่ดีที่สุดที่จะทำให้เชี่ยวชาญในการทำ feature engineering คือการฝึกเทคนิคต่าง ๆ ในชุดข้อมูลที่หลากหลายและการสังเกตผลที่มีต่อการแสดงแบบจำลอง ในส่วนของบทความนี้ผมจะพูดถึงหนึ่งในเทคนิคที่เป็นที่นิยมในการแปลงข้อมูลหรือ feature นั้นก็คือ log transform
log transform หรือ logarithm transformation เป็นหนึ่งในการแปลงทางคณิตศาสตร์ที่ใช้กันมากที่สุดในการทำ feature engineering ข้อมูลที่จะถูกแปลงจะต้องเป็นค่าบวกและการกระจายตัวของข้อมูลจะถูกแปลงให้อยู่ในรูปของการแจกแจงปกติเพื่อให้เหมาะสมกับอัลกอริทึมของ ML ประเภท linear เช่น liner regression หรือ KNN ถ้าหากข้อมูลมีค่าน้อยกว่าเท่ากับ 0 สามารถใช้ Box-Cox transformation แทนได้ ประโยชน์ของการเทคนิคนี้คือ:
- ช่วยจัดการกับข้อมูลมีการแจกแจงไม่ปกติที่มีลักษณะเบ้ขวาหรือเบ้ไปทางบวก (Positive skew) ให้สอดคล้องกับการแจกแจงปกติมากขึ้น เช่น รายได้ต่อครัวเรือน เวลาที่ใช้ในการทำงาน ราคาบ้าน เป็นต้น
- นอกจากนี้ยังลดผลกระทบของค่าผิดปกติ (outliers) และทำให้โมเดลมีความเสถียรมากขึ้น เมื่อนำข้อมูลชุดใหม่มาทดสอบกับโมเดล ความแม่นยำหรือความผิดพลาดจะคงที่
Example of Log Transform
วัตถุประสงค์ของการสร้างโมเดลนี้เพื่อทำนายความนิยมของบทความจากจำนวนครั้งในการแชร์บนโซเชียล สำหรับตัวอย่างนี้จะใช้เพียง 1 feature เพื่อให้เข้าใจภาพได้ง่ายขึ้น ในรูปต่อไป feature ที่ใช้คือ จำนวนคำในบทความ จะเห็นว่าข้อมูลมีลักษณะเบ้ขวา คือ มีจำนวนคำต่อบทความกระจุกตัวอยู่ที่ค่าประมาณสามร้อยกว่าๆ และมีบทความที่มีจำนวนคำมากกว่าพันคำกระจายไปทางขวา ซึ่งการกระจายตัวของข้อมูลหลังจากแปลงด้วยล็อกมีการกระจายตัวกว้างขึ้นคล้ายกับการแจกแจงปกติ (normal distribution) ทำให้ข้อมูลกระจายตัวออกจากกันมากขึ้นซึ่งเป็นผลดีกับความแม่นยำในการทำนายผลของโมเดล

ข้อควรระวัง: ข้อมูลที่คุณใช้ทำ log transform จะต้องมีค่าเป็นบวกเท่านั้นเนื่องจาก log(0) ไม่มีนิยาม ดังนั้นถ้าค่าตัวแปรเท่ากับศูนย์หรือติดลบ จะทำให้เกิดผิดพลาด คุณสามารถแก้ปัญหานี้โดยการเพิ่ม 1 ในข้อมูลของคุณก่อนที่จะแปลง ดังนั้นคุณจึงมั่นใจได้ว่าผลลัพธ์ของการเปลี่ยนแปลงจะเป็นไปในเชิงบวก Log(x+)
Reference
(Medium) Fundamental Techniques of Feature Engineering for Machine Learning