机器学习(二)线性模型---SVM

机器学习(二)线性模型—SVM

2.3 SVM
  2.3.1 概述
  SVM在特征空间找到一个超平面使得超平面能将两类分开,且间隔最大(解唯一)
  i. 当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
  ii. 当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
  iii. 当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

  2.3.2 问题定义
  点到分离超平面的距离:

1||w|||wTx+b|(27) (27) 1 | | w | | | w T x + b |

  若分离超平面能将训练样本完全分类正确则 yi(wTx+b)>0 y i ( w T x + b ) > 0 ,令
{wTxi+b+1,wTxi+b1,yi=+1yi=1(28) (28) { w T x i + b ≥ + 1 , y i = + 1 w T x i + b ≤ − 1 , y i = − 1

 距离超平面最近的向量使得等号成立,它们被称为 支持向量( yi(wTx+b)1=0 y i ( w T x + b ) − 1 = 0 )
 两个异类支持向量到超平面的距离之和被叫做 间隔
2||w||(29) (29) 2 | | w | |

  SVM试图去最大化间隔,目标函数定义为:
maxw,b2||w||s.t.yi(wTxi+b)1,i=1,2,..,m(30) max w , b 2 | | w | | (30) s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . , m

(30) ( 30 ) 等价于去:
minw,b12||w||2s.t.yi(wTxi+b)1,i=1,2,..,m(31) min w , b 1 2 | | w | | 2 (31) s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . , m

  2.3.3 原问题与对偶问题推导
 对 (31) ( 31 ) 的每条约束添加拉个朗日乘子 αi0 α i ≥ 0 ,构建拉格朗日函数
L(w,b,α)=12||w||2+i=1mαi(1yi(wTxi+b))(32) (32) L ( w , b , α ) = 1 2 | | w | | 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) )

 对上式进行全微分:
dL=d(12wTw+i=1mαi(1yi(wTxi+b))=wTdw+i=1mαi(1yidwTxi)i=1mαiyidb=wTdwi=1mαiyidwTxii=1mαiyidb=wTdwi=1mαiyixidwTi=1mαiyidb(33) d L = d ( 1 2 w T w + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) = w T d w + ∑ i = 1 m α i ( 1 − y i d w T x i ) − ∑ i = 1 m α i y i d b = w T d w − ∑ i = 1 m α i y i d w T x i − ∑ i = 1 m α i y i d b (33) = w T d w − ∑ i = 1 m α i y i x i d w T − ∑ i = 1 m α i y i d b

 固:
lw=wi=1mαiyixi(34) (34) ∂ l ∂ w = w − ∑ i = 1 m α i y i x i

lb=i=1mαiyi(35) (35) ∂ l ∂ b = − ∑ i = 1 m α i y i

 将 (34) ( 34 ) (35) ( 35 ) 置0可得,
w=i=1mαiyixi(36) (36) w = ∑ i = 1 m α i y i x i

i=1mαiyi=0(37) (37) ∑ i = 1 m α i y i = 0

 将 (36) ( 36 ) (37) ( 37 ) 带入 (32) ( 32 ) ,消去w,b可得到对偶问题
maxαLs.t.=12i=1mj=1mαiαjyiyjxTixj+i=1mαii=1mαiyij=1mαjyjxTjxi=i=1mαi12i=1mj=1mαiyiαjyjxTixji=1mαiyi=0,αi0,i=1,2...,m(38) max α L = 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j + ∑ i = 1 m α i − ∑ i = 1 m α i y i ∑ j = 1 m α j y j x j T x i = ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i y i α j y j x i T x j s . t . ∑ i = 1 m α i y i = 0 , (38) α i ≥ 0 , i = 1 , 2... , m

(38) ( 38 ) 需满足KKT条件:
αi0 α i ≥ 0

1yif(xi)0 1 − y i f ( x i ) ≤ 0

αi(1yif(xi))=0(39) (39) α i ( 1 − y i f ( x i ) ) = 0

 注意到,对于任意样本有 ai=0 a i = 0 或是 1yif(xi)=0 1 − y i f ( x i ) = 0 ai=0 a i = 0 的点不会在损失函数中出现,而 1yif(xi)=0 1 − y i f ( x i ) = 0 对应的点 位于最大间隔的边界上,即支持向量。
 训练完成后,大部分的训练样本无需保留,最终模型仅于支持向量有关。

(38) ( 38 ) 式为一个二次规划问题,可以使用二次规划的算法进行求解,如增光拉个朗日法、投影梯度法。该问题的规模正比于训练样本数,在实际中造成很大开销。

 2.3.4 核函数:
 核函数是针对线性不可分问题提出的,当样本在原始空间线性不可分时,使用核函数可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。

 基本表达式:

K(x,z)=ϕ(x)ϕ(z)(40) (40) K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z )

 核函数性质 :
+ 对称函数对应的核矩阵半正定,就可以作为核函数使用
+ 两个核函数的线性组合仍是核函数
+ 对于任意函数g,g(x)k(x,z)g(z)仍是核函数

 常用核函数:

  • 线性核:

k(xi,xj)=xTixj(41) (41) k ( x i , x j ) = x i T x j

  • 多项式核:

k(xi,xj)=(xTixj)d(42) (42) k ( x i , x j ) = ( x i T x j ) d

  • 高斯核:

k(xi,xj)=exp(||xixj||22σ2)(43) (43) k ( x i , x j ) = e x p ( − | | x i − x j | | 2 2 σ 2 )

  • 拉普拉斯核:

k(xi,xj)=exp(||xixj||σ)(44) (44) k ( x i , x j ) = e x p ( − | | x i − x j | | σ )

  • sigmoid核:

k(xi,xj)=tanh(βxTixj+θ)(45) (45) k ( x i , x j ) = t a n h ( β x i T x j + θ )

 常用核函数比较:
+ 线性:简单,速度快,但是需要线性可分
+ 多项式:比线性核拟合程度更强,知道具体的维度,但是高次容易出现数值不稳定,参数选择比较多。
+ 高斯:拟合能力最强,但是要注意过拟合问题。不过只有一个参数需要调整。带宽需要调整 。通过调控参数σ ,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。 σ 越小拟合能力越强,容易过拟合。

 使用核函数后,SVM的表达式可以写为:

maxαLs.t.=i=1mαi12i=1mj=1mαiyiαjyjk(xi,xj)i=1mαiyi=0,αi0,i=1,2...,m(46) max α L = ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i y i α j y j k ( x i , x j ) s . t . ∑ i = 1 m α i y i = 0 , (46) α i ≥ 0 , i = 1 , 2... , m

 2.3.5 SMO算法:

  • 思想 :
    step1:选取一对待更新变量 αi α i αj α j
    step2:固定除 αi α i αj α j 以外的参数,求解 (38) ( 38 ) ,获得更新后的 αi α i αj α j
    不断执行以上两个步骤直至收敛

  • αi α i αj α j 如何选?
     选取的变量只要有一个不满足KKT条件,目标函数就会在迭代之后增大,直观来看,KKT条件违背的程度越大,则更新后目标函数的增幅越大
     SMO首先选取违背KKT条件程度最大的变量作为第一个变量,第二个变量应该选择一个使得目标函数增长最快的变量,但比较各变量所对应的目标函数数值增幅的复杂度较高,SMO采取了启发式的想法:所取两变量所对应样本之间间隔最大。

  • 求解:
     在固定其他参数后,约束可以写为 αiyi+αjyj=c,αi0,αj0 α i y i + α j y j = c , α i ≥ 0 , α j ≥ 0 ,其中 c=ki,jαkyk c = − ∑ k ≠ i , j α k y k
    αiyi+αjyj=c α i y i + α j y j = c 消去 αj α j 可得到关于 αi α i 的单变量二次规划问题,仅有的约束是 αi0 α i ≥ 0 ,这样的二次规划具有闭式解,不必调用数值优化算法即可高效求解 αi,αj α i , α j

 2.3.5 软间隔与正则化:
 软间隔指的是,我们允许分类超超平面在一些样本上出错,缓和硬间隔在要求在特征空间完全线性可分的要求
 允许某些样本不满足约束:

yif(xi)1(47) (47) y i f ( x i ) ≥ 1

 同时在最大化硬间隔的同时,不满足约束的样本尽可能的少:
minw,b12||w||2+Ci=1ml0/1(yi(wTxi+b)1)(48) (48) min w , b 1 2 | | w | | 2 + C ∑ i = 1 m l 0 / 1 ( y i ( w T x i + b ) − 1 )

 C趋于无穷时迫使每个样本必须满足约束
l0/1 l 0 / 1 为0/1损失函数,非凸不连续,不易直接求解,换为hingeloss:
hinge(z)=max(0,1z)(49) (49) h i n g e ( z ) = m a x ( 0 , 1 − z )

minw,b12||w||2+Ci=1mmax(0,1yi(wTxi+b))(50) (50) min w , b 1 2 | | w | | 2 + C ∑ i = 1 m m a x ( 0 , 1 − y i ( w T x i + b ) )

 引入松弛变量, ξi0 ξ i ≥ 0 ,则 (50) ( 50 ) 可写为:
minw,b12||w||2+Ci=1mξs.t.yi(wTxi+b)1ξiξi0,i=1,2,...m(51) min w , b 1 2 | | w | | 2 + C ∑ i = 1 m ξ s . t . y i ( w T x i + b ) ≥ 1 − ξ i (51) ξ i ≥ 0 , i = 1 , 2 , . . . m

 SVM的损失函数可以看做 结构风险+ 经验风险,将0/1损失函数替换为对数损失函数,可以近似得到LR。
 对数损失函数:
llog=log(1+exp(z))(52) (52) l l o g = l o g ( 1 + e x p ( − z ) )

 2.3.6 SVR回归

loss=minw,b12||w||2+Ci=1mlϵ(f(xi)yi)(53) (53) l o s s = min w , b 1 2 | | w | | 2 + C ∑ i = 1 m l ϵ ( f ( x i ) − y i )

lϵ(z)={0,|z|ϵ,if|z|ϵelse(54) (54) l ϵ ( z ) = { 0 , i f | z | ≤ ϵ | z | − ϵ , e l s e

 SVR允许有一点的误差,在误差小于 ϵ ϵ 的时候不会产生损失

 2.3.7 相关问题总结

  • SVM为什么采用间隔最大化?
    当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。

  • SVM为什么要引入对偶?

    1. 对偶问题往往更易求解(当我们寻找约束存在时的最优点的时候,约束的存在虽然减小了需要搜寻的范围,但是却使问题变得更加复杂。为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点。)
    2. 自然引入核函数进而推广到非线性分类问题。表示少数支持向量的形式 GRAM矩阵计算快
  • SVM为什么引入核函数?
    当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。

  • 什么是Kernel trick ?
    Kernel trick 在学习预测中,只定义核函数K(x,y),而不是显式的定义映射函数ϕ。因为特征空间维数可能很高,甚至可能是无穷维,因此直接计算ϕ(x)·ϕ(y)是比较困难的。相反,直接计算K(x,y)比较容易(即直接在原来的低维空间中进行计算,而不需要显式地写出映射后的结果)。

  • 为什么SVM对缺失数据敏感?
    这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。

  • SVM如何处理多分类?

    1. 一对一:将N个类别两两配对,产生N(N-1)/2个二分类任务,测试阶段新样本同时交给所有的分类器,最终结果通过投票产生。避免了数据偏斜的问题,但是也很容易发现这种方法是分类器的数目呈平方级上升。
    2. 一对多:训练N个,取最大值作为结果。这种方式可能会出现分类重叠现象或者不可分类现象,而且由于“其余”的数据集过大,这样其实就人为造成了“数据偏斜”的问题。
    3. 基于决策树的方法:对于一个数据集,我们可以采用一些聚类的方法(例如Kmeas)把数据集分成两个子类,然后对两个子类进一步划分,如此循环,直到子类中只包含一个类别为止。最后,在二叉树各决策节点训练支持向量机分类器,需要学习的二类分类器数目是最少的。
  • SVM与LR对比:

    • 联系:

      1. 如果不考虑核函数,SVM与LR都是线性分类器
      2. SVM LR都会受到异常值的影响,SVM更敏感
      3. 将SVM的hinge loss替换为对数损失可近似得到LR
    • 区别:

      1. 本质:损失函数不同,SVM是hinge loss,LR是对数函数
      2. SVM不直接依赖数据分布,分类平面不受一类点的影响,LR受到所有数据点的影响(可能需要做样本平衡)
      3. SVM依赖penalty系数 实验要validation
      4. SVM 计算复杂度受数据量限制,LR(大规模矩阵计算)大数据更广泛
      5. LR可以给出概率,SVM数学推导优美
  • SVM LR如何选择?:

    1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
    2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
    3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况

你可能感兴趣的:(机器学习,SVM,LR,SVM,vs,LR)