The linear kernel is the simplest possible kernel — it's just the ordinary dot product, producing exactly the same straight-line decision boundary as plain (non-kernelized) SVM. It's the right first choice whenever the data is already close to linearly separable.
Formula
No transformation is implied at all — the "kernel trick" here is trivial, since \(\phi(x)=x\). This is exactly the dot product already covered in Math for ML.
When the Linear Kernel Is the Right Choice
| Situation | Why Linear Fits |
|---|---|
| Very high-dimensional data (e.g. text/TF-IDF vectors) | High-dimensional data is already "spread out" enough that a linear boundary is often sufficient |
| Large datasets | Linear SVM trains dramatically faster than RBF, which matters more as data grows |
| Need for interpretability | A linear kernel's coefficients (like logistic regression's) have a direct, per-feature meaning |
Python Implementation
from sklearn.svm import SVC
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Text classification -- a classic strong use case for the linear kernel
categories = ["rec.sport.hockey", "sci.space"]
data = fetch_20newsgroups(subset="train", categories=categories, remove=("headers","footers","quotes"))
vectorizer = TfidfVectorizer(max_features=5000)
X = vectorizer.fit_transform(data.data)
y = data.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = SVC(kernel="linear")
model.fit(X_train, y_train)
print(accuracy_score(y_test, model.predict(X_test))) # linear SVM typically does very well on TF-IDF text data
Linear Kernel vs Plain Linear SVM — A Subtle Distinction
scikit-learn also offers LinearSVC, a separate, specialized implementation optimized specifically for the linear case — it scales better to large datasets than SVC(kernel="linear"), though the two solve very similar (not always numerically identical) optimization problems.
from sklearn.svm import LinearSVC
fast_model = LinearSVC(C=1.0, max_iter=5000)
fast_model.fit(X_train, y_train)
# Generally faster than SVC(kernel="linear") on large datasets
Practical Use Cases
- Text classification, where TF-IDF features are already high-dimensional and near-linearly separable
- Any problem where an initial, fast baseline is more valuable than squeezing out the last bit of non-linear performance
Common Mistakes
- Assuming a non-linear kernel is always "better" — on high-dimensional, sparse data (like text), linear kernels frequently match or beat RBF while training far faster.
- Using
SVC(kernel="linear")on a very large dataset instead of the fasterLinearSVC, unnecessarily slowing training.
Interview Relevance
Q: "Why is a linear kernel often preferred for text classification specifically?" TF-IDF text features are typically very high-dimensional and sparse, and data in such high-dimensional spaces is often already close to linearly separable — a linear kernel captures this efficiently, without the added training cost and overfitting risk of a more flexible non-linear kernel.
Practice Question
You have a dataset with 50,000 features and 500 samples. Would you lean toward a linear or RBF kernel first, and why?