一、引言:
LIBSVM提供了多语言(java、python和matlab)的SVM实现,可以便捷地处理分类或回归问题,本文记录基于matlab的LIBSVM学习笔记。
二、环境搭建:
LIBSVM下载链接:https://github.com/cjlin1/libsvm
Windows系统下安装:预编译的mex文件存放在’…/windows’,需要将其复制到matlab文件夹下
matlab软件中编译:首先将libsvm所在的matlab文件夹及其子文件夹添加到matlab搜索路径中;然后在命令行中输入make
编译得到’libsvmread.mex’, ‘libsvmwrite.mex’, ‘svmtrain.mex’, and
'svmpredict.mex’文件。
三、使用:
1.数据说明及其读取方法
数据格式:[label] [index1]:[value1] [index2]:[value2] …
示例:
/*
0.099 1:5000 2:0.06 3:2 4:1
*/
数据读取方式
[label_train, inst_train] = libsvmread('filePath');
其中:
- label_train:训练标签,m*1矩阵(m表示样本数),类型必须为double;
- inst_train:训练实例,m*n矩阵(n表示样本的特征数),类型必须为double;
2.SVM模型训练
model = svmtrain(label_train, inst_train [, 'libsvm_options']);
其中:
- libsvm_options:模型参数,string类型
libsvm_options
-s 设置svm类型:
0 – C-SVC
1 – v-SVC
2 – one-class-SVM
3 –ε-SVR
4 – n - SVR
-t 设置核函数类型,默认值为2
0 –线性核:u’v
1 –多项式核:(gu’v+coef0)degree
2 – RBF核:exp(-γ||u-v||2)
3 – sigmoid核:tanh(γ*u’*v+coef0)
其它设置
/**
-d degree:设置多项式核中degree的值,默认为3;
-g γ:设置核函数中γ的值,默认为1/k,k为特征(或者说是属性)数;
-r coef 0:设置核函数中的coef 0,默认值为0;
-c cost:设置C-SVC、ε-SVR、n - SVR中从惩罚系数C,默认值为1;
-n v:设置v-SVC、one-class-SVM与n - SVR中参数n,默认值0.5;
-p ε:设置v-SVR的损失函数中的e,默认值为0.1;
-m cachesize:设置cache内存大小,以MB为单位,默认值为40;
-e ε:设置终止准则中的可容忍偏差,默认值为0.001;
-h shrinking:是否使用启发式,可选值为0或1,默认值为1;
-b 概率估计:是否计算SVC或SVR的概率估计,可选值0或1,默认0;
-wi weight:对各类样本的惩罚系数C加权,默认值为1;
-v n:n折交叉验证模式;
*/
示例:
model = svmtrain(label_train, inst_train, '-s 4 -t 2');
3.预测
[predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(label_test, inst_test, model [, 'libsvm_options']);
示例:
[label_predicted, accuracy, dec_values] = svmpredict(label_test, inst_test, model)
参考:
[1] 勉旃,LIBSVM使用方法。
[2] AlanDreamer,matlab安装LIBSVM。