一、SVM基本形式
1、线性可分
在二维空间上,两类点被一条直线完全分开叫做线性可分。
2、最大间隔超平面
从二维扩展到多维空间中时,将 D 0 D_0 D0 和 D 1 D_1 D1完全正确地划分开的 w x + b = 0 wx+b=0 wx+b=0就成了一个超平面。
为了使这个超平面更具鲁棒性,我们会去找最佳超平面,以最大间隔把两类样本分开的超平面,也称之为最大间隔超平面。
- 两类样本分别分割在该超平面的两侧;
- 两侧距离超平面最近的样本点到超平面的距离被最大化了。
3、支持向量
离超平面的距离刚好等于最大间隔的样本点
4、最优化问题
m i n 1 2 ∣ ∣ w ∣ ∣ 2 min\frac{1}{2}||w||^2 min21∣∣w∣∣2
s.t. y i ( w x i + b ) > = 1 y_i(wx_i+b)>=1 yi(wxi+b)>=1
5、对偶问题
为了求解线性可分支持向量机的最优化问题 , 将它作为原始最优化 问题,应用拉格朗日对偶性,通过求解对偶问题 (dual problem) 得到 原始问题 (primal problem) 的最优解,这就是线性可分支持向量机的对偶算法 (dual algorithm) 。这样做的优点, 一是对偶问题往往更容易求解: 二是自然引入核函数,进
而推广到非线性分类问题 。
步骤1:
引入拉格朗日乘子 a i > = 0 i = 1 , 2 , 3 , . . N a_i >= 0 i=1,2,3,..N ai>=0i=1,2,3,..N
构造拉格朗日函数:
m i n w , b m a x a L ( w , b , a ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 N a i ( 1 − y i ( w x i + b ) ) min_{w,b}max_aL(w,b,a)=\frac{1}{2}||w||^2+\sum_{i=1}^{N}a_i(1-y_i(wx_i+b)) minw,bmaxaL(w,b,a)=21∣∣w∣∣2+∑i=1Nai(1−yi(wxi+b))
s.t. a i > = 0 a_i>=0 ai>=0
步骤2:
利用强对偶性转化:
m a x a m i n w , b L ( w , b , a ) max_{a}min_{w,b}L(w,b,a) maxaminw,bL(w,b,a)
对参数w和b求偏导数:
得:
带入原函数得:
步骤3:
利用SMO(Sequential Minimal Optimization) 算法求解
SMO(Sequential Minimal Optimization),序列最小优化算法,其核心思想非常简单:每次只优化一个参数,其他参数先固定住,仅求当前这个优化参数的极值。我们来看一下 SMO 算法在 SVM 中的应用。
由于SMO算法每次只能优化一个参数,而我们的约束条件为 ∑ i = 1 N a i y i = 0 \sum_{i=1}^{N}a_iy_i=0 ∑i=1Naiyi=0没法一次只变动一个参数
于是我们一次选取两个参数 a i , a j a_i,a_j ai,aj 使得约束变成 a i y i + a j y j = c , a i > = 0 , a j > = 0 a_iy_i + a_jy_j=c, a_i>=0,a_j>=0 aiyi+ajyj=c,ai>=0,aj>=0
a j = c − a i y i y i a_j=\frac{c-a_iy_i}{y_i} aj=yic−aiyi代入新的约束条件,这样就相当于把目标问题转化成了仅有一个约束条件的最优化问题,仅有的约束是 a i > = 0 a_i>=0 ai>=0
对于仅有一个约束条件的最优化问题,我们完全可以在 a i a_i ai上对目标函数求偏导 ,令导数等于0,解得 a n e w i a_{newi} anewi,然后再求出 a n e w j a_{newj} anewj
重复上述步骤直至收敛
当我们求得 a a a时根据 w = ∑ i = 1 N a i x i y i w=\sum_{i=1}^{N}a_ix_iy_i w=∑i=1Naixiyi求出 w w w,最后在找一个支持向量带入求得b
w , b w,b w,b求出后我们可以构造最大平面 w x + b = 0 wx+b=0 wx+b=0
二、线性不可分软间隔最大化
针对某些线性不可分的样本点,不能满足 y i ( w x i + b ) > = 1 y_i(wx_i+b)>=1 yi(wxi+b)>=1的约束条件于是可以对每一个样本点引入松弛变量 ε i \varepsilon_i εi>=0,是的函数加上这个松弛变量大于等于1。这样约束条件变为: y i ( w x i + b ) > = 1 − ε i y_i(wx_i+b)>=1-\varepsilon_i yi(wxi+b)>=1−εi
线性不可分的线性支持向量机的学习问题变成如下凸二次规划 (convex quadratic programming) 问题(原始问题) :
m i n 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ε i min\frac{1}{2}||w||^2 + C\sum_{i=1}^{N}\varepsilon_i min21∣∣w∣∣2+C∑i=1Nεi
s.t. y i ( w x i + b ) > = 1 − ε i , i = 1 , 2 , 3 , 4.. N y_i(wx_i+b)>=1-\varepsilon_i, i=1,2,3,4..N yi(wxi+b)>=1−εi,i=1,2,3,4..N
ε i > = 0 , i = 1 , 2 , 3.. N \varepsilon_i>=0 , i=1,2,3..N εi>=0,i=1,2,3..N
求解和上述雷同不再描述
三、核函数
硬间隔和软间隔都是在说样本的完全线性可分或者大部分样本点的线性可分。
但我们可能会碰到的一种情况是样本点不是线性可分的,比如:
这种情况的解决方法就是:将二维线性不可分样本映射到高维空间中,让样本点在高维空间线性可分,比如:
核函数的作用
常见核函数
四、优缺点
优点
- 有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题;
- 能找出对任务至关重要的关键样本(即:支持向量);
- 采用核技巧之后,可以处理非线性分类/回归任务;
- 最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
缺点
- 训练时间长。当采用 SMO 算法时,由于每次都需要挑选一对参数,因此时间复杂度为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wMCHCOXT-1620038837487)(https://www.zhihu.com/equation?tex=O(N^2)]) ,其中 N 为训练样本的数量;
- 当采用核技巧时,如果需要存储核矩阵,则空间复杂度为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FaO38uZI-1620038837489)(https://www.zhihu.com/equation?tex=O(N^2)]) ;
- 模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。
因此支持向量机目前只适合小批量样本的任务,无法适应百万甚至上亿样本的任务。