libsvm 参数说明
作为机器学习很强大的一个分类器之一,研究一下如何使用。
libsvm 软件包简介
libsvm工具箱是台湾大学林智仁(C.JLin)等人开发的一套简单的、易于使用的SVM模式识别与回归机软件包,该软件包利用收敛性证明的成果改进算法,取得了很好的结果。
libsvm 共实现了5种类型的SVM:C-SVC,u-SVC,One Class-SVC,e-SVR和u-SVR等。下面将详细介绍libsvm软件包中主要函数的调用格式及注意事项。
SVM 训练函数:svmtrain
model = svmtrain(train_label, train_matrix, ['libsvm_options']);
输入:
- train_label
:训练集的标签
- train_matrix
:训练集的属性
- libsvm_options
:一些选项参数
输出:
- model
:训练得到的分类模型
值得一提的是,与BP神经网络及RBF神经网络不同,train_label及train_matrix为列向量(矩阵),每行对应一个训练样本。
SVM 预测函数:svmpredict
[predict_label, accurary]=svmpredict(test_label, test_matrix, model);
输入:
- test_label
:测试集的标签
- test_matrix
:测试集的属性
- model
:由svmtrain得到的分类模型
- libsvm_options
:一些选项参数
输出:
- predicted_label
:预测得到的测试集的标签
- accuracy
:分类准确率
需要说明的是,若测试集样本对应的类别标签 test_label未知,为了符合函数svmpredict 调用格式的要求,随机填写即可,在这种情况下,accuracy便没有具体的意义了,只需关注预测的类别标签 predict_label 即可。
svmtrain 参数简介
‘-s’ SVM 类型 | SVM 模型类型(默认0) |
---|---|
-0 | c-SVC(多类别分类) |
-1 | nu-SVC(多类别分类) |
-2 | one-class SVM (分类) |
-3 | epsilon-SVR(回归) |
-4 | v-SVR(回归) |
‘-t’ 核函数类型 | 核函数设置类型(默认2) |
---|---|
-0 | 线性核函数: u’*v |
-1 | 多项式核函数 : (gamma*u’*v + coef0)^degree |
-2 | RBF核函数 : exp(-gamma*|u-v|^2) |
-3 | sigmoid核函数 : tanh(gamma*u’*v + coef0) |
-4 | 自定义核函数 (指定核矩阵) |
其他参数简介 | |
---|---|
-d degree | 核函数中的degree设置(针对多项式核函数)(默认3) |
-g gama | 核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/num_features,即属性数目的倒数) |
-r coef0 | 核函数中的coef0设置(针对多项式/sigmoid核函数)(默认0) |
-c cost | 设置C-SVC,epsilon-SVR的参数(损失函数)(默认1) |
-p epsilon | 设置epsilon-SVR中损失函数epsilon的值(默认0.1) |
-n nu | 设置nu-SVC,one-class SVM和nu-SVR的参数(默认0.5) |
-m cachesize | 设置cache内存大小,以MB为单位(默认100) |
-e epsilon | 设置允许的终止判据(默认0.001) |
-h shrinking | 是否使用启发式,0或1(默认1) |
-b probability_estimates | 是否为概率估计训练一个SVC或SVR模型,0还是1(默认为0) |
-wi weight | 设置第几类的参数C为weight*C(C-SVC中的C)(默认1) |
-v n | n-fold交互检验模式,n为fold的个数,必须大于等于2 |
-q | 安静模式(输出) |
-s svm模型类型设置参数介绍和关联参数
-s 参数(默认0) | 关联参数 |
---|---|
0 – C-SVC | -c(默认1) |
1 – nu-SVC | -n(默认0.5) |
2 – one-class SVM | -n(默认0.5) |
3 – epsilon-SVR | -c(默认1)、-p(默认0.1) |
4 – nu-SVR | -c(默认1)、-n(默认0.5) |