找回密码
 注册
关于网站域名变更的通知
查看: 466|回复: 1
打印 上一主题 下一主题

matlab中libsvm的svmtrain函数用法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-21 14:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
这里的LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用。  I2 i; @3 q: y( X  j& a4 V$ D9 C5 t

6 H- p1 k5 g+ `; F/ X0 {$ B# }注意不是matlab自带的svm实现函数,自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题,参数可调节,功能更强大。
8 v; U2 z' l( _+ n
2 W; @, R% v8 W- wlibsvm的配置很简单,只需要下载高级版本的matlab和libsvm,VC或VS编译实现很简单的,这里就不细讲了。
7 W  d1 E9 d$ W8 y1 Q8 M; Y  V% M  A+ u& Y
两个步骤:训练建模——>模型预测+ C% S9 |) m( Q" `) i  V
/ l5 u/ T2 p  ~. W
分类  model = svmtrain(trainlabel, traindata, '-s 0 -t 2 -c 1.2 -g 2.8');* J. a: i5 e2 }5 o7 {, P
# N" o3 K1 f4 s& H# K  H8 v
回归  model = svmtrain(trainlabel, traindata, '-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');
( X0 S. Z5 l" s; c  `* x" ~) q, Q* i/ Z
+ B0 {, Y+ P- r& ~- F+ b参数说明:) j7 u! d4 e; ^+ @

4 g2 b6 f) m3 X/ J) {/ P  W-s svm类型:SVM设置类型(默认0)8 {# L/ U( U! P$ k
  0 -- C-SVC. {' Y% x3 E* W
  1 --v-SVC& D/ X/ N. f2 _2 p6 }$ b
  2 – 一类SVM$ y3 W! ]9 p, B( q7 _
  3 -- e -SVR# P, v! m; x6 i7 o7 \
  4 -- v-SVR  l: Z, ^0 Q( \4 h- Z* n! m9 Z
' Y% f. p! O% {( T
-t 核函数类型:核函数设置类型(默认2)$ O8 p7 s0 ~+ }0 H9 K) p$ k
  0 – 线性:u'v) \! a. }, ?3 s/ k8 z1 N' j
  1 – 多项式:(r*u'v + coef0)^degree
) a1 K$ h& a$ X( q5 z$ O  2 – RBF函数:exp(-r|u-v|^2)
7 p/ s  v1 A9 a9 h6 O  3 –sigmoid:tanh(r*u'v + coef0)
7 \" d( {: F+ O% Z( R6 N* S
& G9 @! o3 }- ^3 F8 `5 W-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)
$ ~/ m3 _) U# g  B/ [: D0 T5 a: }5 p0 E; Q# {, w7 K1 v9 v
-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1),惩罚系数# c; ]* n0 `& L& `

9 `% h& i; b" I' {0 r-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)
& b6 v! s$ v0 {5 y* P" u7 A& v2 V7 Q9 C' U( l0 |/ h# R
-p p:设置e -SVR 中损失函数p的值(默认0.1)
0 l$ q3 ]+ Z8 O  ?( w) X3 G$ b
" _) U0 j* z$ M. v( d$ j-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
5 x' ~9 Z9 ~4 ]7 }+ M' M1 K) i8 Q6 v+ N& x: L. v7 l
-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
4 J+ K' ^+ u( M7 r8 T: P
) _4 N/ ]( _& {/ [; _  S-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2
0 p2 G, g; |1 |; p# m6 \) {/ b6 k$ n# A5 ]2 G) `' }+ o! m; M. Q
, y) ~$ L% J. J) ~+ P, U
: W9 n  `/ q% O/ y, |1 o& o
libsvm使用误区----------------------
4 ]* M! s/ Q2 s8 w! f2 j9 v
* R& O- I$ K% h* W. w& y(1) 直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。. G  X2 F" d" \8 E; I
5 h7 @/ b9 k4 F2 X+ A, ~+ G8 S
(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。4 `# s4 {# p+ j9 |
a) 在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。5 F! P; L9 a. K% i5 \
b) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。; |' k/ @) e2 N$ G7 o7 p# s
(3) 样本数<<特征数的情况:推荐使用线性核,可以达到与RBF同样的性能。
! Y1 d+ K0 @7 R2 t2 @
) p) x. c+ @+ v; u7 V# I(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。
% p+ h* c5 t" @% l! z5 D7 G
( U+ ^3 P' q0 r" [& L4 q# f9 g(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数
; H  X% t5 U3 n5 d  D/ g! e/ E
& U. N/ c' z) s0 G" k5 |6 k& f  ]0 b
! S. Q! E4 P# O  D1 P
0 m8 {5 F/ A0 _5 h

# r  J- R  Y; l. {

该用户从未签到

2#
发表于 2020-7-21 15:23 | 只看该作者
matlab中libsvm的svmtrain函数用法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 12:26 , Processed in 0.140625 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表