SVM หรือ support vector machine คืออัลกอริทึมสำหรับการจำแนกประเภทที่เลือกเส้นแบ่งระหว่างคลาสให้มี margin กว้างที่สุดเท่าที่เป็นไปได้ หากคุณกำลังค้นหาว่า SVM คืออะไร แก่นสำคัญก็คือ ไม่ใช่แค่แยกกลุ่มออกจากกัน แต่ต้องเว้นช่องว่างที่กว้างและเชื่อถือได้ที่สุดระหว่างกลุ่มด้วย
จุดที่อยู่ใกล้เส้นแบ่งนั้นมากที่สุดเรียกว่า support vectors จุดเหล่านี้สำคัญที่สุด เพราะเป็นตัวกำหนดว่าเส้นแบ่งจะวางอยู่ตรงไหนได้
ทำไม Margin จึงสำคัญ
ลองนึกภาพว่ามีกลุ่มจุดสองกลุ่ม กลุ่มหนึ่งมาจากคลาส A และอีกกลุ่มมาจากคลาส B อาจมีเส้นหลายเส้นที่แยกสองกลุ่มนี้ออกจากกันได้ แต่ SVM จะเลือกเส้นที่เหลือพื้นที่กันชนมากที่สุดทั้งสองด้าน
margin ที่กว้างกว่ามักทำให้ตัวจำแนกไวต่อการเปลี่ยนแปลงเล็กน้อยในข้อมูลฝึกน้อยลง นี่ไม่ใช่การรับประกันว่าจะทำงานได้ดีกว่าเสมอในโลกจริง แต่เป็นสัญชาตญาณหลักที่อยู่เบื้องหลัง SVM
เส้นแบ่งการตัดสินใจของ SVM มีหน้าตาอย่างไร
ใน SVM เชิงเส้น เส้นแบ่งการตัดสินใจคือไฮเปอร์เพลน:
ตัวจำแนกจะทำนายเป็นคลาสหนึ่งเมื่อ และเป็นอีกคลาสเมื่อ
ในการสเกลแบบ max-margin มาตรฐานสำหรับข้อมูลที่แยกได้สมบูรณ์ SVM จะเลือก และ ให้เป็นไปตามเงื่อนไขว่า
สำหรับทุกจุดฝึก พร้อมกับทำให้ margin กว้างที่สุดเท่าที่จะทำได้ ในการสเกลนี้ ความกว้างของ margin ทั้งหมดคือ
แนวคิดเชิงปฏิบัติที่สำคัญนั้นง่ายกว่าสูตรมาก: ค่า ที่เล็กลงหมายถึง margin ที่กว้างขึ้นในกรอบการทำ normalization แบบนี้
ตัวอย่างคำนวณ: SVM หนึ่งมิติ
ตัวอย่างหนึ่งมิติช่วยให้เห็นแนวคิดเรื่อง margin ได้ง่ายมาก
สมมติว่าคลาสลบมีจุดที่ และ ส่วนคลาสบวกมีจุดที่ และ
threshold ใด ๆ ระหว่าง กับ สามารถแยกคลาสได้ ตัวอย่างเช่น ใช้ได้ และ ก็ใช้ได้ แต่ตัวเลือกเหล่านี้ไม่ได้ให้พื้นที่กันชนเท่ากันทั้งสองด้าน
ในกรณีหนึ่งมิติที่แยกได้สมบูรณ์นี้ SVM จะเลือกจุดกึ่งกลางระหว่างจุดต่างคลาสที่อยู่ใกล้กันที่สุด ดังนั้น threshold สำหรับการตัดสินใจคือ
จุดคลาสลบที่ใกล้ที่สุดคือ และจุดคลาสบวกที่ใกล้ที่สุดคือ จุดสองจุดนี้คือ support vectors แต่ละจุดอยู่ห่างจากเส้นแบ่ง หน่วย ดังนั้น margin จึงสมดุลและกว้างที่สุดเท่าที่เป็นไปได้
คุณสามารถเขียนตัวจำแนกในกรณีนี้ได้ว่า "ทำนายเป็นบวกเมื่อ และเป็นลบเมื่อ " กรณีง่าย ๆ นี้สะท้อนแนวคิดจริงของ SVM: เส้นแบ่งถูกกำหนดโดยกรณีใกล้เคียงที่แยกยากที่สุด ไม่ใช่โดยจุดที่อยู่ไกลและจำแนกได้ง่ายอยู่แล้ว
Hard-Margin กับ Soft-Margin SVM
hard-margin SVM ใช้ได้ก็ต่อเมื่อข้อมูลฝึกสามารถแยกเชิงเส้นได้อย่างสมบูรณ์เท่านั้น ถ้ามีแม้แต่จุดเดียวที่ทำให้เงื่อนไขนี้ไม่เป็นจริง การตั้งค่าแบบ hard-margin ก็จะไม่สอดคล้องกับข้อมูล
นี่จึงเป็นเหตุผลว่าทำไม SVM ที่ใช้จริงจำนวนมากจึงใช้ soft margin แทน soft-margin SVM ยังคงชอบ margin ที่กว้าง แต่ยอมให้บางจุดตกอยู่ภายใน margin หรือแม้แต่อยู่ผิดด้านของเส้นแบ่งได้ โดยมีค่าปรับ
พารามิเตอร์ เป็นตัวควบคุมการแลกเปลี่ยนนี้ ค่า ที่มากขึ้นจะลงโทษการละเมิดแรงขึ้น ค่า ที่น้อยลงจะยืดหยุ่นมากขึ้น ไม่มีตัวเลือกไหนดีกว่าโดยอัตโนมัติ เพราะขึ้นอยู่กับข้อมูลและควรตรวจสอบกับผลลัพธ์บนชุด validation
เมื่อไร Kernel SVM จึงช่วยได้
บางครั้งเส้นแบ่งตรง ๆ ก็ไม่เพียงพอในปริภูมิคุณลักษณะเดิม kernel SVM จัดการเรื่องนี้โดยเปรียบเทียบจุดผ่านฟังก์ชัน kernel ซึ่งทำให้เกิดเส้นแบ่งแบบโค้งได้โดยไม่ต้องเขียนเวกเตอร์คุณลักษณะที่แปลงแล้วขนาดใหญ่ออกมาตรง ๆ
เงื่อนไขสำคัญคือ ความยืดหยุ่นที่เพิ่มขึ้นจะมีประโยชน์ก็ต่อเมื่อรูปแบบของข้อมูลต้องการจริง ๆ kernel อาจช่วยให้โมเดลดีขึ้นได้ แต่ก็อาจทำให้การปรับแต่งยากขึ้นเช่นกัน ดังนั้นควรตรวจสอบด้วยการ validation แทนที่จะเลือกใช้เป็นค่าเริ่มต้น
ข้อผิดพลาดที่พบบ่อยเกี่ยวกับ SVM
คิดว่าทุกจุดสำคัญเท่ากัน
ใน SVM จุดที่อยู่ใกล้เส้นแบ่งที่สุดสำคัญมากที่สุด จุดที่อยู่ไกลจากเส้นแบ่งมักมีผลต่อเส้นแบ่งสุดท้ายน้อยมาก
ลืมเงื่อนไขของ Hard Margin
การแยกเชิงเส้นได้อย่างสมบูรณ์เป็นเงื่อนไขจริง ไม่ใช่สมมติฐานตั้งต้น ถ้าคลาสซ้อนทับกัน คุณต้องใช้ soft margin หรือโมเดลแบบอื่น
มองข้ามการสเกลคุณลักษณะ
SVM พึ่งพาระยะทางและ dot product ถ้าคุณลักษณะหนึ่งวัดในสเกลที่ใหญ่กว่าอีกคุณลักษณะมาก มันอาจครอบงำเส้นแบ่งได้ เว้นแต่คุณจะสเกลอินพุตก่อน
คิดว่า Kernel ดีกว่าเสมอโดยอัตโนมัติ
เส้นแบ่งที่ยืดหยุ่นกว่าสามารถฟิตข้อมูลฝึกได้ดีกว่า แต่ไม่ได้หมายความโดยอัตโนมัติว่าจะ generalize ได้ดีกว่า
SVM ถูกใช้งานที่ไหน
SVM ถูกใช้ในปัญหาการจำแนกประเภทที่เส้นแบ่งระหว่างคลาสอาจค่อนข้างชัด และการให้เหตุผลด้วย margin มีประโยชน์ โดยเฉพาะในปัญหาข้อมูลตารางขนาดเล็กถึงกลาง และในการจำแนกข้อความ ซึ่งมักมีปริภูมิคุณลักษณะที่มีมิติสูง
นอกจากนี้ยังมีการใช้กับงานถดถอยในวิธีที่เกี่ยวข้องกันซึ่งเรียกว่า support vector regression แต่กรณีนั้นเป็นการตั้งค่าที่ต่างออกไปจากภาพการจำแนกแบบทวิภาคที่อธิบายในหน้านี้
ลองทำโจทย์ SVM ที่คล้ายกัน
นำจุดหนึ่งมิติจากตัวอย่างเดิม แล้วเพิ่มจุดคลาสลบใหม่ที่ ตอนนี้ช่องว่างกว้าง ๆ ที่สะอาดหายไปแล้ว ลองถามดูว่าจะเกิดอะไรขึ้นถ้าคุณยังยืนยันใช้ hard margin และจะเปลี่ยนอย่างไรถ้าคุณยอมให้ใช้ soft margin การเปรียบเทียบนี้มักเป็นวิธีที่เร็วที่สุดในการทำให้เข้าใจ SVM อย่างแท้จริง
ต้องการความช่วยเหลือในการแก้โจทย์?
อัปโหลดคำถามของคุณแล้วรับคำตอบแบบทีละขั้นตอนที่ผ่านการตรวจสอบในไม่กี่วินาที
เปิด GPAI Solver →