20

SVM

Multi-class SVM

Theory

SVMs are inherently binary classifiers. For multi-class problems, we use strategies to combine multiple binary SVMs. One-vs-Rest and One-vs-One are the most common approaches.

Visualization

Multi-class SVM visualization

Mathematical Formulation

Strategies:
• One-vs-Rest (OvR):
  Train K binary classifiers
  Predict class with highest confidence

• One-vs-One (OvO):
  Train K(K-1)/2 classifiers
  Use voting for final class

Trade-offs:
OvR: Faster, K classifiers
OvO: More accurate, K(K-1)/2 classifiers

Code Example

from sklearn import svm
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report

# Load multi-class dataset
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
    iris.data, iris.target, test_size=0.3, random_state=42
)

# One-vs-Rest
clf_ovr = svm.SVC(kernel='rbf', decision_function_shape='ovr')
clf_ovr.fit(X_train, y_train)

# One-vs-One
clf_ovo = svm.SVC(kernel='rbf', decision_function_shape='ovo')
clf_ovo.fit(X_train, y_train)

# Evaluate
y_pred_ovr = clf_ovr.predict(X_test)
y_pred_ovo = clf_ovo.predict(X_test)

print("One-vs-Rest Performance:")
print(classification_report(y_test, y_pred_ovr))

print("\nOne-vs-One Performance:")
print(classification_report(y_test, y_pred_ovo))