Back to Data Science Notes
Topic #70

Support Vector Machines (SVM)

Understand how Support Vector Machines (SVM) classify data by maximizing the margin between classes, utilizing support vectors and kernel functions to handle non-linear boundaries.

What it is

A Support Vector Machine is a supervised learning algorithm used for classification and regression. The core mental model is finding the optimal hyperplane that separates two classes of data points with the widest possible gap, known as the margin. The data points closest to this hyperplane are called support vectors; they define the position and orientation of the boundary. If you remove all other points, the SVM solution remains unchanged because only these critical points matter.

When data is not linearly separable in its original feature space, SVMs use the kernel trick. This mathematical technique implicitly maps input data into a higher-dimensional space where a linear separation becomes possible, without explicitly computing the coordinates in that high-dimensional space.

Why it matters

  • Effective in High Dimensions: SVMs perform well even when the number of features exceeds the number of samples, making them suitable for text classification or bioinformatics.
  • Memory Efficiency: Since the model relies only on support vectors, it uses less memory during prediction compared to models that store all training data.
  • Versatility via Kernels: By choosing different kernels (linear, polynomial, RBF), one algorithm can solve both simple linear problems and complex non-linear ones.
  • Robustness: The maximization of the margin provides inherent regularization, reducing overfitting risks compared to algorithms that simply minimize training error.

Syntax or steps

The standard workflow involves three main steps: 1. Preprocessing: Scale features to zero mean and unit variance, as SVMs are sensitive to feature magnitudes. 2. Model Selection: Choose a kernel function (e.g., Radial Basis Function or RBF) and tune hyperparameters like C (regularization strength) and gamma (kernel coefficient). 3. Fitting and Prediction: Train the classifier on labeled data and predict labels for new instances.

Example

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# 1. Load dataset (Iris flowers)
iris = datasets.load_iris()
X = iris.data[:, :2]  # Use first two features for simplicity
y = iris.target

# 2. Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 3. Scale features (Crucial for SVM performance)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 4. Create and train the SVM model using an RBF kernel
svm_model = SVC(kernel='rbf', C=1.0, gamma='scale')
svm_model.fit(X_train_scaled, y_train)

# 5. Make predictions and evaluate accuracy
y_pred = svm_model.predict(X_test_scaled)
accuracy = accuracy_score(y_test, y_pred)

print(f"Accuracy: {accuracy:.2f}")

Explanation: We load the Iris dataset and select two features. After splitting the data, we apply StandardScaler to normalize inputs. The SVC object is initialized with an RBF kernel, which allows for non-linear decision boundaries. The model fits on the scaled training data, predicts on the scaled test data, and calculates accuracy.

Common mistakes

  • Forgetting Feature Scaling: SVMs calculate distances between points. If one feature has a much larger range than another, it will dominate the distance calculation, leading to poor performance. Always scale your data.
  • Choosing the Wrong Kernel: Using a linear kernel on non-linear data results in underfitting. Conversely, using a complex kernel like RBF on small, linearly separable data may cause overfitting. Start with linear; switch to RBF if accuracy is low.
  • Ignoring Hyperparameter Tuning: Default values for C and gamma are rarely optimal. A high C reduces margin width (risking overfitting), while a high gamma makes the influence of each training example very narrow (also risking overfitting).
  • Using SVM for Large Datasets: Training time scales quadratically or cubically with the number of samples. For millions of rows, consider Linear SVM or other scalable algorithms instead.

When to use it

ScenarioRecommended AlgorithmReason
Small to medium dataset (< 10k samples)SVM (RBF)High accuracy, handles non-linearity well.
Large dataset (> 100k samples)Logistic Regression / Random ForestSVM training is computationally expensive.
High dimensional sparse data (Text)Linear SVMEfficient and effective for linear separability in high dims.
Need interpretable coefficientsLogistic RegressionSVM weights are harder to interpret directly.

Practice

Guided Exercise: Modify the code above to use a linear kernel (kernel='linear'). Compare the accuracy score with the RBF version. Did the accuracy drop significantly? Why might that be?

Challenge: Implement Grid Search using sklearn.model_selection.GridSearchCV to find the best combination of C and gamma for the RBF kernel on the Iris dataset. Hint: Try C values [0.1, 1, 10] and gamma values ['scale', 'auto', 0.1].

Quick check

Question: What happens to the decision boundary if you increase the value of the regularization parameter C?

Answer: Increasing C penalizes misclassifications more heavily, causing the margin to become narrower. This can lead to overfitting if the data contains noise.

Summary

SVMs are powerful classifiers that maximize the margin between classes using support vectors. They excel in high-dimensional spaces and handle non-linear data through kernel functions, provided that features are properly scaled and hyperparameters are tuned.

Want to go beyond the notes?

Join Coding Now Tech Institute's Data Science course — live mentorship, real projects, and 100% placement support.

Enroll Now — Free Demo Available

Support Vector Machines (SVM) – FAQs

Quick answers about learning Support Vector Machines (SVM) in Data Science.

This free note from Coding Now Tech Institute explains Support Vector Machines (SVM) in Data Science — concept, syntax and worked code examples you can copy, run and revise before interviews.
Yes. Every Data Science topic on Coding Now Tech Institute, including Support Vector Machines (SVM), is 100% free with no signup required.
With focused practice, most students grasp Support Vector Machines (SVM) in 1–3 days from these notes; pairing it with Coding Now Tech Institute's mentor-led course takes you to job-ready depth faster.
Use the code examples in this note, then ask doubts for free on the Coding Now Tech Institute Community (/community) — expert instructors answer within 24 hours.
Call NowEnroll Now