📚 সমস্ত অধ্যায় দেখুন
অধ্যায়/ফেজ 2 · Phase 2 · Algorithms
2.4২০ মিনিট পড়া14 / 68

Support Vector Machine — Margin maximization

SVM

Hyperplane, kernel trick, RBF।

Hook — দুই দলের মাঝে সীমানা

মাঠে দুটি দল দাঁড়ালে — তাদের মাঝে এমন একটি দাগ টানা যা যাতে দুই দল থেকেই সবচেয়ে দূরে থাকে। এই “সবচেয়ে চওড়া রাস্তা” খোঁজাই SVM এর মূল idea।

Concept — Maximum Margin Hyperplane

SVM এমন একটি hyperplane খোঁজে যা দুই class কে আলাদা করে এবং দুই দিকের সবচেয়ে কাছের point (support vector) থেকে margin সর্বোচ্চ হয়।

w·x + b = 0 (decision boundary)
margin = 2 / ||w|| → maximize

Math — Soft Margin ও Kernel Trick

Soft Margin

Real data সবসময় perfectly separable না। C parameter দিয়ে আমরা কতটা violation allow করব ঠিক করি।

min ½||w||² + C·Σ ξᵢ

Kernel Trick

Non-linear data কে higher dimension এ map করে আবার linearly separable বানানো — explicit transformation ছাড়াই।

  • Linear — সাধারণ separable data।
  • Polynomial — curved boundary।
  • RBF (Gaussian) — সবচেয়ে জনপ্রিয়, complex boundary।

Real-world Use

  • Text classification (small/medium dataset)।
  • Image classification (pre-deep-learning era)।
  • Bioinformatics — gene/protein classification।
  • Face detection।

Code — Sklearn SVM

svm_demo.py
from sklearn.datasets import make_moons
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import train_test_split

X, y = make_moons(n_samples=300, noise=0.25, random_state=42)
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.2, random_state=42)

for kernel in ["linear", "poly", "rbf"]:
    model = make_pipeline(StandardScaler(),
                          SVC(kernel=kernel, C=1.0, gamma="scale"))
    model.fit(Xtr, ytr)
    print(f"{kernel:>6} -> acc={model.score(Xte, yte):.3f}")

Common Mistakes

  • Scaling না করা — RBF kernel এ critical।
  • C ও gamma tune না করা — default এ stuck থাকা।
  • Huge dataset (>1L row) এ SVM — slow।
  • Multi-class এ probability চাইলে `probability=True` দিতে ভুলে যাওয়া।

Practice Tasks

  • Task 1: C=0.01, 1, 100 এ decision boundary তুলনা করো।
  • Task 2: GridSearchCV দিয়ে best (C, gamma) খুঁজে বের করো।
  • Task 3: linearly separable data এ linear vs rbf accuracy দেখো।

Mini Project — Digit Classifier

Sklearn এর `load_digits` dataset (৮x৮ image) এ SVM (RBF) দিয়ে 95%+ accuracy আনার চেষ্টা করো। Confusion matrix দেখে কোন digit এ বেশি confuse করে — analyze করো।

Summary

এক নজরে

SVM = সবচেয়ে বড় margin এর hyperplane + Kernel এ non-linear জাদু।