支持向量机(SVM)算法学习笔记

支持向量机(SVM)算法学习笔记

Motivation:

最近学习CNN卷积神经网络,其中有介绍到SVM里面的Hinge损失函数,为了弄懂这个概念重新看了一遍SVM算法,这里总结SVM中的关键知识点。

Related:

SVM涉及到的数学知识
线性分类
凸二次规划
正则化
Hinge损失函数

Introduction:

支持向量机(Support Vector Machines, SVM)是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大化使它有别于感知机;支持向量机还包括核技巧,这使它成为非线性分类器。支持向量机的学习策略是间隔最大化,可看成是求解一个凸二次规划问题(Convex Quadratic Programming),也等价于正则化的合页(Hinge)损失函数最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。

Detail:

按照《统计学习方法》中支持向量机一章中的介绍,本文分三个部分:

  1. 线性可分支持向量机
  2. 软间隔最大化
  3. 非线性支持向量机和核函数
    线性可分支持向量机中假设数据集通过一个超平面就可以分开,但是绝大部分数据集通过线性分类器不能通过超平面分开,如果允许存在一定的误差就叫软间隔最大化支持向量机,如果线性方式完全不可分需要通过一个核函数讲向量空间又原始空间转换到特征空间,或者说将低维度原始数据转换到高纬度空间已达到线性可分的分类算法叫非线性支持向量机。

1. 线性可分支持向量机

假设给定训练数据集:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋅ ⋅ ⋅ , ( x n , y n ) } T=\{(x_1,y_1),(x_2,y_2),\cdot \cdot\cdot, (x_n,y_n)\} T={(x1,y1),(x2,y2),,(xn,yn)}
其中 x i ∈ x = R n , y i ∈ y = { + 1 , − 1 } , i = { 1 , 2 , … , N } x i x_i \in x=R^n , y_i \in y = \{+1,-1\} , i=\{1,2,…,N\} x_i xix=Rn,yiy={+1,1},i={1,2,,N}xi为第i个特征向量,也称为实例, y i y_i yi x i x_i xi的标记,当 y i = + 1 y_i=+1 yi=+1 时称 x i x_i xi为正例,反之为负例。 ( x i , y i ) (x_i,y_i) xi,yi为样本点。此处假设数据集T是线性可分的。

定义函数间隔(Functional Margin)对于给定的训练数据集T和超平面 ( w , b ) (w,b) w,b,定义超平面 ( w , b ) (w,b) w,b关于样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔为: γ i ^ = y i ( ω ⋅ x i + b ) \hat{\gamma_i}=y_i(\omega \cdot x_i+b) γi^=yi(ωxi+b)
定义
几何间隔(Geometric Margin)
对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的几何间隔为:
γ i = y i ( ω ∥ ω ∥ ⋅ x i + b ∥ ω ∥ ) \gamma_i=y_i(\frac{\omega}{\left \| \omega \right \|} \cdot x_i+\frac{b}{\left \| \omega \right \| }) γi=yi(ωωxi+ωb)
函数间隔和几何间隔的关系: γ i = γ i ^ ∥ ω ∥ \gamma_i = \frac {\hat{\gamma_i }}{\left \| \omega \right \|} γi=ωγi^
对于线性可分数据集支持向量机的核心思想是能够正确划分训练数据集并且几何间隔最大的超平面。
可以用如下表达式:
m a x ω , b γ \underset{\omega,b}{max} \gamma ω,bmaxγ
s . t . y i ( ω ∥ ω ∥ ⋅ x i + b ∥ ω ∥ ) ⩾ γ , i = 1 , 2 , … . , N s.t. y_i(\frac{\omega}{\left \| \omega \right \|} \cdot x_i+\frac{b}{\left \| \omega \right \| })\geqslant \gamma,i=1,2,….,N s.t.yi(ωωxi+ωb)γi=1,2,.,N
考虑几何间隔和函数间隔的关系也可以写成:
m a x ω , b γ ^ ∥ ω ∥ \underset{\omega,b}{max} \frac{\hat{\gamma }}{\left \| \omega \right \|} ω,bmaxωγ^
s . t . y i ( ω ⋅ x i + b ) ⩾ γ ^ , i = 1 , 2 , … . , N s.t. y_i(\omega \cdot x_i+b)\geqslant \hat{\gamma},i=1,2,….,N s.t.yi(ωxi+b)γ^i=1,2,.,N
从函数间隔的定义可以知道:函数间隔可以表示分类预测的正确性和置信度。如果成比例地改变w和b可以改变函数间隔但是实际上超平面并没有改变。
从几何间隔的定义可以知道:几何间隔实际是样本点到超平面的几何距离,也可以说是样本点到超平面的带符号距离。
从上面的分析可以知道函数间隔的取值不会影响最优化问题的解,这样,就可以去函数间隔为1,将支持向量机学习的优化问题转换成:
m i n ω , b ∥ ω ∥ 2 s . t . y i ( ω ⋅ x i + b ) − 1 ⩾ 0 , i = 1 , 2 , … . , N \underset{\omega,b}{min} \left \| \omega \right \|^2\\ s.t. \quad y_i(\omega \cdot x_i+b)-1 \geqslant 0,i=1,2,….,N ω,bminω2s.t.yi(ωxi+b)10i=1,2,.,N
这是一个凸二次规划问题,如果求出了问题的解 ω ∗ , b ∗ , \omega^*,b^*, ω,b,那么就可以得到最大分类超平面: ω ∗ ⋅ x + b ∗ = 0 \omega^* \cdot x + b^* =0 ωx+b=0
分类决策函数: f ( x ) = s i g n ( ω ∗ ⋅ x + b ∗ ) f(x)=sign(\omega^* \cdot x + b^*) f(x)=sign(ωx+b)

拉格朗日对偶性(Lagrange duality)

在解决最优化问题的时候,常常利用拉格朗日对偶性(Lagrange duality)将原始问题转换成对偶问题,通过解对偶问题而得到原始问题的解。

1).原始问题

假设 f ( x ) , c i ( x ) , h j ( x ) f(x),c_i(x),h_j(x) f(x),ci(x),hj(x)是定义在 R n R^n Rn上的连续可微函数。考虑约束最优化问题:
m i n x ∈ R n f ( x ) s . t . c i ( x ) ≤ 0 , i = 1 , 2 , ⋅ ⋅ ⋅ , k h j ( x ) = 0 , j = 1 , 2 , ⋅ ⋅ ⋅ , l \underset{x \in R^n}{min} \quad f(x)\\ s.t. \quad c_i(x) \leq 0, \quad i=1,2, \cdot\cdot\cdot,k \\ h_j(x)=0, \quad j=1,2, \cdot\cdot\cdot,l xRnminf(x)s.t.ci(x)0,i=1,2,,khj(x)=0,j=1,2,,l
称此问题为原始最优化问题。
引入广义拉格朗日函数(Generalized Lagrange Function)
L ( x , α , β ) = f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ j = 1 l β i h i ( x ) L(x,\alpha,\beta)=f(x)+\sum_{i=1}^{k}\alpha_i c_i(x)+\sum_{j=1}^{l}\beta_i h_i(x) L(x,α,β)=f(x)+i=1kαici(x)+j=1lβihi(x)
这里 x = ( x ( 1 ) , x ( 2 ) , ⋅ ⋅ ⋅ , x ( n ) ) T ∈ R n x = (x^{(1)},x^{(2)}, \cdot\cdot\cdot,x^{(n)})^T \in R^n x=(x(1),x(2),,x(n))TRn,其中 α i , β i \alpha_i,\beta_i αi,βi是拉格朗日乘子, a i ≥ 0 a_i \geq 0 ai0。考虑 x x x的函数:
θ p ( x ) = m a x α , β : α i ≥ 0 L ( x , α , β ) \theta_p (x)=\underset{\alpha,\beta:\alpha_i \geq 0}{max} L(x,\alpha,\beta) θp(x)=α,β:αi0maxL(x,α,β)
下标P表示原始问题(premier)
原始问题的解等价于 m i n x θ P ( x ) = m i n x m a x α , β : α i ≥ 0 L ( x , α , β ) \underset{x}{min}\theta_P (x) = \underset{x}{min} \underset{\alpha,\beta:\alpha_i \geq 0}{max} L(x,\alpha,\beta) xminθP(x)=xminα,β:αi0maxL(x,α,β)
换句话说原始问题等价于广义拉格朗日函数的极小极大问题。(详细证明可见《统计学习方法》)
为了表示方便定义原始问题的最优值:
p ∗ = m i n x θ p ( x ) p^*=\underset{x}{min} \theta_p(x) p=xminθp(x)

2). 对偶问题

定义 θ D ( α , β ) = m i n L ( x , α , β ) \theta_D(\alpha,\beta)=min L(x,\alpha,\beta) θD(α,β)=minL(x,α,β)
再考虑极大化上述问题,即:
m a x α , β : α i ≥ 0 θ D ( α , β ) = m a x α , β : α i ≥ 0 m i n x L ( x , α , β ) \underset{\alpha,\beta:\alpha_i \geq 0}{max}\theta_D(\alpha,\beta)= \underset{\alpha,\beta:\alpha_i \geq 0}{max} \underset{x}{min} L(x,\alpha,\beta) α,β:αi0maxθD(α,β)=α,β:αi0maxxminL(x,α,β)
广义拉格朗日函数的极大极小问题表示为约束最优化问题:
m a x α , β θ D ( α , β ) = m a x α , β m i n x L ( x , α , β ) s . t . α i ≥ 0 , i = 1 , 2 , ⋅ ⋅ ⋅ , k \underset{\alpha,\beta}{max}\theta_D(\alpha,\beta)= \underset{\alpha,\beta}{max} \underset{x}{min} L(x,\alpha,\beta) \\ s.t. \quad \alpha_i \geq 0, \quad i=1,2,\cdot\cdot\cdot,k α,βmaxθD(α,β)=α,βmaxxminL(x,α,β)s.t.αi0,i=1,2,,k
称为原始问题的对偶问题。定义对偶问题的最优解:
d ∗ = m a x α , β : α i ≥ 0 d^* = \underset{\alpha,\beta:\alpha_i \geq 0}{max} d=α,β:αi0max

3). 原始问题和对偶问题的关系

在如下假设下原始问题和对偶问题的最优解相等。
(1) 假设函数 f ( x ) f(x) f(x)和$c_i(x) 是 凸 函 数 , 是凸函数, h_j(x) 是 仿 射 函 数 , 并 且 是仿射函数,并且 仿c_i(x) 是 存 在 的 , 对 所 有 是存在的,对所有 c_i(x)<0 , 则 存 在 ,则存在 ,x*,\alpha,\beta*,$是$x 是 原 始 问 题 的 解 , 是原始问题的解, \alpha*,\beta$是对偶问题的解,并且
p ∗ = d ∗ = L ( x ∗ , α ∗ , β ∗ ) p^*=d^* =L(x^*,\alpha^*,\beta^*) p=d=L(x,α,β)
(2) 假设函数 f ( x ) f(x) f(x)和$c_i(x) 是 凸 函 数 , 是凸函数, h_j(x) 是 仿 射 函 数 , 并 且 是仿射函数,并且 仿c_i(x) 是 存 在 的 , 对 所 有 是存在的,对所有 c_i(x)<0 , 则 ,则 ,x*,\alpha
,\beta*$是原始问题和对偶问题的解的充分必要条件是$x,\alpha*,\beta$满足下面的KKT(Karush-Kuhn-Tucker)条件:
∇ x L ( x ∗ , α ∗ , β ∗ ) = 0 ∇ α L ( x ∗ , α ∗ , β ∗ ) = 0 ∇ β L ( x ∗ , α ∗ , β ∗ ) = 0 α i ∗ c i ( x ∗ ) = 0 , i = 1 , 2 , ⋅ ⋅ ⋅ , k c i ( x ∗ ) ≤ 0 , i = 1 , 2 , ⋅ ⋅ ⋅ , k α i ∗ ≥ 0 , i = 1 , 2 , ⋅ ⋅ ⋅ , k h j ( x ∗ ) = 0 , j = 1 , 2 , ⋅ ⋅ ⋅ , k \nabla_x L(x^*,\alpha^*,\beta^*)=0 \\ \nabla_\alpha L(x^*,\alpha^*,\beta^*)=0 \\ \nabla_\beta L(x^*,\alpha^*,\beta^*)=0 \\ \alpha_i^*c_i(x^*)=0 , i=1,2,\cdot\cdot\cdot,k \\ c_i(x^*) \leq 0, i=1,2,\cdot\cdot\cdot,k \\ \alpha_i^* \geq 0, i=1,2,\cdot\cdot\cdot,k \\ h_j(x^*)=0, j=1,2,\cdot\cdot\cdot,k xL(x,α,β)=0αL(x,α,β)=0βL(x,α,β)=0αici(x)=0,i=1,2,,kci(x)0,i=1,2,,kαi0,i=1,2,,khj(x)=0,j=1,2,,k

综上所述,就有下面的线性可分支持向量机的学习算法–最大间隔算法(Maximum Margin Method)
算法(线性可分支持向量机学习算法–最大间隔法)
输入:线性可分训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y n ) } , 其 中 , x i ∈ x = R ∗ n , y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , . . . , N ; T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_n)\},其中,x_i \in x=R*n,y_i \in Y=\{-1,+1\},i=1,2,...,N; T={(x1,y1),(x2,y2),...,(xN,yn)},xix=Rn,yiY={1,+1},i=1,2,...,N;

2.线性支持向量机与最大软间隔

前面介绍的数据集是假设线性可分的情况下数据,对于线性不可分训练数据是不适用的,因为上述方法中的不等式约束并不是都成立。为解决线性不可分的问题,需要修改硬间隔最大化,使其成为软间隔最大化。
假设给定一个特征空间上的训练数据集:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } T =\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} T={(x1,y1),(x2,y2),...,(xn,yn)}
其中, x i ∈ x = R n , y i ∈ y = { + 1 , − 1 } , i = 1 , 2 , . . . , N x_i \in x =R^n,y_i\in y=\{+1,-1\},i=1,2,...,N xix=Rn,yiy={+1,1},i=1,2,...,N , x i x_i xi为第i个特征向量, y i y_i yi x i x_i xi 的类标记。再假设训练数据不是线性可分的。通常情况下,训练数据中有一些特异点(outlier),将这些特异点除去后,剩下的大部分样本点组成的几何是线性可分的。
线性不可分意味着某些样本点 ( x i , y i ) (x_i,y_i) (xi,yi) 不能满足函数间隔大于等于1的约束条件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
支持向量机(Support Vector Machine,SVM)是一种用于分类和回归分析的监督学习算法。其理论基础可以从以下几个方面进行解释: 1. 最大间隔分类器:SVM的目标是找到一个能够将不同类别的样本点分开的超平面。这个超平面应该最大化两个不同类别样本点之间的间隔,也就是最大化两个类别支持向量(距离超平面最近的样本点)之间的距离。 2. 核函数:SVM算法可以通过使用核函数将输入空间映射到高维特征空间,进而解决非线性可分的问题。常用的核函数有线性核、多项式核和高斯核等。 3. 优化问题:SVM的目标是求解一个凸二次规划问题,通过最小化目标函数来找到最优的超平面。优化问题的目标函数包括正则化项和经验风险项,其中正则化项用于控制模型的复杂度,经验风险项用于使分类误差最小化。 4. 对偶问题:SVM的优化问题可以通过对偶问题进行求解。对偶问题可以转化为一个只与支持向量相关的表达式,从而减少了计算的复杂度。 5. 软间隔与惩罚因子:SVM可以允许一定程度的样本点分类错误,即存在一些样本点位于超平面的误分类区域内。通过引入惩罚因子,SVM可以在最大化间隔的同时,尽量减小误分类点的数量。 总的来说,SVM的理论基础包括最大间隔分类器、核函数、优化问题、对偶问题以及软间隔与惩罚因子等。这些理论基础使得SVM成为了一个强大的分类算法,在实际应用中取得了广泛的成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值