一、支持向量机SVM的思想
支持向量机SVM(Support Vector Machine),主要用于解决模式识别领域中的数据分类问题,也可以用于解决回归问题,属于有监督学习算法的一种。
SVM是将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面(决策边界)。支持向量机的主要核心思想就是在训练数据集中找到一个最优的超平面,将不同类别的样本分隔开,同时使得离该超平面最近的样本点到该超平面的距离最大化。
示例:
下图中有两类数据点,目标就是找到一个最好的决策方程将它们区分开。如图所示有3条直线都能将两类数据点区分开,那么这3条线的效果相同吗?
那么这3条直线的分类效果肯定是有所区别的,那么选择更宽的决策边界容错能力更强。
那么在支持向量机SVM(Support Vector Machine)中什么叫做“支持向量”?支持向量是指训练数据集中距离超平面最近的那些样本点。这些支持向量决定了最终的分隔超平面,也就是SVM的分类边界。SVM 的训练过程就是要找到这些“支持向量”,并确定一个最优的分隔超平面,使得支持向量到分隔超平面的距离最大化,从而实现对样本的有效分类。
二、线性可分下的SVM(硬间隔)
SVM的核心思想是通过最大化两个类别之间的间隔来找到最优的超平面。间隔是指从超平面到最近的数据点的距离,也被称为支持向量。SVM的目标是找到使间隔最大化的超平面。SVM的间隔分为硬间隔和软间隔。
支持向量机(SVM)的硬间隔是在数据线性可分的情况下,SVM通过找到能够将不同类别的样本分开的最大间隔超平面来进行分类的过程。硬间隔指的是在这个最大间隔超平面上没有样本点,即所有样本点都位于超平面两侧,并且离超平面的距离都大于等于一个固定的值。这种情况下,SVM能够完全正确地将不同类别的样本分开,没有分类误差。硬间隔SVM在数据线性可分时表现较好,但对于线性不可分的数据,会导致过拟合问题。
软间隔是指在线性不可分的情况下,SVM允许一些样本点被错误地分类或处于间隔内。这是通过引入一个松弛变量(slack variable)来实现的。松弛变量允许一些样本点位于超平面的错误一侧或在间隔内,从而使得模型更加灵活。
首先我们先讨论有关硬间隔的问题。假设我们平面方程如下:
1、求点到超平面的距离
假设在3维空间中,法向量W = (w1,w2,w3 ),x1是平面上的一个点,求点x到平面的距离,入下图所示。
设该平面为:
则距离d为:
示例:求二维空间的点(x0,y0)到直线Ax0 + By0 + C = 0的距离。
2、目标函数
数据集:(X1,Y1), (X2,Y2), (X3,Y3), …(Xn,Yn)
X1,X2 … Xn为特征数据;
Y1,Y2 … Yn为样本的标签;
当X1,X2 … Xn为正例的时候,Yn = 1;
当X1,X2 … Xn为负例的时候,Yn = -1
那么对于样本点(xi,yi) i =1,2,3…n 有:
上述的式子可以写成如下:
上面说过SVM 的训练过程就是要找到这些“支持向量”,并确定一个最优的分隔超平面,使得支持向量到分隔超平面的距离最大化,从而实现对样本的有效分类。我们的目标是找打一个最好的决策方程的W和b,就是找到距离决策方程最近的点能够越远越好,也就是找到距离超平面最宽的边界。如果从所有样本点的角度来看,就是找到距离超平面距离最小的点。点到直线的距离我们已经求过,那么这个“最大间隔margin”或者说“最小距离”如下所示。
那么可以得到:
那么我们一定能够找到一个最小的正数min_value,使得:
为了简化运算,可以令min_value = 1,其原因是可以对这个超平面进行等比例的缩放,如下所示。
所以我们就得到了目标函数:
对于一个极大值的问题,在机器学习中通常将其转换成求极小值的问题。那么求最大硬间隔的问题就变成了一个优化问题。如下所示:
3、拉格朗日乘子法
拉格朗日乘子法用于在特定约束条件下寻找函数的最大或最小值。这种方法通过引入一个额外的变量:拉格朗日乘子,帮助我们在遵循这些约束的同时,找到最优解。拉格朗日乘子法的主要思想是引入一个新的参数λ(即拉格朗日乘子),将含有等式条件约束优化问题转换成了无约束的优化问题,从而求出得到原函数极值的各个变量的解。如下所示。
其中L(X, λ)为拉格朗日函数;λ为拉格朗日乘子。令L(X, λ)对X的导数为0,对λ的导数为0即可求解X, λ,X就是f(x) 在附加条件h(x)下的极值点。