SVM支持向量机python实现

支持向量机(Support Vector Machine, SVM)是一种强大的监督学习算法,主要用于分类和回归任务。SVM的核心思想是找到一个最优的超平面,使得不同类别的数据点能够被尽可能清晰地分开,并且这个超平面与最近的数据点之间有最大的间隔。这些最近的数据点被称为“支持向量”,因为它们决定了超平面的位置和方向。

支持向量机的关键概念

1. **最大间隔分离器**:
   - SVM的目标是找到一个超平面,该超平面能够将不同类别的数据点以最大间隔分隔开。
   - 这个间隔被称为“边际”(margin),最大化边际可以提高模型的泛化能力。

2. **支持向量**:
   - 支持向量是那些位于边际边界上的训练样本。它们对超平面的位置和方向起决定性作用。
   - 一旦确定了支持向量,其他非支持向量的训练样本对模型没有影响。

3. **核技巧**:
   - 对于线性不可分的数据,SVM通过使用核函数(kernel function)将数据映射到高维空间,在那里可能更容易找到一个合适的分割面。
   - 常见的核函数包括线性核、多项式核、径向基函数(RBF)核和Sigmoid核。

4. **软间隔**:
   - 在实际应用中,数据往往不是完全线性可分的。SVM引入了软间隔(soft margin)的概念,允许一些数据点在边际内或错误分类。
   - 通过正则化参数 \( C \) 来控制误差项的惩罚程度,\( C \) 越大,对误分类的惩罚越重。

### 支持向量机的工作原理

1. **线性可分情况**:
   - 当数据线性可分时,SVM寻找一个超平面 \( w \cdot x + b = 0 \),使得两个类别的数据点分别位于超平面的两侧,并且距离超平面最近的数据点(支持向量)到超平面的距离最大。
   - 目标是最小化 \( \frac{1}{2} \|w\|^2 \),同时满足 \( y_i (w \cdot x_i + b) \geq 1 \) 的约束条件,其中 \( y_i \) 是类别标签(+1 或 -1)。

2. **线性不可分情况**:
   - 当数据线性不可分时,引入松弛变量 \( \xi_i \) 来允许某些数据点违反边际约束。
   - 目标是最小化 \( \frac{1}{2} \|w\|^2 + C \sum \xi_i \),同时满足 \( y_i (w \cdot x_i + b) \geq 1 - \xi_i \) 和 \( \xi_i \geq 0 \) 的约束条件。

3. **核技巧**:
   - 通过核函数 \( K(x, x') \) 将原始特征空间中的数据点映射到高维特征空间。
   - 在高维空间中,数据可能变得线性可分,从而可以使用线性SVM进行分类。
   - 常见的核函数包括:
     - 线性核:\( K(x, x') = x \cdot x' \)
     - 多项式核:\( K(x, x') 

你可能感兴趣的:(经典机器学习,支持向量机)