线性模型篇之SVM数学公式推导

转载请注明出处:http://blog.csdn.net/gamer_gyt
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer
公众号:搜索与推荐Wiki

个人网站:http://thinkgamer.github.io


支持向量机(Support Vector Machine,SVM)是一个经典两类分类算法,其找到的分割超平面具有更好的鲁棒性,因此广泛使用在很多任务上,并表现出了很强优势。

介绍

给定一个两分类数据集D={(x^n, y^n)},n属于N,其中y_n 属于{+1,-1},如果两类样本是线性可分的,即存在一个超平面(公式-1)
w T x + b = 0 w^Tx + b =0 wTx+b=0
将两类样本分开,那么对于每个样本都有
y n ( w T x n + b ) > 0 y^n(w^Tx^n + b) > 0 yn(wTxn+b)>0

数据集D中的每个样本x^n 到分隔超平面的距离为:
γ n = ∥ w T x n + b ∥ ∥ w ∥ = y n ( w T x n + b ) ∥ w ∥ \gamma ^n = \frac{\left \| w^Tx^n +b \right \|}{ \left \| w \right \|} = \frac{y^n(w^Tx^n + b)}{ \left \| w \right \| } γn=wwTxn+b=wyn(wTxn+b)

我们定义整个数据集D中所有样本到分隔超平面的最短距离为间隔(Margin)(公式-2)
γ = m i n n γ n \gamma = \underset{n}{min} \gamma ^ n γ=nminγn
如果间隔 gamma越大,其分隔超平面对两个数据集的划分越稳定,不容易受噪声等因素影响,支持向量机的目的是找到一个超平面(w^* , b^ *)使得gamma最大,即(公式-3)
m a x w , b γ s . t . y n ( w T x n + b ) ∥ w ∥ ≥ γ , ∀ n \underset{w,b}{max} \qquad \gamma \\ s.t. \qquad \frac{y^n (w^Tx^n + b)}{\left \| w \right \|} \geq \gamma,\forall_n w,bmaxγs.t.wyn(wTxn+b)γ,n

∥ w ∥ . γ = 1 \left \| w \right \| . \gamma =1 w.γ=1
则(公式-3)等价于(公式-4)
m a x w , b 1 ∥ w ∥ 2 s . t . y n ( w T x n + b ) ≥ 1 , ∀ n \underset{w,b}{max} \qquad \frac{1}{ \left \| w \right \| ^2} \\ s.t. \qquad y^n(w^Tx^n + b) \geq 1, \forall_n w,bmaxw21s.t.yn(wTxn+b)1,n
数据集中所有满足 y^n (w^T x^n +b) =1 的样本点,都称为支持向量(support vertor)

对于一个线性可分数据集,其分隔的超平面有多个,但是间隔最大的超平面是唯一的。下图给定了支持最大间隔分隔超平面的示例,其红色样本点为支持向量。

支持向量机示例

参数学习

凸函数 & 凹函数
关于凹凸函数的定义和性质可以参考下图:

image

为了找到最大间隔分割超平面,将公式-4改写为凸优化问题(公式-5):
m i n w , b 1 2 ∥ w ∥ 2 s . t . 1 − y n ( w T x n + b ) ≤ 0 , ∀ n \underset{w,b}{min} \qquad \frac{1}{ 2} {\left \| w \right \| ^2} \\ s.t. \qquad 1-y^n(w^Tx^n + b) \leq 0, \forall n w,bmin21w2s.t.1yn(wTxn+b)0,n
使用拉格朗日乘数法,公式-5的拉格朗日函数为(公式-6):
Λ ( w , b , λ ) = 1 2 ∥ w 2 ∥ + ∑ n − 1 N λ n ( 1 − y n ( w T x n + b ) ) \Lambda (w,b,\lambda )=\frac{1}{2} \left \| w^2 \right \| + \sum_{n-1}^{N} \lambda _n( 1-y^n(w^Tx^n + b) ) Λ(w,b,λ)=21w2+n1Nλn(1yn(wTxn+b))
其中
λ 1 ≥ 0 , . . . , λ N ≥ 0 \lambda _1 \geq 0,...,\lambda _N \geq 0 λ10,...,λN0
为拉格朗日乘数。计算公式-6关于w和b的导数,并令其等于0得到(公式-7)
w = ∑ n = 1 N λ n y n x n w = \sum_{n=1}^{ N }\lambda _n y^nx^n w=n=1Nλnynxn
和(公式-8)
0 = ∑ n = 1 N λ n y n 0 = \sum_{n=1}^{N} \lambda _n y^n 0=n=1Nλnyn
将公式-7代入公式-6,并利用公式-8,得到拉格朗日对偶函数(公式-9):
Γ ( λ ) = − 1 2 ∑ n = 1 N ∑ m = 1 N λ n λ m y m y n ( x m ) T x n + ∑ n = 1 N λ n \Gamma(\lambda) = -\frac{1}{2} \sum_{n=1}^{N}\sum_{m=1}^{N} \lambda_n \lambda_m y^m y^n (x^m)^Tx^n + \sum_{n=1}^{N}\lambda_n Γ(λ)=21n=1Nm=1Nλnλmymyn(xm)Txn+n=1Nλn
支持向量机的主优化问题为凸优化问题,满足强对偶性,即主优化问题可以通过最大化对偶函数
m a x λ ≥ 0 Γ ( λ ) max_{\lambda \geq 0} \Gamma(\lambda) maxλ0Γ(λ)
对偶函数 Gamma(lambda)是一个凹函数,因此最大化对偶数是一个凸优化问题,可以通过多种凸优化方法进行求解,得到拉格朗日乘数的最优值 lambda^* 。但由于其约束条件的数量为训练样本数量,一般的优化方法代价比较高,因此在实践中通常采样比较高效的优化方法,比如SMO(Sequential Minimal Optimization)算法等。

根据KKT条件中的互补松弛条件,最优解满足(公式-10)
λ n ∗ ( 1 − y n ( w ∗ T x n + b ∗ ) ) = 0 \lambda_n ^*(1-y^n(w^{*T}x^n+b^*))=0 λn(1yn(wTxn+b))=0
如果样本x^n 不在约束边界上,(lambda_n)*,其约束失效;如果样本xn在约束边界上,(lambda_n)^* >=0。这些在约束边界上的样本点称为支持向量(support vector),即离决策平面距离最近的点。

再计算出 lambda*后,根据公式-7计算出最优权重w*,最优偏置b^可以通过任选一个支持向量(x,y)计算得到(公式-11)
b ∗ = y ~ − w ∗ T x ~ b^* = \tilde{y} - w^{*T}\tilde{x} b=y~wTx~
最优参数的支持向量机的决策函数为(公式-12)
f ( x ) = s g n ( w ∗ T x + b ∗ ) = s g n ( ∑ n = 1 N λ n ∗ y n ( x n ) T x + b ∗ ) f(x)=sgn(w^{*T}x+b^*)=sgn(\sum_{n=1}^{N} \lambda_n^* y^n(x^n)^Tx + b^* ) f(x)=sgn(wTx+b)=sgn(n=1Nλnyn(xn)Tx+b)
支持向量机的决策函数只依赖 lambda_n^
>0的样本点,即支持向量。

支持向量机的目标函数可以通过SMO等优化方法得到全局最优解,因此比其他分类器的学习效率更高。此外,支持向量机的决策函数只依赖与支持向量。与训练样本总数无关,分类速度比较快。

核函数

支持向量机还有一个重要的优点是可以使用核函数(kernal)隐式的将样本从原始特征空间映射到更高维的空间,并解决原始特征空间中的线性不可分问题。比如在一个变换后的特征空间中,支持向量机的决策函数为(公式-13)
f ( x ) = s g n ( w ∗ T ϕ ( x ) + b ∗ ) = s g n ( ∑ n = 1 N λ n ∗ y n K ( x n , x ) + b ∗ ) f(x)=sgn(w^{*T} \phi(x)+b^*)=sgn(\sum_{n=1}^{N} \lambda_n^* y^n K(x^n,x) + b^* ) f(x)=sgn(wTϕ(x)+b)=sgn(n=1NλnynK(xn,x)+b)
其中
K ( x , z ) = ϕ ( x ) T ϕ ( z ) K(x,z)=\phi(x)^T \phi(z) K(x,z)=ϕ(x)Tϕ(z)
为核函数,通常不需要显式的给出φ(x)的具体形式,可以通过核技巧(kernel trick)来构造。比如以x,z属于R^2为例,我们可以构造一个核函数(公式-14)
K ( x , z ) = ( 1 + x T z ) 2 = ϕ ( x ) T ϕ ( z ) K(x,z)=(1+x^Tz)^2=\phi(x)^T\phi(z) K(x,z)=(1+xTz)2=ϕ(x)Tϕ(z)
来隐式的计算x,z在特征空间φ中的内积,其中:
ϕ ( x ) = [ 1 , 2 x 1 , 2 x 2 , 2 x 1 x 2 , x 1 2 , x 2 2 ] T \phi(x)=[1,\sqrt{2}x_1,\sqrt{2}x_2,\sqrt{2}x_1x_2,x_1^2,x_2^2]^T ϕ(x)=[1,2 x1,2 x2,2 x1x2,x12,x22]T

软间隔

在支持向量机的优化问题中,约束条件比较严格。如果训练集中的样本在特征空间中不是线性可分的,就无法找到最优解。为了能够容忍部分不满足约束的样本,我们可以引入松弛变量,将优化问题变为(公式-15):
m i n w , b 1 2 ∥ w ∥ 2 + C ∑ n = 1 N ξ n s . t . 1 − y n ( w T x n + b ) − ξ n ≤ 0 , ∀ n ξ n ≥ 0 , ∀ n \underset{w,b}{min} \qquad \frac{1}{ 2} {\left \| w \right \| ^2} + C \sum_{n=1}^{N}\xi _n \\ s.t. \qquad 1-y^n(w^Tx^n + b) -\xi _n \leq 0, \forall n \\ \xi _n \geq 0, \forall n w,bmin21w2+Cn=1Nξns.t.1yn(wTxn+b)ξn0,nξn0,n
其中参数C>0用来控制间隔和松弛变量惩罚的平衡,引入松弛变量的间隔称为软间隔(soft margin)。公式-15也可以表示为经验风险+正则化项的形式(公式-16)。
m i n w , b ∑ n = 1 N m a x ( 0 , 1 − y n ( w T x n + b ) ) + 1 C . 1 2 ∥ w ∥ 2 \underset{w,b}{min} \qquad \sum_{n=1}^{N}max(0,1-y^n(w^Tx^n + b)) + \frac{1}{C}.\frac{1}{2}\left \| w \right \|^2 w,bminn=1Nmax(0,1yn(wTxn+b))+C1.21w2
其中
m a x ( 0 , 1 − y n ( w T x n + b ) ) max(0,1-y^n(w^Tx^n + b)) max(0,1yn(wTxn+b))
称为hinge损失函数,1/C可以看作是正则化系数。软间隔支持向量机的参数学习和原始支持向量机类似,其最终决策函数也只和支持向量有关,即满足
1 − y n ( w T x n + b ) − ξ n = 0 1-y^n(w^Tx^n + b) - \xi_n = 0 1yn(wTxn+b)ξn=0
的样本。


【技术服务】,详情点击查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg

扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!


  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值