เรียนรู้และทำความเข้าใจเรื่อง Support Vector Machine (SVM) คืออะไร



Support Vector Machine (SVM) คืออะไร

Support Vector Machine คือ ?

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

แนวความคิดของ Support Vector Machine

เกิดจากการที่นำค่าของกลุ่มข้อมูลมาวางลงในฟีเจอร์สเปซ (Feature Space) จากนั้นจึงหาเส้นที่ใช้แบ่งข้อมูลทั้งสองออกจากกันโดยจะสร้างเส้นแบ่ง (Hyperplane) ที่เป็นเส้นตรงขึ้นมา และเพื่อให้ทราบว่าเส้นตรงที่แบ่งสองกลุ่มออกจากกันนั้น เส้นตรงใดเป็นเส้นที่ดีที่สุด



สำหรับรากฐานเดิมของ Support Vector Machine ถูกนำมาใช้กับข้อมูลที่เป็นเชิงเส้น แต่ในความเป็นจริงแล้วข้อมูลที่นำมาใช้ในระบบการสอนให้ระบบเรียนรู้ส่วนใหญ่มักเป็นข้อมูลแบบไม่เป็นเชิงเส้น ซึ่ง                                                     สามารถแก้ปัญหาดังกล่าวด้วยการนำ Kernal Function มาใช้

รูปที่1                                                                   รูปที่2

สมมติว่าเราต้องการคัดแยกข้อมูลออกเป็น 2 กลุ่ม โดยใช้เส้นแบ่งที่เป็นเส้นตรง จะเห็นว่ามีเส้นตรงจำนวนมากที่สามารถคัดแยกได้ แต่เส้นตรงเส้นไหนที่ดีที่สุด เราจะนิยาม Margin เป็นผลรวมระยะห่างของเส้นตรงที่เป็นเส้นแบ่ง ถึงเส้นตรงที่ผ่านข้อมูลที่ใกล้ที่สุดและขนานกับเส้นแบ่งของทั้งสองกลุ่ม จะเห็นว่า H1 แม้จะสามารถแบ่งข้อมูลทั้งสองกลุ่มออกได้เช่นกัน แต่ ระยะในการแบ่งจากเส้นแบ่งไปถึงข้อมูลที่ใกล้ที่สุดนั้นมีขนาดน้อย แต่จากเส้น H2 จะเป็นเส้นที่แบ่งกลุ่มที่กว้างมากที่สุดของทั้งสองกลุ่มคือให้ค่า maximum margin เราเรียกข้อมูลที่อยู่บน margin นี้ว่า Support Vector



จากการกระจายตัวของข้อมูลในรูปที่ 1 จะเห็นว่าสามารถแบ่งแยกออกเป็น 2 กลุ่มได้อย่างชัดเจน ซึ่งโดยปกติแล้วเราจะใช้ linear model (หรือสมการเส้นตรง) เพื่อทำการแบ่งข้อมูลออกเป็น 2 คลาส ทว่า linear model นี้สามารถเป็นไปได้หลากหลายเส้นดังในรูปที่ 2

จะเลือกโมเดลไหนดี ?

เราควรจะเลือกโมเดลที่ไม่ overfitting หรือโมเดลที่ไม่จำรูปแบบของข้อมูล training มากเกินไป จากตัวอย่างจะเห็นว่าโมเดลที่ 1 และโมเดลที่ 3 จะมีจุดหนึ่งที่ linear model อยู่ใกล้กับข้อมูลแต่ละคลาสมากเกินไป นั่นคือ ถ้ามีข้อมูลใหม่ที่อยู่ห่างออกไปสักเล็กน้อยก็จะทำนายผิดไปพลาดไป ดังนั้นในตัวอย่างนี้จึงควรจะเลือกโมเดลที่ 2  (เส้นสีแดง) และนั่นคือหลักการของ SVM ที่เลือก linear model ที่มีระยะห่างระหว่าง 2 คลาสห่างกันมากที่สุด ดังแสดงในรูป

Overfitting คือ ?

Overfitting คือการที่โมเดลจดจำรูปแบบของข้อมูล training มากเกินไปจนไม่สามารถทำนายข้อมูล unseen data ได้

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

เทคนิค Kernel function

คือการมี kernel function ที่สามารถเปลี่ยนข้อมูลที่มีมิติ (dimension) ที่ต่ำกว่าให้มีมีติสูงขึ้นเพื่อให้การแบ่งข้อมูลแบบ linear model ได้ ดังแสดงตัวอย่างในรูป

จากข้อมูลในรูปที่  (a) จะเห็นว่ามีข้อมูลอยู่ 2 คลาส คือ คลาส A และ B ซึ่งมีเพียง 1 มิติ เราสามารถสร้างโมเดลที่เป็นรูปแบบของกฏเพื่อแบ่งแยกข้อมูลออกเป็น 2 คลาสได้ เช่น

ถ้าค่า X < 0.5 หรือ X > 2.5 แล้วจะทำนายว่าเป็นคลาส B

ถ้าค่า X อยู่ในช่วง [0.5-2.5] แล้วจะทำนายว่าเป็นคลาส A

ที่เป็นเช่นนี้เนื่องจากข้อมูลใน training ของเราแสดงแค่นั้น แต่เหมือนเดิมครับโมเดลที่สร้างนี้อาจจะ overfit ได้ถ้าจริงๆ แล้วข้อมูลที่มีค่า X = -1 ก็เป็นคลาส A แต่โมเดลเราจะทำนายผิดทันที



ดังนั้นถ้าเราใช้ kernel function เพื่อเพิ่มแอตทริบิวต์ขึ้นมาเป็น X2 = X2 ซึ่งแสดงการกระจายตัวของข้อมูลในรูปที่ (b) และมีโมเดล SVM ทำการแบ่งข้อมูลออกเป็น 2 คลาสโดยการใช้เส้นตรงเพียงเส้นเดียว

ยกตัวอย่าง Kernel fuction

สามารถทำได้2 วิธี คือใช้รากที่2ของแกน x หรือ นำแกนX มายกกำลัง2 วิธีนี้คือ การนำแกนX มาหารากที่2 จะทำให้ได้กราฟที่สามารถวาดเป็นlinear และหาค่าได้ง่ายขึ้น

ลิงค์ตัวอย่าง Kernel Fuction : https://drive.google.com/file/d/1F4UEyMRIK3JJyH2ZK74U1UCfd4sslUYc/view?usp=sharing

ประโยชน์

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

ตัวอย่างการใช้เทคนิคการจำาแนกกลุ่ม 1. แบ่งกลุ่มครอบครัวที่มีบุตรเป็น 2 กลุ่ม คือกลุ่มที่วางแผนครอบครัวกับกลุ่มที่ไม่วางแผน ครอบครัว โดยคาดว่าตัวแปรหรือปัจจัยที่ทำให้ครอบครัวอยู่คนละกลุ่ม คือ รายได้ ระดับการศึกษา และอาชีพของหัวหน้าครอบครัว เป็นต้น



ซึ่งการใช้เทคนิค Support vector machines สามารถนำไปประยุกต์ใช้ได้หลายแบบ และเป็นที่นิยมมากอีกด้วย

วีดีโอการนำเสนอ

อ้างอิงแหล่งที่มา

http://dataminingtrend.com/2014/support-vector-machine-svm/

 

จัดทำโดย

นายจารุวิทย์ ประทานชีวินทร์

นายอภิวัฒน์ จารุศักดาเดช



Jaruwit Pratancheewin
at GlurGeek.Com

Leave a Reply

© 2022 GlurGeek.Com