libsvm中OC-SVM 调参问题
来源:互联网 发布:手机电信网络gprs和wap 编辑:程序博客网 时间:2024/05/20 10:55
一、前言
本文主要讨论libsvm中的OCSVM调参问题,参考了博文http://www.voidcn.com/blog/lplpysys/article/p-3920288.html,OCSVM是一类SVM,即适用于训练样本均为正样本,或者负样本极少的分类模型,
二、libsvm-OCSVM相关参数
针对模型参数的训练主要使用svmtrain函数。
用法: svmtrain [options] training_set_file [model_file]
其中,options为操作参数,与OCSVM相关的参数有:
-s 2 设置SVM类型,表所选类型为一类SVM
-t 2 选择高斯核函数将数据样本映射至高纬空间,使能够线性可分。
-n v v的取值在[0,1],其表示训练时训练样本集最后被划分为负类的比例。
-g γ 核函数中的gamma值。
-v n n值为交叉验证的折数,使用该参数时,svmtrain函数返回值为n折交叉验证下得到的准确率,通常是为了确定参数v和γ的最佳值。
三、OCSVM 调参示例
以下为使用穷举法确定模型参数
clear;clc;mu = [1,1,1,1,1]'; sigma = diag([1,1,1,1,1]); data = mvnrnd(mu,sigma,2500); %R=mvnrnd(mu,sigma,m) 生成2500个5维正态分布数据。 trainData = data(1:2000, :); %前2000个用于训练testData = data(2001:2500, :); %后500个用于测试trainLabel = ones( size(trainData,1) ,1);[v,g] = meshgrid(-10:0.2:0,-10:0.5:10);[m,n] = size(v);vg = zeros(m,n);eps = 10^(-4);n = 10; %采用10折交叉验证bestv = 1;bestg = 0.1;bestacc = 0;for i = 1:m for j = n:n cmd = [ ' -s 2 -t 2 ' ,' -v ',num2str(n),' -n ',num2str(2^v(i,j)),' -g ',num2str(2^g(i,j)) ]; vg(i,j) = svmtrain(trainLabel,trainData,cmd); if vg(i,j) > bestacc bestacc = vg(i,j); bestv = 2^v(i,j); bestg = 2^g(i,j); end if abs( vg(i,j)-bestacc )<=eps bestacc = vg(i,j); bestv = 2^v(i,j); bestg = 2^g(i,j); end endend%获得最优参数后,训练模型cmd = [' -s 2 -t 2 ' , ' -n ',num2str( bestv ),' -g ',num2str( bestg )];model = svmtrain(trainLabel,trainData,cmd);%测试模型testLabel = ones( size( testData ,1) ,1);[label , Y1,Y2 ] = svmpredict(testLabel , testData ,model );四、结果分析
可得所确定最佳参数bestv和bestg,10折交叉验证下模型的准确率可达到99.55%,测试数据的准确率为98.6%,
测试时svmpredict返回3个变量,label存储的是模型对测试数据的分类标签,1为正类,-1为负类,Y1都一项表示分类准确率,后两个数字用于回归问题,第2个数字表示mse;第三个数字表示平方相关系数。Y2表示决策值。
- libsvm中OC-SVM 调参问题
- libsvm中svm-scale的使用时的一个小问题
- SVM多分类问题 libsvm在matlab中的应用
- SVM多分类问题 libsvm在matlab中的应用
- python libsvm 使用中问题
- libsvm svm-toy
- SVM应用之libsvm
- SVM-libsvm 配置
- 开源SVM库libSVM介绍
- 开源SVM库libSVM介绍
- 开源SVM库libSVM介绍
- 开源SVM库libSVM介绍
- 开源SVM库libSVM介绍
- 开源SVM库libSVM介绍
- 开源SVM库libSVM介绍
- 开源SVM库libSVM介绍
- svm-light和libsvm比较
- 开源SVM库libSVM介绍
- itext7学习笔记——第1章实践&example
- 【模板】上下界网络流
- 浅析Python中“if __name__ == __main__”的意义
- 生产者-消费者问题及C语言实现
- 根据两点的经纬度计算其距离
- libsvm中OC-SVM 调参问题
- 记一次rsyslog日志记录失败的解决过程
- Ubuntu 14.04 中 svn学习
- 委托,事件,回调,匿名函数与Lambda表达式详解
- Docker--安装
- 牛客网-华为在线编程-010-字符个数统计
- python基础——变量和表达式
- Android提交mvn
- ArcGIS Server无法注册Oracle一例