0Pricing
Learn AI with Python · บทเรียน

ทฤษฎี 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ทฤษฎี SVM: ขอบเขตและเวกเตอร์ค้ำจุน
  2. เคล็ดลับเคอร์เนล: RBF พหุนาม และซิกมอยด์
  3. การจำแนกประเภทด้วย SVM และ sklearn
  4. การถดถอยด้วย SVM (SVR)
← กลับไปที่ Learn AI with Python