libsvm自动寻参(参数优化)

libsvm自动寻找最优参数

支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane),svm有两个重要参数C(惩罚因子)和gamma(核函数参数)

C惩罚因子:取值越大对误差的容忍度越低,但容易出现过拟合;取值越小则容易出现欠拟合。

gamma:决定了数据映射到新的特征空间后的分布,gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的个数影响训练与预测的速度。

但对于这两个参数的确定,人为去寻找比较困难,并且很难找到最优的参数。而libsvm中有一个grid.py脚本,可以自动寻找出最优的参数。

1.下载安装libsvm,进入libsvm目录执行make

2.安装gnuplot:pip install gnuplot

3.修改tools下的grid.py文件:

主要修改svm-tain.c和gnuplot的路径,Linux默认的地址就是对的。Windows系统修改为svmtain.exe(libsvm/windows)和gnuplot.exe的路径。

4.运行grid.py进行参数寻找:

在tools下打开命令行运行grid.py:python grid.py heart_scale
heart_scale是训练数据(有一定格式)

5.运行完成后,最后一行会有三个数据,第一个为C,第二个为gamma,最后一个为交叉验证精度,在tools文件夹下会生成两个文件:heart_scale.out和,第一个文件就是搜索过程中的[local]和最优数据,第二文件就是gnuplot图像。

heart_scale.png


版权声明:本文为Power392413原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。