支持向量机
支持向量机(Support Vector Machine, SVM)是一种最大间隔分类模型。它不仅要求样本被正确分类,还希望分类边界离最近样本尽可能远。
概念详解
线性分类超平面为:
对二分类标签
距离超平面最近的样本称为支持向量,它们决定最终分类边界。
数学公式及其推导
点
两侧间隔边界为
最大化间隔等价于最小化:
约束条件为:
对于非完全线性可分数据,引入松弛变量
对应 hinge loss:
核函数
核函数可以隐式计算高维空间内积:
常用 RBF 核为:
应用代码
python
import numpy as np
from sklearn.svm import SVC
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1], [3, 3], [3, 4], [4, 3], [4, 4]])
y = np.array([0, 0, 0, 0, 1, 1, 1, 1])
clf = SVC(kernel="rbf", C=1.0, gamma="scale")
clf.fit(X, y)
print(clf.predict([[0.2, 0.1], [3.5, 3.2]]))
print("支持向量数量:", clf.n_support_)小结
SVM 的重点是最大间隔和核技巧。它在中小规模数据上表现稳健,但大规模训练代价较高,参数