共计 1019 个字符,预计需要花费 3 分钟才能阅读完成。
实际应用场景
支持向量机(SVM, Support Vector Machine)在现实中有广泛应用,比如:

- 手写数字识别:美国邮政系统用 SVM 分类邮政编码,准确率超过 98%
- 医学诊断:通过患者特征(如肿瘤尺寸、细胞形态)判断良性 / 恶性肿瘤
核心原理
1. 最大间隔超平面
SVM 的核心是找到一个最优超平面 $w^Tx + b = 0$,使两类样本间隔最大化。数学推导如下:
- 间隔距离公式:$\gamma = \frac{2}{||w||}$
- 转化为优化问题:
$$\min_{w,b} \frac{1}{2}||w||^2$$
$$s.t.\ y_i(w^Tx_i + b) \geq 1,\ \forall i$$
2. 软间隔与硬间隔
- 硬间隔:严格要求所有样本正确分类(易过拟合)
- 软间隔:允许少量误分类,引入松弛变量 $\xi$:
$$\min \frac{1}{2}||w||^2 + C\sum \xi_i$$
3. 核函数对比
| 核类型 | 公式 | 适用场景 |
|---|---|---|
| 线性核 | $K(x,z)=x^Tz$ | 特征数 > 样本数 |
| 多项式核 | $(\gamma x^Tz + r)^d$ | 中等复杂度数据 |
| RBF 核(默认) | $\exp(-\gamma |
Python 实战
# 数据预处理
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 模型训练
from sklearn.svm import SVC
model = SVC(kernel='rbf', C=1.0, gamma='scale')
model.fit(X_train, y_train)
# 评估
from sklearn.metrics import classification_report
print(classification_report(y_test, model.predict(X_test)))
调优建议
- 参数选择:
- 小数据集:优先用 RBF 核,$C$ 取 1 -10
-
大数据集:考虑线性核,用
LinearSVC加速 -
特征工程:
- 必须做标准化(SVM 对尺度敏感)
-
删除高度相关特征
-
常见错误:
- 报错
ConvergenceWarning:增大max_iter或减小tol - 内存不足:改用
SGDClassifier(loss='hinge')
思考题
- 当特征维度远大于样本量时,为什么线性核效果更好?
- 如何通过交叉验证同时优化 $(C, \gamma)$ 参数?
- SVM 如何处理多分类问题?(提示:ovo/ovr 策略)
正文完
发表至: 未分类
近一天内
