Feature engineer: การแปลงข้อมูลโดใช้ค่าล็อก (Log Transformation)


Share this article

What is Feature Engineering?

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

แสดงลำดับขั้นตอนของการทำ feature engineering ในกระบวนการสร้างโมเดล machine learning

เป้าหมายในการทำ 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) ทำให้ข้อมูลกระจายตัวออกจากกันมากขึ้นซึ่งเป็นผลดีกับความแม่นยำในการทำนายผลของโมเดล

เปรียบเทียบการแจกแจงของข้อมูลของจำนวนคำในบทความของเว็ปไซด์ Mashable ก่อนและหลังจากการทำ log transformation

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

Reference

(Medium) Fundamental Techniques of Feature Engineering for Machine Learning

(Article) Feature Engineering And Variable Transformation

READ  เลือกแสดงข้อมูลให้มีประสิทธิภาพ (Choosing an Effective Visual)

Share:

ลงทะเบียนรับข่าวสาร

ไม่พลาดทุกการอัพเดทจาก Big Data Experience Center

Big Data Experience Center (BX)

ชั้น 14 อาคาร Knowledge Exchange Center (KX)
110/1 ถนนกรุงธนบุรี, แขวงบางลำภูล่าง เขตคลองสาน กรุงเทพฯ 10600
อีเมล์: [email protected]

ABOUT

SERVICES