目录
一.SVM数学模型
二.Python实现
一.SVM数学模型
首先,什么是SVM?英文全称support vector machine.
我们知道vector是向量的意思,在高维空间中的每一个点就是一个向量。(由一组基构成的向量)
support是支持支撑的意思,machine意为机器,就是分类器。
支持向量机就是这三个单词连在一起的直接翻译。换个名字,支撑向量分类器,可能更易于理解。
看完上述,可能你还是觉得非常茫然。接下来看一幅图
平面上有两种球,蓝色和红色,我们的目标是将蓝色球和红色球分开(SVM解决分类问题)
当训练样本是线性可分的时候,如上图所示。我们可以用超平面将两堆球分开。那么问题来了,分开的标准是什么,在上图中,我们可以画出无数条直线将两堆小球分开。于是,SVM提出基于间隔最大化的原理,找到最优的分类器(machine)。
用来划分的超平面用以下的线性方程来描述
w是超平面的法向量,x就是vector(一组坐标),b是截距(位移项)
此时再来理解所谓支持向量分类器,支持向量是指位于最大间隔边界上的向量(即样本点)。
任意点到超平面距离公式推导:
为什么我们使用超平面来进行分类,请看下图
最下面的平面是我们的训练样本在平面上的分布,可以看出,红色球和蓝色球的分布并非线性可分,此时我们将该平面“扭曲”为超上图所示(有点像抛物面),然后找到一个分类器,使得仍然能够满足最大间隔原理。
二.Python实现
在Python中,scikit- learn是一个广泛使用的用于实现机器学习算法的库,SVM也可以在scikit- learning库中找到并使用。
#Import Library