该篇博客介绍了支持向量机的硬间隔、软间隔、核方法三种理论,并介绍了Python的实现方法,如果有什么问题或者疑问麻烦评论区指出(第一次分享理论知识,可能思路不是很清晰)。(本博主以后会在CSDN分享自己的知识和体会,帮助大家避坑)
另外,关于支持向量机的理论和实现我会在B站进行发布相关视频,目前正在准备,如果文字不好理解的话请移步B站视频,对理论进行手推。
支持向量机(SVM)
支持向量机(Support Vector Machine,SVM)主要有三种:硬间隔、软间隔和核方法。三种各不相同,其中硬间隔SVM将所有样本都正确分类,在理论分析方面便于理解,而实际应用中难实现,因为样本总是存在噪声,不可能全部线性可分。因此,提出了软间隔SVM,允许部分样本误判,实现样本特征的线性可分。硬间隔SVM和软间隔SVM都是基于样本特征空间线性可分的,实际应用中,样本特征可能不是完全的线性可分,因此将核方法引入SVM,得到Kernel-SVM,可以实现样本的非线性分类。
![](https://i-blog.csdnimg.cn/blog_migrate/efa6ff1447065c5a621543c2f4e39115.png)
之前在学习时,听别人说了这样一句话:支持向量机有三宝:间隔、对偶、核技巧。个人觉得这句话对支持向量机有了深刻的概况
一、硬间隔SVM
SVM就是需要找到一个超平面,将不同类别的样本区分开来。如图1.1所示,每一个样本有两个特征 x 1 x_1 x1和 x 2 x_2 x2。其中+表示正样本,-表示负样本。通过图1.1可以较为清除的观察到,存在一个超平面,可以将正负样本区分开来。但是,这样的超平面有无限个,应该如何找到这个超平面?
![](https://i-blog.csdnimg.cn/blog_migrate/62efa97de323a3e22e35a0dd17e8dcc4.png)
首先,根据图1.1的几何意义,得到SVM的数学方程。设样本点有N个 { ( x i , y i ) } i = 1 N \{(x_i,y_i)\}^N_{i=1} { (xi,yi)}i=1N ,其中 x i x_i xi是一个二维的向量, y i y_i yi为样本的标签, y i = { + 1 , − 1 } y_i=\{+1,-1\} yi={ +1,−1}。
![](https://i-blog.csdnimg.cn/blog_migrate/9f1aaa29f6be5c9ef4b0792c1822cb4f.png)
目标函数为样本点到超平面的距离,约束条件表示每一个样本点都可以正确分类。公式(1.1)表示在每一个样本都可以正确分类的情况下,样本点到超平面的最小距离最大。这样,可以在样本数据存在噪声的情况下,仍然可以正确分类。但是,公式(1)无法直接实现,或者实现比较麻烦,需要对上述公式进行转换,便于计算机计算。
结合公式(1.1)的约束条件和目标函数,发现 y i ( w T ⋅ x i + b ) { {y_i}\left( { { {\rm{w}}^T} \cdot { {\bf{x}}_i} + b} \right)}