- • SVM寻找最大间隔分离超平面
- • 核函数可处理非线性问题
- • RBF核是最常用的选择
- • 训练前务必标准化数据
7.5 支持向量机 (SVM)
寻找最优分离超平面
🎯 学习目标
- 理解SVM的核心思想
- 掌握核函数的使用
- 学会处理非线性问题
- 了解SVM的优缺点
📐 SVM原理
最大间隔分类器
寻找使两类样本间隔最大的超平面
决策边界: w·x + b = 0
间隔最大化: max 2/||w||
约束: yᵢ(w·xᵢ + b) ≥ 1
🔧 核函数
| 核函数 | 公式 | 适用场景 |
|---|---|---|
| 线性核 | K(x, y) = x·y | 线性可分数据 |
| 多项式核 | K(x, y) = (x·y + c)ᵈ | 非线性边界 |
| RBF核 | K(x, y) = exp(-γ||x-y||²) | 通用,最常用 |
💻 sklearn实现
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
# 数据标准化(SVM对尺度敏感)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 线性SVM
svm_linear = SVC(kernel='linear', C=1.0)
svm_linear.fit(X_train_scaled, y_train)
# RBF核SVM
svm_rbf = SVC(kernel='rbf', C=1.0, gamma='scale')
svm_rbf.fit(X_train_scaled, y_train)
# 预测
y_pred = svm_rbf.predict(X_test_scaled)
📝 本节小结
✅