梯度下降与支持向量机

前言

  支持向量机解优化有两种形式,通常采用序列最小化(SMO)算法来解优化,本文总结基于随机梯度下降(SGD)解优化方法。

线性可分SVM

  如果数据集是完全线性可分的,可以构造最大硬间隔的线性可分支持向量机,如果只关心 s i g n ( ⋅ ) sign(\cdot) sign()不关心正负的程度,要求每个样本的函数间隔 y i w T x i ≥ 1 y_iw^{T}x_i \geq1 yiwTxi1,其优化式为:
min ⁡ w 1 2 w T w s . t .    ∀ i ,    y i w T x i ≥ 1 \begin{aligned} &\mathop{\min}\limits_{w} \frac{1}{2}w^{T}w \\ & s.t. \;\forall i, \;y_iw^{T}x_i \geq1 \end{aligned} wmin21wTws.t.i,yiwTxi1

线性SVM

  如果数据集是大致线性可分的,对每个样本引入一个松弛变量 ξ i ≥ 0 \xi_i \geq 0 ξi0,要求每个样本的函数间隔 y i W T x i ≥ 1 − ξ i y_iW^{T}x_i \geq1-\xi_i yiWTxi1ξi, 可以构造线性支持向量机,其优化式为:
min ⁡ w 1 2 w T w + C ∑ i N ξ i s . t .    ∀ i ,    y i w T x i ≥ 1 − ξ i ξ i ≥ 0 \begin{aligned} &\mathop{\min}\limits_{w} \frac{1}{2}w^{T}w + C \sum_{i}^{N}\xi_i \\ s.t.\;& \forall i, \;y_iw^{T}x_i \geq1-\xi_i \\ & \xi_i \geq 0 \end{aligned} s.t.wmin21wTw+CiNξii,yiwTxi1ξiξi0

hinge-loss

  可以把线性SVM的优化目标重写为Hinge-loss的形式:
min ⁡ w 1 2 w T w + C ∑ i N m a x ( 0 , 1 − y i w T x i ) \mathop{\min}\limits_{w} \frac{1}{2}w^{T}w + C \sum_{i}^{N} max (0,1-y_iw^{T}x_i ) wmin21wTw+CiNmax(0,1yiwTxi)

前半部分为最大化间隔,后半部分为预测的惩罚项Hinge-loss: L H i n g e ( y , x , w ) = m a x ( 0 , 1 − y i w T x i ) L_{Hinge}(y,x,w)=max(0,1-y_iw^{T}x_i ) LHinge(y,x,w)=max(0,1yiwTxi)

  1. 样本点被正确分类,且在间隔之外,惩罚为0;
  2. 样本点没被正确分类,惩罚为 1 − y i w T x i 1-y_iw^{T}x_i 1yiwTxi
  3. 样本点被正确分类,但是在间隔之内,惩罚为 1 − y i w T x i 1-y_iw^{T}x_i 1yiwTxi
    在这里插入图片描述
    在这里插入图片描述

SVM-SGD

   f ( x ) f(x) f(x)是凸函数,如果对于任意的定义域中的变量 u , v u,v u,v,及任意的 λ ∈ [ 0 , 1 ] \lambda \in [0,1] λ[0,1],有 f ( λ u + ( 1 − λ ) v ) ≤ λ f ( u ) + ( 1 − λ ) f ( v ) f(\lambda u+(1-\lambda)v)\leq \lambda f(u)+(1-\lambda)f(v) f(λu+(1λ)v)λf(u)+(1λ)f(v),也就是函数取两点连线,两点间的函数图像在连线之下;或者说,每个点的切线都在函数值之下。 x x x是凸函数最小值点的必要条件是, ∇ f ( x ) = 0 \nabla f(x)=0 f(x)=0

在这里插入图片描述
  使用随机梯度下降来求解最大间隔SVM,优化的目标函数为 J ( w ) = min ⁡ w 1 2 w T w + C ∑ i N m a x ( 0 , 1 − y i w T x i ) J(w)=\mathop{\min}\limits_{w} \frac{1}{2}w^{T}w + C \sum_{i}^{N} max (0,1-y_iw^{T}x_i ) J(w)=wmin21wTw+CiNmax(0,1yiwTxi),目标函数为凸函数,在学习率足够小时,能获得最优解。
   但是Hinge-loss是不可微的,可以使用次梯度,对应的是次切线。次切线是在一个点上在函数值之下的任意一条线,次梯度是这条线的斜率。
在这里插入图片描述
   对于支持向量机而言, J ( w ) J(w) J(w)的次梯度为
∇ J ( w ) = { w i f    m a x ( 0 , 1 − y i w T x i ) = 0 w − C y i x i , o t h e r w i s e \nabla J(w)=\left\{ \begin{aligned} &w \quad if \; max (0,1-y_iw^{T}x_i )=0\\ &w-Cy_ix_i , \quad otherwise \\ \end{aligned} \right. J(w)={wifmax(0,1yiwTxi)=0wCyixi,otherwise
  所以,对应的梯度下降算法为:
在这里插入图片描述
   相应的,使用SGD解kernel SVM如下,预测的时候需要使用显示的映射函数 ψ ( ⋅ ) \psi(\cdot) ψ(),不像SMO求解完之后不需要显示映射:
在这里插入图片描述

参考文献

[1]Vivek Srikumar, Machine Learning CS 5350/6350, Fall 2020. https://svivek.com/teaching/machine-learning/fall2020/lectures/svm.html
[2] Shai Shalev-Shwartz, Introduction to Machine Learning (67577) , Lecture 8. https://www.cs.huji.ac.il/~shais/Lectures2014/lecture8.pdf

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值