前言
LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM分类与回归的软件包。LIBSVM软件包拥有目前各种常用编程语言的版本,如Python、Java、Matlab等。
一、支持算法
LIBSVM支持下述算法,具体可以参考作者写的介绍文档
1.1 C-SVC
1.2 ν-SVC
1.3 ε-SVR
1.4 ν-SVR
二、LIBSVM入门使用
作者写了该软件包的入门使用文档
SVM使用流程:
转换数据格式;
缩放数据,例如将其变换到[0,1]或者[-1,1]的范围;
使用RBF核函数;
使用交叉验证寻找最优参数C和r;
使用最优参数训练整个数据集;
测试。
首选RBF核函数,原因是:
线性核是RBF的特例;
Sigmoid核在特定参数下的特性类似于RBF;
多项式核参数比RBF多,在阶数较高时且容易导致计算数值过大。
但是在特征数量很大时,RBF可能会不适用,使用线性核是一种更好的选择。
寻找最优参数:
使用网格搜索利用交叉验证寻找最优参数时,先使用粗网格,然后缩小寻找区域使用细网格。网格使用指数拉伸网格,例如:C=2-5,2-4,...,210 ,gamma=2-7,2-6,...,215。
特征数量:
特征过多时,先进行特征提取,选取一个合适的特征子集。
LIBSVM不适合特征数量过多且样本数量过多的情形,比如文档分类。
LIBLINEAR更加适合这类情况。
在样本数量很大时,LIBLINEAR速度会快很多倍。
三、Python接口
LIBSVM接口函数在svmutil.py文件中,按照源码顺序依次是:
svm_read_problem(data_file_name)
从文本文件中读取数据,数据的格式为:
label index1:value1 index2:value2 ...
返回