【基础算法】支持向量机,看这一篇就够了

SVM支持向量机

理解

要理解支持向量机的基本原理,首先要从宏观上认识到,支持向量机是一个线性分类器,其与其他分类器的区别在于其决策边界,支持向量机的决策边界是对样本求解的最大边距超平面(maximum-margin hyperplane),所以最终是为了找到这个超平面,有了这个决策边界,便是我们要做的模型,从而可以进行分类了。

下面我们从样本数据的角度,对支持向量机进行深度的剖析:

1. 存在这样一个超平面

如,对于一个二分类数据集
D = { ( x i , y i } i = 1 N (1.1) D = \{(x_i, \quad y_i\}_{i=1}^{N} \tag{1.1} D={(xi,yi}i=1N(1.1)
其中
y = w T x i + b (1.2) y = w^Tx_i + b \tag{1.2} y=wTxi+b(1.2)

y i = { + 1 y ≥ 0 − 1 y < 0 (1.3) y_i= \begin{cases} +1& {y \ge 0}\\ -1& {y < 0} \end{cases}\tag{1.3} yi={+11y0y<0(1.3)

所以:
y i ∈ { + 1 , − 1 } (1.4) y_i \in \{+1,-1\} \tag{1.4} yi{+1,1}(1.4)
由于数据是线性可分的,则肯定存在一个超平面,使得:
w T x i + b = 0 (1.5) w^T x_i + b = 0 \tag{1.5} wTxi+b=0(1.5)

2. 样本函数距离与几何间隔

由上面可得样本函数距离
∣ ∣ y ∣ ∣ = ∣ ∣ w T x i + b ∣ ∣ = y i ( w T x i + b ) (2.1) ||y|| = ||w^Tx_i + b|| = y_i (w^Tx_i + b) \tag{2.1} y=wTxi+b=yi(wTxi+b)(2.1)
可以理解为数据点到超平面的函数距离,但是由于w和b可以成倍的缩放,超平面并没有变化,而||y||却变化了,所以定义几何间隔;
γ i = ∣ ∣ y ∣ ∣ ∣ ∣ w ∣ ∣ = ∣ ∣ w T x i + b ∣ ∣ ∣ ∣ w ∣ ∣ = y i ( w T x i + b ) ∣ ∣ w ∣ ∣ (2.2) \gamma_i =\dfrac{||y||}{||w||}= \dfrac{||w^Tx_i+b||}{||w||} = \dfrac{y_i (w^Tx_i + b)}{||w||} \tag{2.2} γi=wy=wwTxi+b=wyi(wTxi+b)(2.2)
则有最短距离
γ = m i n γ i (2.3) \gamma = min \quad \gamma_i \tag{2.3} γ=minγi(2.3)
由于不同的超平面最短距离都会不一样,所以对于优化这个最短距离来说,寻找一对w和b,使得r最大,这这对w和b,就是我们要求的超平面。

则任务可以写成:
m a x γ (2.4) \quad \quad max \quad \gamma \tag{2.4} maxγ(2.4)

s . t . γ ≤ y i ( w T x i + b ) ∣ ∣ w ∣ ∣ (2.5) s.t. \quad \quad \quad \gamma \quad \le \quad \dfrac{y_i (w^Tx_i + b)}{||w||} \tag{2.5} s.t.γwyi(wTxi+b)(2.5)

3. 问题的推导与优化

γ ⋅ ∣ ∣ w ∣ ∣ ≤ y i ( w T x i + b ) (3.1) \quad \gamma ·{||w||}\quad \le \quad {y_i (w^Tx_i + b)} \tag{3.1} γwyi(wTxi+b)(3.1)

为了方便推导和优化,可以令函数距离为1
γ ⋅ ∣ ∣ w ∣ ∣ = 1 (3.2) \quad \gamma ·{||w||}= 1 \tag{3.2} γw=1(3.2)
则:
γ = 1 ∣ ∣ w ∣ ∣ (3.3) \gamma = \frac{1}{||w||} \tag{3.3} γ=w1(3.3)
所以最大化 r r r等价于:
m a x 1 ∣ ∣ w ∣ ∣ (3.4) max \quad \frac{1}{||w||} \tag{3.4} maxw1(3.4)
所以,以上的任务可以等价的写成:
m a x 1 ∣ ∣ w ∣ ∣ 2 (3.5) \quad\quad\quad\quad\quad max \quad \frac{1}{||w||^2} \tag{3.5} maxw21(3.5)

s . t . y i ( w T x i + b ) ≥ 1 (3.6) s.t. \quad \quad \quad \quad y_i(w^Tx_i+b) \ge 1 \tag{3.6} s.t.yi(wTxi+b)1(3.6)

这便是我们要求的函数表达式。

其中:
y i ( w T x i + b ) = 1 (3.7) y_i(w^Tx_i+b) = 1 \tag{3.7} yi(wTxi+b)=1(3.7)
的样本点,都叫做支持向量。

4. 转变成凸优化问题

为了能够找到最大分割的这个超平面,我们可以把上述的函数写成凸优化问题:
m i n 1 2 ∣ ∣ w ∣ ∣ 2 (4.1) \quad\quad\quad min\quad \frac{1}{2}||w||^2 \tag{4.1} min21w2(4.1)

s . t . 1 − y i ( w T x i + b ) ≤ 0 (4.2) s.t. \quad\quad\quad 1 - y_i(w^Tx_i + b) \le 0 \tag{4.2} s.t.1yi(wTxi+b)0(4.2)

使用拉格朗日乘数法,则上面的表达式可以写成的朗格朗日函数为
Λ ( w , b , λ ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 N λ i ( 1 − y i ( w T x i + b ) ) (4.3) \Lambda (w,b,\lambda) =\frac{1}{2}||w||^2 + \sum\limits_{i=1}^{N}\lambda_i(1-y_i(w^Tx_i + b))\tag{4.3} Λ(w,b,λ)=21w2+i=1Nλi(1yi(wTxi+b))(4.3)
其中λ为朗格朗日乘数,且:
λ i ≥ 0 \lambda_i \ge 0 λi0
计算 Λ ( w , b , λ ) \Lambda (w,b,\lambda) Λ(w,b,λ)关于 w w w b b b的导数,并且令导数为零,得到:
w − ∑ i = 1 N λ i y i x i = 0 (4.4) w - \sum^{N}_{i=1}\lambda_iy_ix_i = 0 \tag{4.4} wi=1Nλiyixi=0(4.4)

∑ i = 1 N λ i y i = 0 (4.5) \sum^{N}_{i=1}\lambda_iy_i = 0 \tag{4.5} i=1Nλiyi=0(4.5)

将(4.4),(4.5)代入(4.3):
Λ ( w , b , λ ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 N λ i ( 1 − y i ( w T x i + b ) ) = 1 2 w T w + ∑ i = 1 N λ i − ∑ i = 1 N λ i y i w T x i − ∑ i = 1 N λ i y i b = 1 2 w T ∑ i = 1 N λ i y i x i + ∑ i = 1 N λ i − ∑ i = 1 N λ i y i w T x i − ∑ i = 1 N λ i y i b = 1 2 w T ∑ i = 1 N λ i y i x i − w T ∑ i = 1 N λ i y i x i + ∑ i = 1 N λ i − ∑ i = 1 N λ i y i b = − 1 2 w T ∑ i = 1 N λ i y i x i + ∑ i = 1 N λ i = − 1 2 ∑ i = 1 N ( λ i y i x i ) T ∑ i = 1 N λ i y i x i + ∑ i = 1 N λ i = − 1 2 ∑ i = 1 N λ i y i ( x i ) T ∑ i = 1 N λ i y i x i + ∑ i = 1 N λ i (4.6) \Lambda (w,b,\lambda) =\frac{1}{2}||w||^2 + \sum\limits_{i=1}^{N}\lambda_i(1-y_i(w^Tx_i + b))\tag{4.6}\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\\ =\frac{1}{2}w^Tw + \sum\limits_{i=1}^{N}\lambda_i - \sum\limits_{i=1}^{N}\lambda_iy_iw^Tx_i - \sum\limits_{i=1}^{N}\lambda_iy_ib\quad\quad\quad\quad\quad\quad\quad\quad\\ = \frac{1}{2}w^T\sum\limits_{i=1}^{N}\lambda_iy_ix_i + \sum\limits_{i=1}^{N}\lambda_i - \sum\limits_{i=1}^{N}\lambda_iy_iw^Tx_i - \sum\limits_{i=1}^{N}\lambda_iy_ib\quad\quad\quad\quad\\ = \frac{1}{2}w^T\sum\limits_{i=1}^{N}\lambda_iy_ix_i-w^T\sum\limits_{i=1}^{N}\lambda_iy_ix_i + \sum\limits_{i=1}^{N}\lambda_i - \sum\limits_{i=1}^{N}\lambda_iy_ib\quad\quad\quad\quad\\ = -\frac{1}{2}w^T\sum\limits_{i=1}^{N}\lambda_iy_ix_i+ \sum\limits_{i=1}^{N}\lambda_i\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\\ = -\frac{1}{2}\sum\limits_{i=1}^{N}(\lambda_iy_ix_i)^T\sum\limits_{i=1}^{N}\lambda_iy_ix_i+ \sum\limits_{i=1}^{N}\lambda_i\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\\ = -\frac{1}{2}\sum\limits_{i=1}^{N}\lambda_iy_i(x_i)^T\sum\limits_{i=1}^{N}\lambda_iy_ix_i+ \sum\limits_{i=1}^{N}\lambda_i\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\\ Λ(w,b,λ)=21w2+i=1Nλi(1yi(wTxi+b))=21wTw+i=1Nλii=1NλiyiwTxii=1Nλiyib=21wTi=1Nλiyixi+i=1Nλii=1NλiyiwTxii=1Nλiyib=21wTi=1NλiyixiwTi=1Nλiyixi+i=1Nλii=1Nλiyib=21wTi=1Nλiyixi+i=1Nλi=21i=1N(λiyixi)Ti=1Nλiyixi+i=1Nλi=21i=1Nλiyi(xi)Ti=1Nλiyixi+i=1Nλi(4.6)
最终得到拉格朗日对偶函数,:
Γ ( λ ) = − 1 2 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j x i T x j + ∑ i = 1 N λ i (4.7) \Gamma(\lambda) = -\frac{1}{2}\sum^{N}_{i=1}\sum^{N}_{j=1}\lambda_i\lambda_jy_iy_jx_i^Tx_j + \sum^{N}_{i=1}\lambda_i \tag{4.7} Γ(λ)=21i=1Nj=1NλiλjyiyjxiTxj+i=1Nλi(4.7)

总结:若求w,b,λ值,则分为三步
  • 固定λ,求Λ的极小值,方法是对w,b求偏导为零;
  • 代入w,b,此时是Λ关于λ的函数了,求Λ的极大值;
  • 利用SMO 算法求解对偶问题中的拉格朗日乘子λ,从而代入求出w,b的具体值;

所有上面的假设成立,都是数据是线性可分的

如果数据线性不可分,通过构建核函数,把数据映射到更高维的空间,使得数据线性可分;

如果数据里存在噪声,通过引入松弛变量,来对数据进行处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值