线性支持向量机

线性支持向量机


http://blog.csdn.net/littlely_ll/article/details/70194556
原创  2017年04月16日 14:37:30

支持向量机可以分为:线性可分支持向量机,线性支持向量机和非线性支持向量机,本次内容只讲述线性可分支持向量机和线性支持向量机。支持持向量机是一种强大的分类学习算法,即可以解决二分类也可以解决多分类问题,本次只讲述二分类的问题。

线性可分支持向量机

线性可分支持向量机是要学习一个超平面,而这个超平面能把正例和负例完全分开,但是这样的超平面可能有无数多个,线性可分支持向量机利用间隔最大化求分离超平面,这时,解是唯一的。 
通过间隔最大化或等价的求解相应的凸二次规划问题学习得到的分离超平面为: 

wx+b=0

以及相应的分类决策函数: 
f(x)=sign(wx+b)

称为线性可分支持向量机。

函数间隔和几何间隔

函数间隔:对于给定的训练集 T 和超平面 (w,b) ,定义超平面 (w,b) 关于样本点 (xi,yi) 的函数间隔为 

γi^=yi(wxi+b)

定义超平面 (w,b) 关于训练集 T 的函数间隔为超平面 (w,b) 关于 T 中所有样本点 (xi,yi) 的函数间隔只最小值,即 
γ^=mini=1,...,Nγi^

对分离超平面的法向量 w 进行规范化,就得到集合间隔 
几何间隔:对于给定的训练集 T 和超平面 (w,b) ,定义超平面 (w,b) 关于样本点 (xi,yi) 的几何间隔为 
γi=yi(w||w||xi+b||w||)

定义超平面 (w,b) 关于训练集 T 的函数间隔为超平面 (w,b) 关于 T 中所有样本点 (xi,yi) 的几何间隔只最小值,即 
γ=mini=1,...,Nγi

从上述看出,几何间隔与函数间隔只差了一个乘积 1||w||

要间隔最大化,只需要最大化间隔,可以表述为下面的约束最优化问题: 

maxw,bγs.t.yi(w||w||xi+b||w||)γ,i=1,2,,N

考虑几何间隔与函数间隔的关系,则可将问题改成 
maxw,bγ^||w||s.t.yi(wxi+b)γ^,i=1,2,,N

函数间隔 γ^ 取值不影响最优化问题的求解,所以取 γ^=1 ,而注意到最大化 1||w|| 和最小化 1/2||w||2 等价,故得到线性可分支持向量机学习的最优化问题 
minw,b12||w||2s.t.yi(wxi+b)10,i=1,,N

线性可分支持向量机算法(最大间隔法)

输入:线性可分训练集 T={(x1,y1),(x2,y2),,(xN,yN)} ,其中, xiχ=Rn,yiY={1,1},i=1,2,,N ; 
输出:最大间隔分离超平面和分类决策函数。 
(1)构造并求解约束最优化问题: 

minw,b12||w||2s.t.yi(wxi+b)10,i=1,,N

求得最优解 w,b 。 
(2)由此得到分离超平面: 
wx+b=0

分类决策函数为 
f(x)=sign(wx+b)

现在的问题是怎样求解 w,b ,只要把 w,b 求解出,那么自然而然就得到了分离超平面和分类决策函数。在求解 w,b 之前,先看看对偶问题

拉格朗日对偶性

在约束最优化问题中,常常利用拉格朗日对偶性将原始问题转化为对偶问题,通过对偶问题而得到原始问题的解。 
1. 原始问题 
假设 f(x),ci(x),hj(x) 是定义在 Rn 上的连续可微函数,考虑约束最优化问题: 

minxRnf(x)s.t.ci(x)0,i=1,2,...,khj(x)=0,j=1,2,...,l

此约束最优化问题就是原始问题。 
引进拉格朗日函数 
L(x,α,β)=f(x)+Σki=1αici(x)+Σlj=1βjhj(x)

αi,βj 为拉格朗日乘子, αi0 ,考虑x的函数: 
θp(x)=maxα,β:αi0L(x,α,β)

下标P表示原始问题。 
如果x满足KKT条件,则有上两式知 θp(x)=f(x)  
考虑 f(x) 的极小化问题为 
minxθp(x)=minxmaxα,β:αi0L(x,α,β)

原始问题的最优值 
p=minxθp(x)

2. 对偶问题 
定义: 
θD(α,β)=minxL(x,α,β)

然后再极大化 θD(α,β) ,即 
θD(α,β)=maxα,β:αi0minxL(x,α,β)

问题 maxα,β:αi0minxL(x,α,β) 称为广义拉格朗日函数的极大极小问题。 
将广义拉格朗日函数的极大极小问题表示为约束最优化问题: 
maxα,βθD(α,β)=maxα,β:αi0minxL(x,α,β)s.t.αi0,i=1,2,...,k

称为原始问题的对偶问题,对偶问题的最优值 
d=maxα,β:αi0θD(α,β)

即由原始的极小极大值问题转化为极大极小的对偶问题

定理:若原始问题和对偶问题都有最优值,则 

d=p

定理:对于原始问题和对偶问题,假设 f(x)ci(x) 是凸函数, hj(x) 是仿射函数,并且不等式约束 ci(x) 是严格可行的,则 xα,β 分别是原始问题和对偶问题的解的充分必要条件是它们满足KKT条件: 
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),j=1,2,...,l

学习的对偶算法

首先构建拉格朗日函数: 

L(w,b,α)=12||w||2ΣNi=1αiyi(wxi+b)+ΣNi=1αi

其中 α=(α1,α2,...,αN)T 为拉格朗日乘子。 
根据对偶性,原始问题的对偶问题为极大极小问题: 
maxαminw,bL(w,b,α)

(1)求 minw,bL(w,b,α)  
将拉格朗日函数对 w,b 分别求导并等于0,得 
w=ΣNi=1αiyixiΣNi=1αiyi=0

代入到拉格朗日函数中得: 
L(w,b,α)=12ΣNi=1ΣNi=1αiαjyiyj(xixj)+ΣNi=1αi

(2)求 minw,bL(w,b,α)α 的极大 
maxα12ΣNi=1ΣNi=1αiαjyiyj(xixj)+ΣNi=1αis.t.ΣNi=1αiyi=0αi0,i=1,2,...,N

稍微转化一下 
minα12ΣNi=1ΣNi=1αiαjyiyj(xixj)ΣNi=1αis.t.ΣNi=1αiyi=0αi0,i=1,2,...,N

最终求得 w,b 为: 

w=ΣNi=1αiyixib=yjΣNi=1αiyi(xixj)

线性可分支持向量机学习算法

输入:线性可分训练集 T={(x1,y1),(x2,y2),...,(xN,yN)} ,其中 xiχ=Rn,yY={1,1},i=1,2,...,N
输出:分离超平面和分类决策函数。 
(1)构造并求解约束最优化问题 

minα12ΣNi=1ΣNi=1αiαjyiyj(xixj)ΣNi=1αis.t.ΣNi=1αiyi=0αi0,i=1,2,...,N

求得最优解 α=(α1,α2,...,αN)T  
(2)计算 
w=ΣNi=1αiyixi

选择 αα>0 (因为是唯一解,所以只要选择其中一个 α>0 就行),计算 
b=yjΣNi=1αiyi(xixj)

线性支持向量机

而对于线性支持向量机,就是在线性可分支持向量机的基础上加了一个松弛变量 ξ ,这时约束条件为 yi(wxi+b)1ξi ,而目标函数变为 1/2||w||2+CΣNi=1ξi 。 
而最终得到的对偶问题为: 

maxα12ΣNi=1ΣNi=1αiαjyiyj(xixj)+ΣNi=1αis.t.ΣNi=1αiyi=0Cαiμi=0αi0μi0,i=1,2,...,N

最后三式可写为 0αiC

线性支持向量机算法

输入:线性可分训练集 T={(x1,y1),(x2,y2),...,(xN,yN)} ,其中 xiχ=Rn,yY={1,1},i=1,2,...,N
输出:分离超平面和分类决策函数。 
(1)选择惩罚系数 C>0 ,构造并求解凸二次规划问题 

minα12ΣNi=1ΣNi=1αiαjyiyj(xixj)ΣNi=1αis.t.ΣNi=1αiyi=0Cαi0,i=1,2,...,N

求得最优解 α=(α1,α2,...,αN)T  
(2) 计算 
w=ΣNi=1αiyixi

选择 ααj0<αj<C ,计算 
b=yjΣNi=1αiyi(xixj)

(3)求得分离超平面 
wx+b=0

分类决策函数为 
f(x)=sign(wx+b)

步骤(2)中求得b的值不唯一,故可以取在所有符合条件的样本点上的平均值。

R语言实现

R有多种实现SVM的方法,例如kernlab包的ksvm,主要是基于核函数的;svmadmm包的svm主要是基于ADMM 和 IADMM算法的线性和非线性函数,另外还有最常用的caret包也有实现SVM方法的。

参考 
[1] 李航 《统计学习方法》 
[2] 周志华 《机器学习》 
[3] 韩家伟《数据挖掘:概念与技术》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值