LIBSVM一般使用步骤、核函数简介及工具重点
1.LIBSVM 使用的一般步骤
1)按照LIBSVM软件包所要求的格式准备数据集
2)对数据进行简单的缩放操作;
3)首要考虑选用RBF 核函数;
4)采用交叉验证选择最佳参数C(惩罚系数)与g(gamma) ;
5)采用最佳参数C与g 对整个训练集进行训练获取支持向量机模型;
6)利用获取的模型进行测试与预测。
2.对于svm-train的参数
(注1:其中-g选项中的k是指输入数据中的属性数。操作参数 -v 随机地将数据剖分为n 部分并计算交叉检验准确度和均方根误差。以上这些参数设置可以按照SVM 的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM 类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。)
(注2:网上实验中的参数-s取3,-t取2(默认)还需确定的参数是-c,-g,-p 另, 实验中所需调整的重要参数是-c 和 –g,-c和-g的调整除了自己根据经验试之外,还可以使用gridregression.py对这两个参数进行优化。(需要补充)
3. 对于实验easy.py产生的iris.train.scale.out文件中的内容
-log2c:是给出参数c的范围和步长
-log2g:是给出参数g的范围和步长
-log2p:是给出参数p的范围和步长上面三个参数可以用默认范围和步长
-s:选择SVM类型,也是只能选3或者4 -t是选择核函数
-v :10 将训练数据分成10份做交叉验证。默认为5
4.关于核函数简介
核函数将m维高维空间的内积运算转化为n维低维输入空间的核函数计算(n<<m),从而巧妙地解决了在高 维特征空间中计算的“维数灾难”等问题,从而为在高维特征空间解决复杂的分类或回归问题奠定了理论基础。
(3)核函数特点
核函数方法的广泛应用,与其特点是分不开的:
1)核函数的引入避免了“维数灾难”,大大减小了计算量。而输入空间的维数n对核函数矩阵无影响,因此,核函数方法可以有效处理高维输入。
2)无需知道非线性变换函数Φ的形式和参数.
3)核函数的形式和参数的变化会隐式地改变从输入空间到特征空间的映射,进而对特征空间的性质产生影响,最终改变各种核函数方法的性能。
4)核函数方法可以和不同的算法相结合,形成多种不同的基于核函数技术的方法,且这两部分的设计可以单独进行,并可以为不同的应用选择不同的核函数和算法。
(4)常见核函数
核函数的确定并不困难,满足Mercer定理的函数都可以作为核函数。常用的核函数可分为两类,即内积核函数和平移不变核函数,如:
1)高斯核函数K(x,xi) =exp(-||x-xi||2/2σ2;
2)多项式核函数K(x,xi)=(x·xi+1)^d, d=1,2,…,N;
3)感知器核函数K(x,xi) =tanh(βxi+b);
4)样条核函数K(x,xi) = B2n+1(x-xi)。
(5)核函数方法实施步骤
核函数方法是一种模块化(Modularity)方法,它可分为核函数设计和算法设计两个部分,具体为:
1)收集和整理样本,并进行标准化;
2)选择或构造核函数;
3)用核函数将样本变换成为核函数矩阵,这一步相当于将输入数据通过非线性函数映射到高维 特征空间;
4)在特征空间对核函数矩阵实施各种线性算法;
5)得到输入空间中的非线性模型。
显然,将样本数据核化成核函数矩阵是核函数方法中的关键。注意到核函数矩阵是l×l的对称矩阵,其中l为样本数。
(6)核函数在模式识别中的应用
1)新方法。主要用在基于结构风险最小化(Structural Risk Minimization,SRM)的SVM中。
2)传统方法改造。如核主元分析(kernel PCA)、核主元回归(kernel PCR)、核部分最小二乘法(kernel PLS)、核Fisher判别分析(Kernel Fisher Discriminator, KFD)、核独立主元分析(Kernel Independent Component Analysis,KICA)等,这些方法在模式识别等不同领域的应用中都表现了很好的性能。
5. grid.py使用方法
文件grid.py是对C-SVC的参数c和γ做优选的,原理也是网格遍历。
可以看到新生成了两个文件:
heart_scale.out和heart_scale.png,第一个文件就是搜索过程中的[local]和最优数据,第二文件就是gnuplot图像。
现在,grid.py已经运行完了,你可以把最优参数输入到svm-train.exe中进行训练了。
6. easy.py使用方法
文件easy.py对样本文件做了“一条龙服务”,从参数优选,到分类预测。因此,其对grid.py、svm-train.exe、svm-scal.exe和svm-predict.exe都进行了调用(当然还有必须的python和gnuplot)。因此,运行easy.py需要保证这些文件的路径都要正确。当然还需要样本文件(即训练数据)和预测文件(即测试数据),再简单的测试中,可以使用heart_scale作为训练样本,预测文件同样使用heart_scale,只是我们复制一份后将其改名为heart_test。
7. 应用实例关键部分
1). 进行参数最优估计,运行命令 python grid.py heart_scale
2). 得到最优参数c=2048,g=0.0001220703125.
然后在调用命令
svm-train.exe -c 2048 -g 0.0001220703125 heart_scale 得到model
quote from: