SVM-及SMO算法实现

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例如,当训练点数目超过4000时,存储核函数矩阵需要多达128兆。
求解方法:坐标上升法
min
a l 1 l l y i y j i j K ( x i , x j ) i 2 i 1 j 1 i 1
固定除 i 之外的所有参数,这时W可看作只是关于 i 的函数,那么直接对 i
可以由和其他参数表示出来。
SMO算法
SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快
的二次规划优化算法,特别针对线性SVM和数据稀疏时性能更优。
第一步选取一对参数,选取方法使用启发式方法(Maximal violating pair)。
* b , j { j | a j 0, y j 1} { j | 0 a j C} { j | a j C, y j 1} - y jd (a j ) * b , j { j | a j 0, y j 1} { j | 0 a j C} { j | a j C, y j 1}
第二步,固定除被选取的参数之外的其他参数,确定W极值。
SMO算法
设我们选取了初始值满足了问题中的约束条件。接下来,我们固定,
这样W就是和的函数。并且和满足条件:
由于其余参数都是已知固定,因此为了方便,可将等式右边标记成实
数值。
SMO算法
进而
W (a) i
i 1 l
1 l l i j yi y j K ( xi , x j ) 2 i 1 j 1
l
s.t.
y
i 1 i
l
i
0
x,y为已知数
核函数
线性不可分的情况
我们可以为分错的点加上一点惩罚,对一个分错的点的惩罚函数就是
这个点到其正确位置的距离:
软间隔C-SVM
C是一个由用户去指定的系数,表示对分错的点加入多少的 惩罚,当C很大的时候,分错的点就会更少,但是过拟合的 情况可能会比较严重,当C很小的时候,分错的点可能会很 多,不过可能由此得到的模型也会不太正确
统一:
* b , j { j | a j 0, y j 1} { j | 0 a j C} { j | a j C, y j 1} - y jd (a j ) * b , j { j | a j 0, y j 1} { j | 0 a j C} { j | a j C, y j 1}
维空间的非线性映射;
(2)对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思
想是SVM方法的核心;
(3)支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支
持向量。因此,模型需要存储空间小,算法鲁棒性强;
(4)无序任何前提假设,不涉及概率测度;
(1) SVM算法对大规模训练样本难以实施
f ( x, y ) w w f ( x, y ) w w 1 w w
M
目标函数: 等价于: 因为 w 单调, : 并且为了计算方便
max 2M
2 w
min
min
w
1 w 2
2
求解问题
数据集合:
T {( x1, y1 ),...,( xl , yl )} (Rn y)l
l 1 l 1 1 l l 1 i y1 yi K ( xi , x1 ) 2 i y 2 yi K ( xi , x2 ) i j yi y j K ( xi , x j ) 2 i 3 2 i 3 2 i 3 j 3
目标函数:
其中:
求偏导:
带入w, v: 求得:
b * y j , j { j | a j 0} * d ( a ) 左移: j b y j , j { j | 0 a j C} * b y j , j { j | a j C}
分别乘以yi:
b * , j { j | a j 0} - y jd (a j ) b * , j { j | 0 a j C},当y j 1 * b , j { j | a j C} b * , j { j | a j 0} - y jd (a j ) b * , j { j | 0 a j C},当y j 1 * b , j { j | a j C}
问题提出
线性可分的分类问题:(令黑色的点 = -1, 白色的点 =
+1)
f ( x) wr x b
+1 -1
所以当有一个新的点x需要预测属于哪个分类的时候,我们用sgn(f(x)),
就可以预测了,sgn表示符号函数,当f(x) > 0的时候,sgn(f(x)) = +1, 当f(x) < 0的时候sgn(f(x)) = –1。
我们怎样才能取得一个最优的划分直线f(x)呢?
最大距离Maximum Marginal
选择使得间隙最大的函数作为分割平面是由很多道理的,比如说从概
率的角度上来说,就是使得置信度最小的点置信度最大(听起来很拗 口),从实践的角度来说,这样的效果非常好,等等。
Fra Baidu bibliotek
最大距离
(x,y) M
M
wx+b=1 f(x)=wx+b=0 wx+b=-1
软支持向量机求解
构造拉格朗日公式:
求偏导数:
求解问题
数据集合:
T {( x1, y1 ),...,( xl , yl )} (Rn y)l
xi Rn , yi Y {1,1}, i 1,...,l
优化目标:
max
a
1 l l i yi y j i j K( xi , x j ) 2 i 1 j 1 i 1
w ,b a
f ( x) max min
a w ,b
f ( x)
求解
将两式带回L(w,b,a)得到对偶问题的表达式
1 2 L(w, b, a) w ai ( yi (w xi b) 1) 2 1 L(w, b, a) ai yi xi a j y j x j ai yi w xi ai yi b ai 2 i, j
l 1 1 1 l 1 2 i 11 K ( x1 , x1 ) 1 2 y1 y 2 K ( x1 , x2 ) 1 i y1 yi K ( xi , x1 ) 2 2 2 i 3 i 3
l 1 1 1 1 2 y1 y 2 K ( x1 , x2 ) 2 2 K ( x2 , x2 ) 2 i y 2 yi K ( xi , x2 ) 2 2 2 i 3
随机?启发式规则
一个自然的想法是那些违反KKT最严重的点,他们对间距贡献最大, 因此可以通过该启发规则来完成调整参数的选取。(并且此种启发 规则计算量小)
停止条件1
满足KKT条件
KKT条件:
并设 代入得:
0, j { j | a j 0} d (a j ) b * y j 0, j { j | 0 a j C} 0, j { j | a j C}
xi Rn , yi Y {1,1}, i 1,...,l
1 w 2
2
优化目标:
min
s.t.
w xi b 1, yi 1 w xi b 1, yi 1
x,y为已知数
求解
建立拉格朗日公式:
求偏导数:
求解:对偶问题
min max
求导优化即可。
可以通过更改优化顺序来使W能够更快地增加并收敛。 如果W在内循环中能够很快地达到最优,那么坐标上升法会是一个很高效的
求极值方法。
问题?
固定以外的所有参数,那么将不再是变量(可以由其他值推出),因
为问题中规定了
=>
因此,我们最少一次需要选取两个参数做优化,比如
i
和 j ,此时
参数的求解
最终参数的解为:
其中: 0 2
new
C 和 0 1
new
C

a的取值范围
当a1和a2异号时,也就是一个为1,一个为-1时,他
们可以表示成一条直线,斜率为1。如下图:
a1-a2=E 横轴是
,纵轴是 ,
a2 和 既要在矩形方框内, C
{
(C,C-E)
也要在直线上,因此
(2) 用SVM解决多分类问题存在困难
经典的支持向量机算法只给出了二类分类的算法,而在数据挖掘的实际应用中,一
般要解决多类的分类问题。可以通过多个二类支持向量机的组合来解决。主要有一 对多组合模式、一对一组合模式和SVM决策树;再就是通过构造多个分类器的组合 来解决。主要原理是克服SVM固有的缺点,结合其他算法的优势,解决多类问题的 分类精度。如:与粗集理论结合,形成一种优势互补的多类问题的组合分类器。
l
s.t.
y
i 1 i
l
i
0
i 1,...,l
0 i C,
其中C为人为设定,x,y为已知数
问题?
实际上在处理大型问题时,由于存储和计算两方面的要求,这些算法
往往会失效。
这些算法都要存储与训练集相应的核矩阵,然而存储核矩阵所需要的
内存是随着训练集中训练点数L的平凡增长的。
等价于:
b 如果对于: 可以判断: m(a * ) M (a * ) 0 满足: 不满足:
b
b
停止条件2
停止条件3
启发式选择算法
其他求解方法
选块算法
分解算法
分解算法
工作集的选取
相关软件
问题
On the Algorithmic Implementation of Multiclass Kernel-based Vector Machines
同理,当
(0,-E)

同号时
{
C
a1
参数求解
参数计算:
参数b计算:?
b的求解

在界内,则

,带入上式得:
两边同乘以
,得
b的求解

在界内,则

在界内,则


都在界内,则情况1和情况2的B值相等,任取一个; 取值为情况1和情况2之间的任意值。
都不在界内,则
问题?
算法如何终止?
对于SMO算法,其中的两个参数如何选择呢?
SVM 算法与实现
2011 – 11 -18
报告内容
SVM简介
求解算法-SMO优化算法
多分类问题
系统演示
A+
Ax 0w = í à 1 0 Separating Surface: x w = í
w
SVM算法特点
SVM有如下主要几个特点:
(1)非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高
求解问题
数据集合:
T {( x1, y1 ),...,( xl , yl )} (Rn y)l
xi Rn , yi Y {1,1}, i 1,...,l
优化目标:
max
a
1 l l i yi y j i j K( xi , x j ) 2 i 1 j 1 i 1
l
1 l 1 l 1 l l 1 2 i 1 j yi y j K ( x1 , x j ) 2 j yi y j K ( x2 , x j ) i j yi y j K ( xi , x j ) 2 i 1 2 i 1 2 i 3 j 1 i 3
Grammer & singer 多分类支持向量机
基本思想
Grammer-singer多分类支持向量机的出发点是直接用超平面把样本
由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算
(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存
和运算时间。针对以上问题的主要改进有有J.Platt的SMO算法、T.Joachims的 SVM、C.J.C.Burges等的PCGC、张学工的CSVM以及O.L.Mangasarian等的SOR 算法
相关文档
最新文档