当前位置:文档之家› SVM-算法实现

SVM-算法实现

l 1 l 1 1 l l 1 i y1 yi K ( xi , x1 ) 2 i y 2 yi K ( xi , x 2 ) i j yi y j K ( xi , x j ) 2 i 3 2 i 3 2 i 3 j 3
目标函数:
其中:
求偏导:
可以由和其他参数表示出来。
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}
求解:对偶问题
min
w ,b
max
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 1 1 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
等价于:
b 如果对于: 可以判断: m(a * ) M (a * ) 0 满足: 不满足:
b
b
停止条件2
停止条件3
启发式选择算法
其他求解方法
选块算法
分解算法
分解算法
工作集的选取
相关软件
问题
On the Algorithmic Implementation of Multiclass Kernel-based Vector Machines
l
优化目标:
max
a
s.t.
y
i 1 i
l
i
0
i 1,..., l
0 i C,
其中C为人为设定,x,y为已知数
问题?
实际上在处理大型问题时,由于存储和计算两方面的要求,这些算法
往往会失效。
这些算法都要存储不训练集相应的核矩阵,然而存储核矩阵所需要的
内存是随着训练集中训练点数L的平凡增长的。
软支持向量机求解
构造拉格朗日公式:
求偏导数:
求解问题
数据集合:
T {( x1 , y1 ),..., ( xl , yl )} ( R n y)l
xi R n , yi Y {1,1}, i 1,..., l
1 l l i 2 yi y j i j K( xi , x j ) i 1 i 1 j 1
l
优化目标:
max
a
s.t.
y
i 1 i
l
i
0
x,y为已知数
核函数
线性不可分的情况
我们可以为分错的点加上一点惩罚,对一个分错的点的惩罚函数就是
这个点到其正确位置的距离:
软间隔C-SVM
C是一个由用户去指定的系数,表示对分错的点加入多少的 惩罚,当C很大的时候,分错的点就会更少,但是过拟合的 情况可能会比较严重,当C很小的时候,分错的点可能会很 多,不过可能由此得到的模型也会不太正确
带入w, v: 求得:
参数的求解
最终参数的解为:
其中: 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
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
例如,当训练点数目超过4000时,存储核函数矩阵需要多达128兆。
求解方法:坐标上升法
min
a l 1 l l y i y j i j K ( xi , x j ) i 2 i 1 j 1 i 1
固定除 i 之外的所有参数,这时W可看作只是关于 i 的函数,那么直接对 i
维空间的非线性映射;
(2)对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思
想是SVM方法的核心;
(3)支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支
持向量。因此,模型需要存储空间小,算法鲁棒性强;
(4)无序任何前提假设,丌涉及概率测度;
(1) SVM算法对大规模训练样本难以实施
f ( x, y ) w w f ( x, y ) w w 1 w w
M
max 2M 2 w
目标函数: 等价于: 因为 w 单调, : 并且为了计算方便
min
min
w
1 w 2
2
求解问题
数据集合:
T {( x1 , y1 ),..., ( xl , yl )} ( R n y)l
第二步,固定除被选取的参数之外的其他参数,确定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
求解问题
数据集合:
T {( x1 , y1 ),..., ( xl , yl )} ( R n y)l
xi R n , yi Y {1,1}, i 1,..., l
1 l l i 2 yi y j i j K( xi , x j ) i 1 i 1 j 1
也要在直线上,因此
同理,当
(0,-E)

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

在界内,则

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

在界内,则

在界内,则


都在界内,则情况1和情况2的B值相等,任取一个; 取值为情况1和情况2之间的任意值。
都丌在界内,则
问题?
算法如何终止?
由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算
(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存
和运算时间。针对以上问题的主要改迚有有J.Platt的SMO算法、T.Joachims的 SVM、C.J.C.Burges等的PCGC、张学工的CSVM以及O.L.Mangasarian等的SOR 算法
对于SMO算法,其中的两个参数如何选择呢?
随机?启发式规则
一个自然的想法是那些违反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}
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}
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}
相关主题