支持向量机PYTHON几何间隔
时间: 2023-07-09 11:28:48 浏览: 84
使用 python手动实现了SVM支持向量机 核函数 软间隔
支持向量机(SVM)是一种用于分类和回归的监督学习算法。在SVM中,我们希望找到一个超平面,将数据分为两个类别。几何间隔是SVM中一个重要的概念,它是指超平面到最近数据点的距离。具体而言,对于一个超平面 $w^Tx+b=0$ 和一个数据点 $x_i$,它们之间的几何间隔为:
$$\gamma_i=y_i(w^Tx_i+b)/||w||$$
其中 $y_i$ 是 $x_i$ 的类别标签,$||w||$ 表示 $w$ 的 $L_2$ 范数。SVM的目标是最大化所有数据点的几何间隔,即:
$$\max_{w,b} \min_{i} \gamma_i$$
这个问题可以转化为一个约束优化问题:
$$\begin{aligned} &\min_{w,b} \frac{1}{2}||w||^2 \\ &\text{s.t. } y_i(w^Tx_i+b) \geq \gamma, i=1,\ldots,m \end{aligned}$$
其中 $\gamma$ 是一个超参数,控制着所有数据点的几何间隔的最小值。这个问题可以通过拉格朗日乘子法转化为对偶问题:
$$\begin{aligned} &\max_{\alpha} \sum_{i=1}^m \alpha_i - \frac{1}{2}\sum_{i,j=1}^m y_iy_j\alpha_i\alpha_j\langle x_i,x_j\rangle \\ &\text{s.t. } \sum_{i=1}^m \alpha_iy_i=0, 0 \leq \alpha_i \leq C, i=1,\ldots,m \end{aligned}$$
其中 $\alpha$ 是拉格朗日乘子,$C$ 是一个超参数,控制着分类错误的惩罚程度。最终分类器的超平面可以表示为:
$$w=\sum_{i=1}^m \alpha_iy_ix_i$$
其中 $\alpha_i \neq 0$ 的数据点称为支持向量。
阅读全文