Skip to content

SVM笔记

📅 发表于 2018/03/02
🔄 更新于 2018/03/02
👁️ 次访问
📝 0 字
0 分钟
机器学习
#SVM
#机器学习
#拉格朗日对偶性
#对偶问题
#支持向量
#核函数
#感知机
#损失函数

Support Vector Machine简单笔记。 特征空间上的间隔最大的线性分类器。学习策略是间隔最大化,转化为一个凸二次规划问题的求解。

SVM概览

线性分类器

逻辑回归的图像和公式如下,预测的分类为1的概率。

$$ h_\theta(x) = g(\theta^Tx), \quad g(z) = \frac{1}{1+e^{-z}}, \quad g(z) = \begin{cases} 1, & z\ge 0 \\ -1, & z < 0 \\ \end{cases} $$ y={1,hθ(x)0.5,θTx00,hθ(x)<0.5,θTx<0

其中θTx=wTx+b=0 是一个超平面。 用分类函数表示f(x)=wTx+bw是这个超平面的法向量

即对于任意一个x,有如下预测类别

y^={1,f(x)01,f(x)<0

函数间隔与几何间隔

函数间隔

超平面wTx+b=0确定后, |wx+b|表示点x到平面的距离,表示分类可靠性距离越远,分类越可信ywx+b符号的一致性表示分类的正确性

超平面(w,b)关于样本点(xi,yi)的**函数间隔γ^i**如下:

γ^i=yi(wTxi+b)

超平面关于所有样本点的函数间隔γ^

γ^=minγ^i

函数间隔的问题:w和b成比例改变,超平面未变,但函数间隔已变。

几何间隔

对函数间隔除以法向量的二范数,则得到超平面与点(xi,yi)几何间隔γi

γi=γ^iw=yi(wTxi+b)w

超平面关于所有样本点的几何间隔:

γ=minγi

几何间隔才是直观上点到超平面的距离

最大间隔分类器

分类时,超平面离数据点的间隔越大分类的确信度也越大。 所以要最大化这个几何间隔,目标函数如下:

L=maxw,bγ,s.t,γiγ

用函数间隔γ^描写为:

L=maxw,bγ^w,s.t,γ^iγ^, 其中 γ^i=yi(wTxi+b)

函数间隔γ^的取值并不会影响最优化问题的解λw,λbλγ^

目标函数

取函数间隔为1γ^=1, 则有目标函数

L=maxw,b1w,s.t,yi(wTxi+b)1

支持向量是虚线边界上的点,则有:

{yi(wTxi+b)=1,yi(wTxi+b)>1,

分类

y^={1,f(x)01,f(x)<0

线性SVM

拉格朗日对偶性

1 原始问题

f(x),ci(x),hj(x)都连续可微。

最优化:

minxRf(x)

有很多个约束条件(不等式约束和等式约束):

ci(x)0,hj(x)=0

求解原始问题

将约束问题无约束化。

引入拉格朗日函数,其中αi(0)βj拉格朗日乘子

L(x,α,β)=f(x)+αici(x)+βjhj(x)

定义关于x的函数**θp(x)**:

θp(x)=maxα,β:αi0L(x,α,β)θp(x)={f(x),x+,

f(x)求最小,则对θp(x)求最小。

原始问题: 先固定x,优化出参数α,β,再优化x

minxθp(x)=minxmaxα,β:αi0L(x,α,β)

所以原始最优化问题 变为 拉格朗日函数的极小极大问题

定义原始问题的最优解p

p=minxθp(x)

2 对偶问题

定义关于α,β的函数θd(α,β)

θd(α,β)=minxL(x,α,β)

对偶问题:先固定参数α,β ,优化出x,再优化出参数先优化x

maxα,β:αi0θd(α,β)=maxα,β:αi0minxL(x,α,β)

原始问题: 先固定x,优化出参数α,β,再优化x。先优化参数。

minxθp(x)=minxmaxα,β:αi0L(x,α,β)

定义对偶问题的最优值:

d=maxα,β:αi0θd(α,β)

3 原始问题与对偶问题的关系

因为:

θd(α,β)=minxL(x,α,β)maxα,β:αi0L(x,α,β)=θp(x)

定理1:如果原始问题与对偶问题均有最优值,则有:dp

d=maxα,β:αi0minxL(x,α,β)minxmaxα,β:αi0L(x,α,β)=p

推论1:如果d=p, 那么x,α,β分别是原始问题和对偶问题的最优解。

通过对偶问题,来解决原始问题。

4 KKT条件

满足什么条件,才能使d=p呢 ?

首先满足下面的大条件:

假设f(x)ci(x)都是凸函数hj(x)是仿射函数;假设不等式约束ci(x)是严格可行的。

定理2:则存在解,x是原始问题的最优解,α,β是对偶问题的最优解。 并且:

d=p=L(x,α,β)

KKT条件:则x是原始问题、α,β是对偶问题的最优解的充分必要条件是**x,α,β满足下面的KKT条件**:

0xL(x,α,β)=0αL(x,α,β)=0βL(x,α,β)=0ci(x)0hj(x)=0αi0KKTαici(x)=0

KKT对偶互补条件可知,若αi>0, 则ci(x)=0 。SVM推导会用到。

αi>0则对应的xi是支持向量, 有yi(wx+b)=1。 所有的非支持向量,都有αi=0

原始问题到对偶问题

先前的目标函数:

J=maxw,b1w,s.t,yi(wTxi+b)1

最大变为最小,则有原始问题如下。目标函数是二次的,约束条件是线性的。所以是个凸二次规划问题

J=minw,b12w2,s.t,yi(wTxi+b)1

构造拉格朗日函数

L(w,b,λ)=12w2i=1nαi(yi(wTxi+b)1)

原始问题

θp(w,b)=maxλi0L(w,b,α)p=minw,bθp(w,b)=minw,bmaxλi0L(w,b,α)

对偶问题

θd(α)=minw,bL(w,b,α)d=maxαi0θd(α)=maxαi0minw,bL(w,b,α)

我们知道dp, 有时相等。原始问题可以转化为对偶问题求解,好处是:近似解好求解

求解对偶问题

拉格朗日函数

L(w,b,λ)=12w2i=1nαi(yi(wTxi+b)1)

化简后:

L(w,b,λ)=12w2i=1nαiyiwTxii=1nαiyib+i=1nαi

目标函数

d=maxαi0θd(α)=maxαi0minw,bL(w,b,α)

主要是三个步骤:

  • 固定参数α, 求 极小化minw,bL(w,b,α)的w和b
  • 带入w和b,对L求参数α 的极大化
  • 利用SMO算法求解对偶问题中的拉格朗日乘子α

**1 极小求出w和b minw,bL(w,b,α) **

对w和b求偏导,使其等于0。

Lw=wi=1nαiyixi=0w=i=1nαiyixiLb=i=1nαiyi=0i=1nαiyi=0

特别地范式求导:w2w=2w

w2w=w

把上面两个结论,带入原式进行化简,得到:

L(w,b,α)=12wTwi=1nαiyiwTxii=1nαiyib+i=1nαi=12wTi=1nαiyixiwTi=1nαiyixibi=1nαiyi+i=1nαi(带入w,提出b,带入0)=12(i=1nαiyixi)T(i=1nαiyixi)+i=1nαi(x)=12(i=1nαiyixiT)(i=1nαiyixi)+i=1nαi=i=1nαi12i=1ni=1nαiαjyiyjxiTxj

得到只用α表示的拉格朗日函数

L(w,b,α)=i=1nαi12i=1ni=1nαiαjyiyjxiTxj

2 求出对α的极大 maxαi0θd(α)=maxαi0minw,bL(w,b,α)

对偶问题 如下:

目标函数:

maxαi=1nαi12i=1ni=1nαiαjyiyjxiTxj

约束条件:

αi0i=1nαiyi=0

利用SMO算法求出拉格朗日乘子α

3 求出w和b,得到分离超平面和决策函数

根据前面的公式得到**w**:

w=i=1nαiyixi

选一个**αj>0对应的点**(xj,yj) 就是支持向量。由于支持向量**yj(wx+b)1=0** ,yj2=1

得到**b** :

b=yji=1nαiyi(xixj),(xixj是向量内积,后面同理)

通过公式可以看出,决定w和b的是支持向量, 其它点对超平面是没有影响的。

分离超平面

f(x)=i=1nαiyi(xix)+b=0

分类决策函数

f(x)=sign(i=1nαiyi(xix)+b)

简单总结

目标函数

J=minw,b12w2,s.t,yi(wTxi+b)1

拉格朗日函数

L(w,b,λ)=12w2i=1nαi(yi(wTxi+b)1)

转化为对偶问题求解, 需要会求解过程、会推导公式

maxαi0minw,bL(w,b,α)

主要是下面4个求解步骤:十分重要!!!

  1. 固定αL对w和b求偏导,得到两个等式
  2. 结果带入L,消去w和b,得到只有α的L
  3. 利用SMO求出α
  4. 利用α和支持向量,算出w和b。得出分离超平面和分界函数。

求导后消去w和b,得到L

L(w,b,α)=i=1nαi12i=1ni=1nαiαjyiyjxiTxj

利用SMO求得α后, 带回原式,得到w和b:

w=i=1nαiyixi,b=yji=1nαiyi(xixj),

实际上最重要是向量内积来进行决策

f(x)=sign(i=1nαiyi(xix)+b)

目标函数

maxαi0L(w,b,λ)=maxαi012w2i=1nαi(yi(wTxi+b)1)

两种数据点

  • 支持向量:红色为0,αi>0。 后面为0。
  • 其它点:红色大于1,αi=0。 后面为0。

非线性SVM

核函数

问题

大部分数据不是线性可分的,前面的超平面根本不存在。可以用一个超曲面进行分离,这就是非线性可分问题

SVM可以通过核函数把输入映射到高维特征空间,最终在高维特征空间中构造最优分离超平面

需要映射和学习线性SVM:

  • 把输入映射到特征空间F
  • 在特征空间F中使用线性学习器分类
f(x)=i=1nαiyi(ϕ(xi)ϕ(x))+b

核函数的功能

核函数在特征空间中直接计算内积,就像在原始输入点的函数中一样,两个步骤合二为一:

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

分类函数:

f(x)=i=1nαiyik(xi,x)+b

对偶问题:

maxαi=1nαi12i=1ni=1nαiαjyiyjk(xi,x)s.t,αi0,i=1nαiyi=0

核函数处理非线性数据

简单例子

上面的数据线性不可分,两个维度(a, b)。 应该用二次曲线(特殊圆)来区分:

w1a+w2a2+w3b+w4b2+w5ab+b=0

看做映射到了五维空间

w1z1+w2z2+w3z3+w4z4+w5z5+b=i=15wizi+b=0

如下图:(实际映射到了三维空间的图),可以使用一个平面来分开

问题

五维是由1维和2维进行组合,就可以解决问题。所以对输入数据无脑组合映射到高维可以吗?当然是不可以的。维数太高,根本没法计算,不能无脑组合映射

核函数的功能

核函数

k(x1,x2)=(x1x2+1)2

核函数和上面映射空间的结果是一样的!区别:

  • 映射计算:先映射到高维空间,然后根据内积进行计算
  • 核函数直接在原来的低维空间中计算,而不需显示写出映射后的结果。避开了在高维空间中的计算

常用核函数

1 线性核

k(x1,x2)=x1x2(原始空间的内积)

目的:映射前和映射后,形式上统一了起来。写个通用模板,再带入不同的核就可以了。

2 高斯核

k(x1,x2)=exp(x1x222σ2)

高斯核函数,非常灵活,应用很广泛。可以映射到无穷维。

σ 的选择

  • 太大:权重衰减快,相当于映射到低维子空间
  • 太小:将任意数据线性可分,容易陷入严重过拟合

3 多项式核

k(x1,x2)=((x1,x2)+R)d

核函数总结

问题的出现

  • 数据线性不可分,要映射到高维空间中去
  • 不能无脑低维组合映射到高维空间,维度太大根本没法计算

核函数的功能

  • 将特征向由低维向高维的转换
  • 直接在低位空间中进行计算
  • 实际的分类效果却是在高维上
  • 避免了直接在高维空间中的复杂计算

SVM曲线,逻辑回归和决策树是直线。SVM的效果好。

松弛变量软间隔最大化

定义

数据可能有一些噪声特异点outlier导致不是线性可分或者效果不好。 如果不处理outlier,则会非常影响SVM。因为本身支持向量就只有几个。

给每个数据点加上松弛变量ξi0, 使函数间隔+松弛变量大于等于1,即约束条件:

yi(wxi+b)1ξi,ξi0

为每个松弛变量ξi支付一个代价ξi, 新的目标函数和约束条件如下:

min12w2+Ci=1nξis.t,yi(wxi+b)1ξi,ξi0

惩罚系数C是一个常数

  • C大时,对误分类的惩罚增大
  • C来调节权衡:使间隔尽量大;误分类点个数尽量少

求解

定义新的拉格朗日函数:

L(w,b,ξ,α,r)=12w2+Ci=1nξii=1nαi(yi(wTxi+b)1+ξi)i=1nriξi

和前面对偶问题求解一样,求导求解:

Lw=0w=i=1nαiyixiLb=0i=1nαiyi=0Lξ=0Cαiri=0

带入,得到新的L

maxαL=i=1nαi12i=1ni=1nαiαjyiyj(xixj)

约束条件:

0αiC,i=1nαiyi=0

SVM的深层理解

感知机算法

感知机算法是一个二类分类的线性模型,也是找一个超平面进行划分数据:

f(x)=sign(wx+b)

损失函数所有误分类点到超平面的总距离

minw,bL(w,b)=xiMyi(wxi+b)

可以使用SGD对损失函数进行优化。

当训练数据集线性可分时,感知机算法是收敛的。可以在一定迭代次数上,找到一个超平面,有很多个解。

感知机的超平面不是最优效果,最优是SVM

损失函数

数据x, 预测值f(x)=y^, 真实值y

常见损失

  1. 01损失
L(y,y^)={1,yy^0,y=y^
  1. 平方损失

    L(y,y^)=(yy^)2
  2. 绝对损失

    L(y,y^)=|yy^|
  3. 对数损失

    L(y,y^)=logP(yx^)

期望损失

期望损失也称为风险函数,需要知道联合概率分布P(X,Y), 一般不知道。

Rexp=Ep[L(y,y^)]=(x,y)L(y,y^)P(x,y)dxdy

经验损失

经验损失也成为经验风险 ,所以监督学习就是要经验风险最小化

Remp(f)=1Ni=1NL(yi,y^i)

结构风险最小化

样本数量太小时,容易过拟合。需要加上正则化项,也称为惩罚项。 模型越复杂,越大。

Rsrm(f)=1Ni=1NL(yi,y^i)+λJ(f)

λ0 是系数,权衡经验风险和模型复杂度。 监督学习,就是要使结构风险最小化。

SVM也是最优化+损失最小。 可以从损失函数和优化算法角度去看SVM、boosting、LR,可能会有不同的收获。

SVM的合页损失函数

从最优化+损失最小的角度去理解SVM。

最小二乘法

最小二乘法,就是通过最小化误差的平方来进行数学优化。对参数进行求偏导,进行求解。

SMO

模型

min12w2+Ci=1nξis.t,yi(wxi+b)1ξi,ξi0

序列最小最优化SMO (Sequential minimal optimization),解决求解α的问题:

minαL=12i=1ni=1nαiαjyiyjK(xi,xj)i=1nαis.t,0αiC,i=1nαiyi=0

如果所有变量的解都满足KKT条件,则最优化问题的解已经得到。

思想

每次抽取两个乘子α1,α2,然后固定其他乘子,针对这两个变量构建一个子二次规划问题,进行求解。不断迭代求解子问题,最终解得原问题。

选择乘子

α1选择违反KKT条件最严重的,α2选择让α1变化最大的。

总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025