支持向量机(SVM)是机器学习算法之一,是二分类算法。给定一组训练样本集,如图,样本数据集是二维的,分散在平面上,需要找到一条直线将数据集分割开。可以分开的直线有很多,我们要找到其中泛化能力最好,鲁棒性最强的直线。这是在平面上的点,如果是在三维空间中,则需要找到一个平面;如果是超过三维以上的维数,则需要找到一个超平面。

时态支持向量机的收敛性 支持向量机法_时态支持向量机的收敛性

时态支持向量机的收敛性 支持向量机法_时态支持向量机的收敛性_02


超平面的表达式为:

时态支持向量机的收敛性 支持向量机法_极值_03


原理举例:wT取(w1,w2),x取(x1,x2)T, 则原式得 w1x1+w2x2+b=0 与传统直线 Ax+By+c=0 方程式

相同,由二维三维空间推到更高维平面的一般式即为上式。

W:为平面法向量,决定了超平面的方向

b: 决定了超平面距原点的距离

法向量与样本属性的个数、超空间维数相同。在超空间中我们要求的参数就是决定超平面的W和b值。在超空间中任意一点x到超平面的距离为:

时态支持向量机的收敛性 支持向量机法_时态支持向量机的收敛性_04


我们可以由特殊到一般的理解一下这个式子,如果在二维空间即平面上,点到直线的距离为:

时态支持向量机的收敛性 支持向量机法_极值_05


式子中A,B,C是直线的参数也就是W,x0和y0是x的坐标,这样r式是不是就好理解了,这个距离是几何距离,也就是人眼直观看到的距离。几何距离只有大小没有方向,因为式子是被套上绝对值的,将绝对值摘掉,现在我们就人为规定,样本数据中到超平面的距离为正的点为+1类的样本点,就是这类点给它打个标签+1,到超平面的距离为负的点标签为-1,为什么不是+2,-2其实都可以,取1是为了后续方便计算;现在假设这个超平面能够将样本正确分类,只不过这个超平面的wb值我们不知道,这正是我们要求的,但是这个平面是一定存在的,有:

时态支持向量机的收敛性 支持向量机法_约束条件_06


将几何距离r式中的分子绝对值和分母拿掉以后(因为都为正)剩下的wT+b是能够判断出样本为+1还是-1类别的部分,定义函数距离(很重要)为:

时态支持向量机的收敛性 支持向量机法_时态支持向量机的收敛性_07


函数距离就是样本类别乘wT+b。因为正样本类别为+1,且wT+b也为正;负样本类别为-1且wT+b为负。所以函数距离只有大小没有方向。

函数距离就相当于几何距离的分子部分,在所有样本中每一个点都有一个函数距离和一个几何距离,几何距离是可观测到的直接的距离,函数距离具有如下性质:一个点到超平面的函数距离取决于这个超平面的法向量和b值,同一个超平面可以有多组w和b值,但每组值成比例。w和b值不同,点的函数距离也不同。

三维空间举例:

现有两个平面2x+3y+4z+2=0 与 4x+6y+8z+4=0

有点:x(1,1,1)

则点到平面的函数距离分别为:11,22。 但平面实质为一个平面,只有w和b值不同,也就是说我们可以通过放缩w和b值,来控制函数距离!!!重点:支持向量机数学模型原理,其实就是通过控制函数距离来求得最大几何距离。也就是函数距离为约束条件,几何距离为目标函数。具体往下看:

通过放缩w和b,让两类中某一类点距超平面的函数距离分别为1(离超平面的距离相等,为1方便后续计算)。

W和b值未知,但总存在一组值满足上述。如图:

时态支持向量机的收敛性 支持向量机法_极值_08


中间最粗的平面为我们要求的超平面,两边的虚线为支撑平面,支撑平面上的点就是支持向量,通过放缩超平面的w和b值,使支持向量到超平面的函数距离为1,支持向量是距超平面最近的点,所以其他向量点到超平面的函数距离一定大于等于1。其实这时候就可以建立最初的模型了,为:

时态支持向量机的收敛性 支持向量机法_时态支持向量机的收敛性_09


时态支持向量机的收敛性 支持向量机法_时态支持向量机的收敛性_10


解释一下这个模型,首先先不看目标函数,先看约束条件,约束添加表达的是所有样本点到超平面的距离要大于等于1,在支撑平面上的为1,其他的大于1,根据约束条件其实可以得到无数个平面,如下面两个:

时态支持向量机的收敛性 支持向量机法_时态支持向量机的收敛性_11


但是,在这些平面中我们需要的是泛华能力最好,鲁棒性最强的那一个,也就是最宽的那一个(margin最大),这时候就需要通过定义目标函数来求得,宽度最大也就是几何距离最大,几何距离的分子是函数距离,而两个支撑平面的函数距离我们定义完了是2,所以才有了上面的数学模型。总的来说,就是通过函数距离作为约束条件得到无数个能把样本正确分开的平面,然后通过目标函数在这些平面中找最宽的!

把上面的数学模型转化为:

时态支持向量机的收敛性 支持向量机法_支持向量机_12


把求最大转变为求最小,即把模型转化为凸函数,其实到这里已经是优化问题了,凸函数是比较容易找到最优解的,因为局部极值就等于全局极值。至于为什么加个二分之一的系数,加个平方,都是为了后续解模型时求导方便。这个模型即为支持向量机的基本型,后面涉及到的软间隔,支持向量回归都从这个形式出发。

所建立的模型为凸二次规划(局部极值的全局极值、目标函数为二次约束条件为一次)。能直接用现成的优化计算包求解,但是可以有更高效的办法。利用拉格朗日乘子法,将两个参数的优化问题转化为一个参数的优化问题,进而求解模型。

对所建立的模型使用拉格朗日乘子法,将约束条件转化为目标函数,即对每条约束添加拉格朗日乘子 ɑi>0。得到如下拉格朗日函数。

时态支持向量机的收敛性 支持向量机法_约束条件_13


时态支持向量机的收敛性 支持向量机法_约束条件_14


时态支持向量机的收敛性 支持向量机法_支持向量机_15


对于等式约束可以直接使用拉格朗日乘子法求极值,对于不等式约束要满足KKT条件约束进行求解,模型对应的KKT条件为:

时态支持向量机的收敛性 支持向量机法_约束条件_16


将w公式代入原函数有:

时态支持向量机的收敛性 支持向量机法_支持向量机_17


上面最后的那个式子可以看到已经不含w和b值了,就只有拉格朗日乘子。利用SMO算法将每个样本数据的乘子解出来,观察约束条件

时态支持向量机的收敛性 支持向量机法_支持向量机_18

总有

时态支持向量机的收敛性 支持向量机法_极值_19



时态支持向量机的收敛性 支持向量机法_极值_20


前者意味着向量点根本不会在求和中出现,后者意味着向量在支撑平面上,是一个支撑向量,训练完成后大部分样本都不需要保留。也就是训练完后大部分拉格朗日乘子都为零,只有在支撑平面上的样本的拉格朗日乘子不为0。

至此,已经对支持向量机有一个基本认识,以上数学推理为支持向量机的硬间隔。记住这个模型:

时态支持向量机的收敛性 支持向量机法_支持向量机_21


支持向量机的软间隔、核函数方法、支持向量回归都是在这个模型的基础上的。上面讲的是样本完全线性可分,但是实际中,不可分的情况多谢,如果是线性不可分的如:

时态支持向量机的收敛性 支持向量机法_极值_22


需要把数据映射到更高维空间,这时候用到核函数

如果数据有噪声如:

时态支持向量机的收敛性 支持向量机法_极值_23


那么用到的是支持向量机的软间隔

如果你不是分类数据而是要有监督的预测数据,那么就是支持向量回归。

时态支持向量机的收敛性 支持向量机法_支持向量机_24


软间隔、核函数、支持向量回归我会以后写出来。