ทฤษฎี SVM: ขอบเขตและเวกเตอร์ค้ำจุน
ตัวจำแนกที่มีขอบเขตกว้างที่สุด ขอบเขตแบบเข้มงวดเทียบกับขอบเขตแบบยืดหยุ่น (พารามิเตอร์ C) และเวกเตอร์ค้ำจุน
ทฤษฎี SVM: ขอบเขตและเวกเตอร์ค้ำจุน เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
SVM คืออะไร
เครื่องจักรเวกเตอร์สนับสนุน เป็นตัวจำแนกประเภทที่ค้นหาเส้นขอบเขตซึ่งแยกสองคลาสออกจากกันได้ดีที่สุด แทนที่จะเลือกเส้นแบ่งใด ๆ ก็ได้ วิธีนี้จะหาเส้นที่มีช่องว่างระหว่างคลาสกว้างที่สุด
ไฮเปอร์เพลนที่ใช้แบ่งแยก
ในสองมิติ เส้นขอบเขตคือเส้นตรง ส่วนในมิติที่สูงขึ้นจะเป็น ไฮเปอร์เพลน โดย SVM นิยามเส้นนี้เป็น w . x + b = 0 และจำแนกจุดตามด้านที่จุดนั้นอยู่
ระยะขอบ
ระยะขอบ คือระยะห่างระหว่างไฮเปอร์เพลนกับจุดที่ใกล้ที่สุดของแต่ละคลาส SVM จะทำให้ระยะขอบนี้มีค่าสูงสุด เพราะช่องว่างที่กว้างกว่ามักทำให้โมเดลนำไปใช้กับข้อมูลใหม่ได้ดีกว่า
ไฮเปอร์เพลนที่มีระยะขอบสูงสุด
จากขอบเขตที่เป็นไปได้ทั้งหมด SVM จะเลือก ไฮเปอร์เพลนที่มีระยะขอบสูงสุด ซึ่งเป็นไฮเปอร์เพลนที่อยู่ห่างจากจุดที่ใกล้ที่สุดของทั้งสองฝั่งมากที่สุด นี่คือแนวคิดหลักที่ทำให้ SVM มีความทนทาน
เวกเตอร์สนับสนุน
เวกเตอร์สนับสนุน คือจุดข้อมูลที่อยู่ใกล้เส้นขอบเขตที่สุด หรือจุดที่แตะขอบของระยะขอบ มีเพียงจุดเหล่านี้เท่านั้นที่กำหนดไฮเปอร์เพลน การนำจุดอื่นออกจะไม่ทำให้ไฮเปอร์เพลนเปลี่ยนแปลง
from sklearn.svm import SVC
model = SVC(kernel="linear")
model.fit(X, y)
print("Support vectors:\n", model.support_vectors_)
print("Indices:", model.support_)เหตุใดเวกเตอร์สนับสนุนจึงสำคัญ
เนื่องจากมีเพียงเวกเตอร์สนับสนุนที่กำหนดโมเดล SVM จึงใช้หน่วยความจำอย่างมีประสิทธิภาพในเวลาทำนาย และมุ่งเน้นไปที่ตัวอย่างที่ยากและให้ข้อมูลมากที่สุดซึ่งอยู่ใกล้เส้นขอบเขต แทนที่จะสนใจตัวอย่างที่ง่ายและอยู่ห่างออกไป
ระยะขอบแบบเข้มงวด
SVM ที่ใช้ ระยะขอบแบบเข้มงวด ต้องการการแยกที่สมบูรณ์แบบ โดยห้ามมีจุดใดข้ามระยะขอบ วิธีนี้ใช้ได้ก็ต่อเมื่อข้อมูล สามารถแยกเชิงเส้นได้อย่างสมบูรณ์แบบ และไวต่อค่าผิดปกติมาก
ปัญหาของระยะขอบแบบเข้มงวด
ข้อมูลจริงมีสัญญาณรบกวนและแทบไม่สามารถแยกได้อย่างสมบูรณ์แบบ ค่าผิดปกติเพียงจุดเดียวอาจทำให้ไม่สามารถใช้ระยะขอบแบบเข้มงวดได้ หรือบังคับให้ระยะขอบบางอย่างผิดธรรมชาติ เราจึงต้องยอมให้เกิดข้อผิดพลาดได้บ้าง
ระยะขอบแบบยืดหยุ่น
SVM ที่ใช้ ระยะขอบแบบยืดหยุ่น ยอมให้บางจุดละเมิดระยะขอบหรือถูกจำแนกผิดได้ โดยแลกข้อผิดพลาดเล็กน้อยกับเส้นขอบเขตที่กว้างและทนทานกว่า การควบคุมนี้ใช้พารามิเตอร์ C
พารามิเตอร์ C
C กำหนดบทลงโทษสำหรับการละเมิด C ที่มีค่าสูง จะลงโทษข้อผิดพลาดอย่างหนัก ทำให้ได้ ระยะขอบที่เล็กลง ซึ่งพอดีกับข้อมูลฝึกอย่างมาก (เสี่ยงต่อการเรียนรู้มากเกินไป) ส่วน C ที่มีค่าต่ำ จะยอมให้มีความผ่อนคลายมากขึ้นและมีระยะขอบที่กว้างขึ้น (มีการปรับให้เป็นระเบียบมากขึ้น)
from sklearn.svm import SVC
strict = SVC(C=100, kernel="linear") # narrow margin, fits closely
relaxed = SVC(C=0.1, kernel="linear") # wide margin, more tolerantการปรับค่า C ในการใช้งานจริง
เลือกค่า C ด้วยการตรวจสอบไขว้ ค่าที่สูงเกินไปทำให้เรียนรู้มากเกินไป ส่วนค่าที่ต่ำเกินไปทำให้เรียนรู้น้อยเกินไป ค่าที่ดีที่สุดจะสร้างสมดุลระหว่างความกว้างของระยะขอบกับความแม่นยำบนข้อมูลฝึกสำหรับข้อมูลของคุณ
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
gs = GridSearchCV(SVC(kernel="linear"), {"C": [0.01, 0.1, 1, 10, 100]}, cv=5)
gs.fit(X, y)
print("Best C:", gs.best_params_)ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจทฤษฎี SVM
สรุปทบทวน
สรุป: SVM ค้นหา ไฮเปอร์เพลนที่มีระยะขอบสูงสุด เพื่อแยกคลาสออกจากกัน เวกเตอร์สนับสนุน คือจุดที่อยู่ใกล้ที่สุด และเป็นตัวกำหนดเส้นขอบเขตเพียงกลุ่มเดียว ระยะขอบแบบเข้มงวด ต้องการการแยกที่สมบูรณ์แบบ ส่วน ระยะขอบแบบยืดหยุ่น ยอมให้เกิดการละเมิดได้ โดยควบคุมด้วย C (C สูงขึ้น = ระยะขอบเล็กลง และมีการปรับให้เป็นระเบียบน้อยลง)
คำถามที่พบบ่อย
บทเรียน “ทฤษฎี SVM: ขอบเขตและเวกเตอร์ค้ำจุน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ทฤษฎี SVM: ขอบเขตและเวกเตอร์ค้ำจุน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ทฤษฎี SVM: ขอบเขตและเวกเตอร์ค้ำจุน”
ตัวจำแนกที่มีขอบเขตกว้างที่สุด ขอบเขตแบบเข้มงวดเทียบกับขอบเขตแบบยืดหยุ่น (พารามิเตอร์ C) และเวกเตอร์ค้ำจุน คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ทฤษฎี SVM: ขอบเขตและเวกเตอร์ค้ำจุน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ทฤษฎี SVM: ขอบเขตและเวกเตอร์ค้ำจุน
- เคล็ดลับเคอร์เนล: RBF พหุนาม และซิกมอยด์
- การจำแนกประเภทด้วย SVM และ sklearn
- การถดถอยด้วย SVM (SVR)