SVM怎样才能得到较好的结果
1)对数据归一化处理(simple scale)
2)应用RBF kernel
3)用交叉验证(cross-validation)和grid-search得到最优的C和g
采用交叉验证选择最佳参数C和g:不同的参数(最常用的是C和g)条件下训练出不同的SVM。
4)训练数据并预测
参见“LIBSVM入门解读”篇libsvm工具使用说明部分。
libsvm可以实现基于SVM的分类和回归
(分类与回归大致一样,重点只说明参数寻优过程不同的地方)
1、分类
在分类过程中主要是用tools文件夹下grid.py来选取SVM最好的参数。
grid.py是一种用于RBF核函数的C-SVM分类的参数选择程序。用户只需给定参数的一个范围,grid.py采用交叉验证的方法计算每种参数组合的准确度来找到最好的参数。
Usage: grid.py [-log2c begin,end,step] [-log2g begin,end,step] [-v fold]
[-svmtrain pathname] [-gnuplot pathname] [-out pathname] [-png pathname]
[additional parameters for svm-train] dataset
The program conducts v-fold cross validation using parameter C (and gamma)= 2^begin, 2^(begin+step), ..., 2^end.
示例:python grid.py -log2c -10,10,1 -log2g 10,-10,-1 trainset.txt
2、回归
用gridregression.py来搜索最优参数C和g
示例:
python.exe gridregression.py -svmtrain H:\SVM\libsvm-2.81\windows\svmtrain.exe -gnuplot C:\gp373w32\pgnuplot.exe -log2c -10,