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

Image by Arek Socha from Pixabay

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

การมีคอลัมน์มาก หมายถึง เรามี information ที่ใช้ในการอธิบายข้อมูลมากขึ้น สามารถอธิบายข้อมูลได้ละเอียดขึ้น มีมิติในการมองข้อมูลมากขึ้น ลักษณะแบบนี้ ฟังดูดีกันใช่มั้ยคะ? แต่มันจะดีสำหรับเจ้า Machine Learning ในการเรียนรู้รึเปล่า? ตอบได้เลยว่า “ไม่ดี” ค่ะ การมีฟีเจอร์เยอะแยะมากมาย มีโอกาสเกิดการซ้ำซ้อนกันได้สูง (Redundant Features) หรือ ฟีเจอร์บางตัวแทบจะไม่มีความสัมพันธ์ (Irrelevant Features) กับสิ่งที่เราทำนายเลยด้วยซ้ำ เจ้าความซ้ำซ้อน และ ความไม่เกี่ยวข้อง ตัวนี้เอง ที่ก่อให้เกิดผลเสียต่อการเรียนรู้ของโมเดล Machine Learning โดยเฉพาะอย่างยิ่ง ในกรณีที่จำนวนข้อมูลมีจำกัด (มีจำนวนแถวข้อมูลน้อย ในขณะที่มีจำนวนคอลัมน์เยอะ)

ดังนั้น ในการสร้างโมเดล Machine Learning นั้น เราไม่นิยมโยนฟีเจอร์ที่มีอยู่ทั้งหมดมาใช้งานตู้มเดียวเลย เนื่องด้วย เหตุผลหลักๆ ดังนั้น

1 Garbage In, Garbage Out

Picture from Big Picture Advisor

คำๆ นี้แปลเป็นภาษาไทยได้ง่ายๆ ว่า “ใส่ขยะเข้าไป ก็ย่อมได้ขยะออกมา” หมายความว่า ถ้าเราทำการสอน Machine Learning ด้วยข้อมูลที่ไม่มีคุณภาพ หรือ ข้อมูลที่เป็นขยะ สิ่งที่เราจะได้มา ก็คือ โมเดลที่ไม่มีประสิทธิภาพ ทำงานไม่ได้ หรือ ก็คือ โมเดลขยะ นั่นเอง ไม่ว่าโมเดล Machine Learning ที่เลือกมานั้นจะอลังการงานสร้างซักแค่ไหน สอนไม่ดี ก็ไม่มีทางฉลาดได้ค่ะ

2 Curse of Dimensionality

Picture from Statistics.com

ปัญหานี้ถ้าจะให้แปลเป็นภาษาไทยแบบตรงตัวเลยก็คือ คำสาปแห่งมิติของข้อมูลค่ะ 555 อาจะฟังดูละครๆ ไปนิดนึงนะคะ แต่เป็นเรื่องจริงที่ปฏิเสธไม่ได้เลยค่ะ ว่าจำนวนมิติของข้อมูล หรือ ฟีเจอร์ นี่ล่ะค่ะ ที่ทำให้โมเดลเหมือนต้องคำสาป ทำให้ผู้พัฒนาพยายามแล้ว พยายามอีกกับการสอนโมเดล แต่ก็ไม่เป็นผล

อันที่จริงแล้ว ปัญหาข้อนี้ในทางทฤษฏี ก็คือ การมีจำนวนฟีเจอร์ หรือ ไดเมนชั่น มากๆ ทำให้โมเดลพยายามจดจำรายละเอียด ข้อข้อมูลมากเกินไป โดยปัญหาที่จะเกิดขึ้นมากเมื่อจำนวนข้อมูล หรือ แถวของข้อมูลมีน้อยด้วย การพยายามปรับตัวเองให้เข้ากับข้อมูลมากเกินไปนี้ จะนำไปสู่ปัญหาต่อไปก็คือ โมเดลจะไม่ Generalize เพียงพอ ที่จะทำงานกับข้อมูลใหม่ๆ ที่เข้ามาในภายหลังนั่นเองค่ะ ทำให้เทรนยังงั๊ย ยังงัย ก็ไม่ได้โมเดลที่มีประสิทธิภาพซักทีค่ะ

3. Occam’s Razor

ทฤษฏี “มีดโกนอ็อกคัม” ได้ถูกนำมาประยุกต์ใช้เกี่ยวกับการสร้างโมเดลเอาไว้ว่า ความสามารถในการอธิบายข้อมูลของโมเดลจะลดลง เมื่อข้อมูลอินพุตมีจำนวนฟีเจอร์ที่มากเกินไป พูดง่ายๆ ก็คือ ยิ่งรายละเอียด ก็ยิ่งที่จะข้อสรุปของโมเดลที่จะมาอธิบายข้อมูลนั้นๆ นั่นเองค่ะ

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

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

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