SVM是一种二分类模型,基本想法就是基于训练集和样本空间中找到一个最优的划分超平面,将两类样本分割开来,首先要知道什么样的划分法才能称为“最”优划分。最优划分是指两类的样本点到分类超平面的距离都最远。
在样本空间中,划分超平面可用 w T x + b = 0 w^Tx + b=0 wTx+b=0,记为 ( w , b ) (w,b) (w,b),样本点 ( x i , y i ) (x_i,y_i) (xi,yi)到划分超平面的函数间隔为: γ ′ = y ( w T x + b ) \gamma^{'} = y(w^Tx + b) γ′=y(wTx+b),几何间隔为: γ = y ( w T x + b ) ∣ ∣ w ∣ ∣ = γ ′ ∣ ∣ w ∣ ∣ \gamma = \frac{y(w^Tx + b)}{||w||} = \frac{\gamma^{'}}{||w||} γ=∣∣w∣∣y(wTx+b)=∣∣w∣∣γ′
若 ∣ ∣ w ∣ = 1 ||w|=1 ∣∣w∣=1,可知函数间隔和几何间隔相等,若超平面参数 w , b w,b w,b成比例的改变(超平面没有变),则函数间隔也是成比例的改变,而几何间隔不变。
SVM的基本想法就是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。其实函数间隔的取值并不影响最优化问题的解,假设将 w w w和 b b b成倍的改变为 a w , a b aw,ab aw,ab,那么函数间隔也会相应变成 a γ ′ a\gamma^{'} aγ′,函数间隔的对最优化问题的不等式没有影响,因此为简便取 γ ′ = 1 \gamma^{'}=1 γ′=1,而且我们注意到最大化 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1等价于最小化 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w∣∣2(为啥取平方呢,因为后面好求导),便可得到下面线性可分的支持向量机的最优化问题:
这是一个凸二次优化的问题,可以直接求解,我们要应用拉格朗日对偶性求解它的对偶问题。引进拉格朗日乘子,建立拉格朗日函数:
根据原始问题的对偶性,原始问题的对偶性是极大极小问题,即:
m i n ⎵ w , b    m a x ⎵ α i ≥ 0 L ( w , b , α ) \underbrace{min}_{w,b}\; \underbrace{max}_{\alpha_i \geq 0} L(w,b,\alpha) w,b minαi≥0 maxL(w,b,α)
(1)首先我们来求最小, L ( w , b , a ) L(w,b,a) L(w,b,a)分别对 w w w和 b b b求偏导,令其等于0,得:
(2)将求出的偏导结果带入 m i n ⎵ w , b L ( w , b , α ) \underbrace{min}_{w,b}L(w,b,\alpha) w,b minL(w,b,α),再对 α α α求极大:
(3)只要我们可以求出上式极小化时对应的 α α α 向量就可以求出 w w w 和 b b b 了。
则分离超平面、分离决策函数可以写成:
以上是线性可分的情况,针对数据混入了异常点,导致不能线性可分。通常对于这种情况我们引入松弛变量,对样本到超平面的函数距离的要求放松,那么优化问题变为:
求解方法同线性可分情况,得到软间隔最大化时的线性可分SVM的优化目标形式:
求得 α α α 向量就可以求出 w w w 和 b b b 了。
针对完全线性不可分情况,我们需要将低维线性不可分特征投影至高维空间中进行划分,直接引入核函数来解决。
那么,线性不可分SVM的优化目标形式:
和线性可分SVM的优化目标函数的区别仅仅是将内积 x i ∙ x j x_i∙x_j xi∙xj替换为 ϕ ( x i ) ∙ ϕ ( x j ) ϕ(x_i)∙ϕ(x_j) ϕ(xi)∙ϕ(xj)。
核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数好在它在低维上进行计算,而将实质上的分类效果(利用了内积)表现在了高维上,这样避免了直接在高维空间中的复杂计算,真正解决了SVM线性不可分的问题。
SVM使用拉格朗日乘子法更为高效地求解了优化问题。
SVM将寻找具有最大几何间隔划分超平面的任务转化成一个凸优化问题,如下所示:
使用拉格朗日乘子法将原问题转化为对偶问题求解,即将优化目标转化为无约束的优化函数。
目的:
(1)方便核函数的引入;
(2)将原始问题中的约束转为了对偶问题中的等式约束,对偶问题更易求解,原问题的求解复杂度与特征的维数相关,而对偶问题只与问题的变量个数有关(SVM的变量个数为支持向量的个数,相较于特征维数较少);
推导:
通过拉格朗日日算子构建拉格朗日函数,将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题,具体做法是:
(1)将约束融入目标函数中,构造拉格朗日函数;
(2)然后对模型参数w和b求偏导,并令之为零;
(3)得到w后,将其带入拉格朗日函数中,消去模型参数w和b;
(4)这样就得到了原问题的对偶问题,对偶问题和原问题等价,同时对偶问题也是一个凸优化问题,使用SMO算法求解拉格朗日乘子;
(5)得到拉格朗日乘子后,进一步可以得到模型参数w和b,也就得到了我们想要的划分超平面。
核函数本质: 针对数据线性不可分的情况,常用做法是把样本特征映射到高维空间中,转化为线性可分问题去解决。但是将样本特征映射到高维空间,可能会遇到维度过高的问题造成维灾难。这时,可以利用核函数,核函数也是将特征从低维到高维的转换,但避免了直接进行高维空间中的复杂计算,可以在低维上进行计算,却能在实质上将分类效果表现在高维上。
常用的核函数:
(1)常用的核函数:
核函数的选择与应用:
当SVM使用线性核时,在处理分类问题时,和逻辑回归比较有哪些异同,如何选择?
n=训练样本数目,m=特征数
如果m相对n比较大,使用逻辑回归或者线性SVM,例如m=10000,n=10-1000;
如果m比较小,n数值适中,使用高斯核的SVM,例如m=1-1000,n=10-10000;
如果m比较小,n很大,构建更多特征,然后使用逻辑回归或者线性SVM。
选择:
(1)若问题是线性可分的,就可以使用线性核;
(2)利用交叉验证,试用不同的核函数,误差最小的即为效果最好的核函数;
(3)混合核函数方法,将不同的核函数结合起来
SVM是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大化的线性分类器,间隔最大化使它有别于感知机,支持向量机还包括核技巧,使它成为实质上的非线性分类器,SVM的学习策略是间隔最大化,可形式化为一个凸二次规划问题,也等价于正则化的合页损失函数的最小化问题,SVM的学习算法是求解凸二次规划的最优化算法。
(1)当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;
(2)当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;
(3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习一个非线性的分类器,即非线性支持向量机。
(1)联系:
(2)区别: