SMO算法程序的使用
最近在网上搜了很久SMO算法程序,程序贴在下面了。但不知道怎么使用。特别是怎样运用到支持向量回归机的预测中。请问哪位能指点一下我。另外,网上有很多C++的程序,不知哪能找到相关的matlab程序。万分感谢!!!SMO程序:
target = desired output vector
point = training point matrix
procedure takeStep(i1,i2)
if(i1==i2) return 0
alph1 = Lagrange multiplier for i1
y1 = target
E1 = SVM output on point - y1(check in error cache)
s=y1*y2
Compute L ,H
if(L==H)
return 0
k11 = kernel(point,point)
k12 = kernel(point,point)
k22 = kernel(point,point)
eta = 2*k12-k11-k22
if(eta<0)
{ a2=alph2 - y2*(E1-E2)/eta
if(a2<L) a2=L
else if(a2>H) a2=H
}
else
{Lobj=objective function at a2=L
Hobj=objective function at a2=H
if(Lobj>Hobj+eps)
a2=L
else if(Lobj<Hobj-eps)
a2=H
else
a2=alph2
}
if(|a2-alpha2|<eps*(a2+alpha2+eps))
return 0
a1=alpha1+s*(alpha2-a2)
Update threshold to reflect change in Lagrange multipliers
Update weight vector to reflect change in a1&a2,if linear SVM
Update error cache using new Lagrange multipliers
Store a1 in the alpha array
Store a2 in the alpha array
return 1
endprocedure
procedure examineExample(i2)
y2=target
alpha2=Lagrange multiplier for i2
E2=SVM output on point-y2(check in error cache)
r2=E2*y2
if((r2<-tol&&alph2<C)||(r2>tol&&alph2>0))
{if(number of non-zero&non-C alpha>1)
{i1=result of second choice heuristic
if takeStep(i1,i2)
return 1
}
loop over all possible i1,starting at random point
{i1=identity of current alpha
if takeStep(i1,i2)
return 1
}
}
return 0
endprocedure
main routine:
initialize alpha array to all zero
initialize threshold to zero
numChange=0
examineAll=1
while(numChange>0|examineAll)
{numChanged =0
if(examineAll)
loop I over all training examples
numChanged+=examineExample(I)
if(examineAll==1)
examineAll=0
else if(numChanged==0)
examineAll=1
} 听说还有其他变型一些算法,比如:chunking算法、osuna算法、decomposing算法以及聚类算法、伪距离QC算法。希望能得到程序上和理论上的帮助。
万分感谢! 呵呵,这个好象是Delphi的程序啊。好多子函数没有代码,仅是调用的语句。 一个SVM的工具箱,供参考。
由于网站不支持rar格式的附件,所以下载后把扩张名改成.rar,解压后把 optimiser 子目录下的 qp.dll 拷贝到 主目录下即可。
运行uiregress.m 进行图形化界面演示。
多谢楼上的朋友!
但由于本人不才,在按你的方法运行时出来的界面,我只找到了通过变换核函数来改变SVR模型的方法,如linear、polynomial、Guassian RBF、Multi-Layer Perceptron、Linear Spine、Linear Bspine、Trigonometric Polyomial和Exponential RBF等等。不知在哪可以找到求解大规模问题的变形算法。 不用客气,大规模问题的求解方案你去到Mathworks网站下载 BioInformatics 工具箱,或者新浪爱问共享找找看,这个工具箱提供了SVM完整的解决方案,并且具有说明书和例子。 谢谢指教! 工具箱已下载,学习中! 谢谢((em:08)) 新手学习中,感谢分享
页:
[1]