线性支持向量机
支持向量机可以分为:线性可分支持向量机,线性支持向量机和非线性支持向量机,本次内容只讲述线性可分支持向量机和线性支持向量机。支持持向量机是一种强大的分类学习算法,即可以解决二分类也可以解决多分类问题,本次只讲述二分类的问题。
线性可分支持向量机
线性可分支持向量机是要学习一个超平面,而这个超平面能把正例和负例完全分开,但是这样的超平面可能有无数多个,线性可分支持向量机利用间隔最大化求分离超平面,这时,解是唯一的。
通过间隔最大化或等价的求解相应的凸二次规划问题学习得到的分离超平面为:
以及相应的分类决策函数:
称为线性可分支持向量机。
函数间隔和几何间隔
函数间隔:对于给定的训练集
T
和超平面
(w,b)
,定义超平面
(w,b)
关于样本点
(xi,yi)
的函数间隔为
定义超平面 (w,b) 关于训练集 T 的函数间隔为超平面 (w,b) 关于 T 中所有样本点 (xi,yi) 的函数间隔只最小值,即
对分离超平面的法向量 w 进行规范化,就得到集合间隔
几何间隔:对于给定的训练集 T 和超平面 (w,b) ,定义超平面 (w,b) 关于样本点 (xi,yi) 的几何间隔为
定义超平面 (w,b) 关于训练集 T 的函数间隔为超平面 (w,b) 关于 T 中所有样本点 (xi,yi) 的几何间隔只最小值,即
从上述看出,几何间隔与函数间隔只差了一个乘积 1||w|| 。
要间隔最大化,只需要最大化间隔,可以表述为下面的约束最优化问题:
考虑几何间隔与函数间隔的关系,则可将问题改成
函数间隔 γ^ 取值不影响最优化问题的求解,所以取 γ^=1 ,而注意到最大化 1||w|| 和最小化 1/2||w||2 等价,故得到线性可分支持向量机学习的最优化问题
线性可分支持向量机算法(最大间隔法)
输入:线性可分训练集
T={(x1,y1),(x2,y2),⋯,(xN,yN)}
,其中,
xi∈χ=Rn,yi∈Y={1,−1},i=1,2,⋯,N
;
输出:最大间隔分离超平面和分类决策函数。
(1)构造并求解约束最优化问题:
求得最优解 w∗,b∗ 。
(2)由此得到分离超平面:
分类决策函数为
现在的问题是怎样求解 w∗,b∗ ,只要把 w∗,b∗ 求解出,那么自然而然就得到了分离超平面和分类决策函数。在求解 w∗,b∗ 之前,先看看对偶问题
拉格朗日对偶性
在约束最优化问题中,常常利用拉格朗日对偶性将原始问题转化为对偶问题,通过对偶问题而得到原始问题的解。
1. 原始问题
假设
f(x),ci(x),hj(x)
是定义在
Rn
上的连续可微函数,考虑约束最优化问题:
此约束最优化问题就是原始问题。
引进拉格朗日函数
αi,βj 为拉格朗日乘子, αi≥0 ,考虑x的函数:
下标P表示原始问题。
如果x满足KKT条件,则有上两式知 θp(x)=f(x)
考虑 f(x) 的极小化问题为
原始问题的最优值
2. 对偶问题
定义:
然后再极大化 θD(α,β) ,即
问题 maxα,β:αi≥0minxL(x,α,β) 称为广义拉格朗日函数的极大极小问题。
将广义拉格朗日函数的极大极小问题表示为约束最优化问题:
称为原始问题的对偶问题,对偶问题的最优值
即由原始的极小极大值问题转化为极大极小的对偶问题
定理:若原始问题和对偶问题都有最优值,则
定理:对于原始问题和对偶问题,假设 f(x)和ci(x) 是凸函数, hj(x) 是仿射函数,并且不等式约束 ci(x) 是严格可行的,则 x∗和α∗,β∗ 分别是原始问题和对偶问题的解的充分必要条件是它们满足KKT条件:
学习的对偶算法
首先构建拉格朗日函数:
其中 α=(α1,α2,...,αN)T 为拉格朗日乘子。
根据对偶性,原始问题的对偶问题为极大极小问题:
(1)求 minw,bL(w,b,α)
将拉格朗日函数对 w,b 分别求导并等于0,得
代入到拉格朗日函数中得:
(2)求 minw,bL(w,b,α)对α 的极大
稍微转化一下
最终求得
w∗,b∗
为:
线性可分支持向量机学习算法
输入:线性可分训练集
T={(x1,y1),(x2,y2),...,(xN,yN)}
,其中
xi∈χ=Rn,y∈Y={1,−1},i=1,2,...,N
;
输出:分离超平面和分类决策函数。
(1)构造并求解约束最优化问题
求得最优解 α∗=(α∗1,α∗2,...,α∗N)T
(2)计算
选择 α∗的一个正分量α∗>0 (因为是唯一解,所以只要选择其中一个 α∗>0 就行),计算
线性支持向量机
而对于线性支持向量机,就是在线性可分支持向量机的基础上加了一个松弛变量
ξ
,这时约束条件为
yi(w⋅xi+b)≥1−ξi
,而目标函数变为
1/2||w||2+CΣNi=1ξi
。
而最终得到的对偶问题为:
最后三式可写为 0≤αi≤C
线性支持向量机算法
输入:线性可分训练集
T={(x1,y1),(x2,y2),...,(xN,yN)}
,其中
xi∈χ=Rn,y∈Y={1,−1},i=1,2,...,N
;
输出:分离超平面和分类决策函数。
(1)选择惩罚系数
C>0
,构造并求解凸二次规划问题
求得最优解 α∗=(α∗1,α∗2,...,α∗N)T
(2) 计算
选择 α∗的一个分量α∗j适合条件0<α∗j<C ,计算
(3)求得分离超平面
分类决策函数为
步骤(2)中求得b的值不唯一,故可以取在所有符合条件的样本点上的平均值。
R语言实现
R有多种实现SVM的方法,例如kernlab
包的ksvm
,主要是基于核函数的;svmadmm
包的svm
主要是基于ADMM 和 IADMM算法的线性和非线性函数,另外还有最常用的caret
包也有实现SVM方法的。
参考
[1] 李航 《统计学习方法》
[2] 周志华 《机器学习》
[3] 韩家伟《数据挖掘:概念与技术》