การทำ Recursive Feature Section ง่ายๆ ใน Python Sklearn ที่ช่วยให้การเขียนโค้ดเลือก Feature ไม่ยุ่งยากอีกต่อไป [แจก Source Code]

Photo by Artem Sapegin on Unsplash

อะไรคือ Feature Section?

Feature Selection แปลเป็นไทยได้ตรงตัวเลยก็คือ “การเลือกฟีเจอร์” หรือ การเลือกคุณลักษณะของข้อมูลที่เหมาะสมสำหรับการทำงานของ Machine Learning ถ้าพูดให้ง่ายขึ้นอีกก็คือ เลือกว่าคอลัมน์ไหนในตัวข้อมูลที่เราจะเลือกใช้งานนั่นเอง

จากบทความที่แล้ว ในเรื่องพอกันทีกับความผิดพลาดเดิมๆ ด้วยการสร้างโมเดล Machine Learning ด้วยฟีเจอร์ทั้งหมดที่มี!

จากบทความที่แล้ว ผู้อ่านก็จะเห็นแล้วว่าการโยนฟีเจอร์ทั้งหมดเข้าไปทำงานทันทีโดยไม่ผ่านกระบวนการใดๆ เลย สามารถก่อให้เกิดปัญหาใหญ่ๆได้หลายอย่าง ดังนั้น ในบทความนี้ เราจึงขอนำเสนอหนึ่งในวิธีการพื้นฐานที่ใช้สำหรับการเลือกฟีเจอร์ที่มีชื่อว่า “Recursive Feature Selection” ซึ่งเป็นวิธีการที่ไม่ซับ สามารถนำมาประยุกต์ใช้ในการเลือกฟีเจอร์สำหรับมือใหม่ได้อย่างไม่ยากค่ะ ทำให้สามารถหลีกเลี่ยงปัญหาที่อาจจะเกิดขึ้นได้จากการมีฟีเจอร์ที่มากเกินไปได้ระดับหนึ่งค่ะ

Recursive Feature Selection

Recursive Feature Selection” เป็น โมดูลนึงที่ Sklearn เตรียมเอาไว้ให้ผู้ใช้ที่ต้องการทำ Machine Learning ด้วย Python ได้เรียกใช้เพื่อการกำหนดการเลือกฟีเจอร์ที่จะนำมาใช้งานได้อย่างไม่ยาก

โมดูนี้มีหลักการทำงานที่ง่ายๆ คือ การวนลูปเลือกฟีเจอร์ หรือกลุ่มของฟีเจอร์ แล้วทำการทดสอบการสร้างโมเดลด้วย Machine Learning เพื่อหาว่า ฟีเจอร์ชุดใด ทำให้สามารถสร้างโมเดลที่มีประสิทธิภาพสูงสุดได้ จากนั้น จึงเลือกฟีเจอร์นั้นๆ เพื่อใช้งานต่อไป

หลักการทำงานในการเลือกฟีเจอร์ ก็คือ เริ่มต้นด้วยการใช้ฟีเจอร์ทั้งหมดก่อน และทำการ ตัดฟีเจอร์ที่มีความเกี่ยวข้องน้อยที่สุดออกไป เพื่อทำให้ขนาดของฟีเจอร์ลดลง จนกว่าจะได้มาซึ่งชุดของฟีเจอร์ที่เล็กที่สุด แต่ยังคงมีประสิทธิภาพการทำงานที่ดีนั่นเอง

อัลกอริทึ่ม Stepwise Recursive Feature Selection

อัลกอริทึ่มที่ใช้ในการทำงาน มีดังนี้

  1. ใช้ฟีเจอร์ทั้งหมดในการเทรนโมเดล Machine Learning
  2. ทำการคำนวณค่าความสำคัญของฟีเจอร์แต่ละตัวโดยใชฟังชันก์ของ sklearn เช่น coef_ หรือ feature_importance_
  3. เรียงลำดับความสำคัญของฟีเจอร์ และตัดฟีเจอร์ที่มีความสำคัญน้อยที่สุดออกไป
  4. วนรอบทำในข้อที่ 2-3 จนได้จำนวนฟีเจอร์ที่ต้องการ

Source Code

พูดกันถึงขั้นตอนการทำงานกันมาแล้ว คราวนี้เรามาดู Code กันบ้างดีกว่าค่ะ ตัวอย่างโปรแกรมการทำงานที่สามารถนำไปประยุกต์ใช้งาน แสดงได้ดังรูปด้านล่าง

Cr. rfe.py from https://gist.github.com/satkr7/f5ececd972057f9111cd701082ef29c3#file-rfe-py

โดยในการใช้งานฟังก์ชัน RFE นี้ มีพารามิเตอร์ที่สำคัญ ดังนี้

  • estimator: โมเดล Machine Learning: Supervised ที่เราจะใช้
  • n_feature_to_select: ตัวนี้จะเป็นตัวที่บอกว่าเราจะเลือกฟีเจอร์ซักกี่ตัวในการทำโมเดล ถ้าเราปล่อยว่างไว้ เค้าจะใช้ 50% ของฟีเจอร์ทั้งหมด อย่างในที่นี้เราเลือก 10 คือจะใช้ฟีเจอร์ที่ดีที่สุด 10 ตัว
  • step: คือ จำนวนฟีเจอร์ที่เราต้องการกำจัดออกไปในแต่ละรอบ ในที่นี้เลือก 1 หรือรอบละ 1 ตัวนั่นเอง
  • importance_getter:  ตัววัดว่าเราจะใช้ค่าอะไรเป็นตัววัดความสำคัญของฟีเจอร์นั้นๆ

ง่ายๆเท่านี้เราก็สามารถลดจำนวนของฟีเจอร์ลงได้ ประหยัดพลังการคำนวณและยังส่งผลให้โมเดลของเราทำงานได้ดีขึ้นอีกด้วย

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s