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

matlab中libsvm的svmtrain函数用法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这里的LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用。
+ b' d- R% k; F) i
& ?/ p0 }% J0 j3 o/ L$ W6 \注意不是matlab自带的svm实现函数,自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题,参数可调节,功能更强大。5 }" H* B, c* c9 e' z7 v

4 a  R/ c& U$ S5 M, r7 slibsvm的配置很简单,只需要下载高级版本的matlab和libsvm,VC或VS编译实现很简单的,这里就不细讲了。" h4 B2 k1 y# n

3 M4 g+ s3 {4 {7 {7 F两个步骤:训练建模——>模型预测1 Y2 W" f" a8 ~" F( n
+ e$ m$ Y- D8 M: ^0 V
分类  model = svmtrain(trainlabel, traindata, '-s 0 -t 2 -c 1.2 -g 2.8');, n2 r! M' [  R' y( }% e* P$ r6 y
( D/ u9 W5 n0 `1 X4 N( n
回归  model = svmtrain(trainlabel, traindata, '-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');0 j4 h4 K: _  z+ g' J! }& x

8 n' D* M/ U' v- q8 ~% Q- g, ^' q参数说明:
0 \0 p/ p& _' T! r8 o0 u( ~1 C" H. i/ w( J3 ?9 c' m
-s svm类型:SVM设置类型(默认0)
4 q7 a" {; [) X& O  0 -- C-SVC
2 l) [' ~; g9 e2 q& ]  1 --v-SVC
3 i% ^9 K7 _9 v- Y' s9 _  2 – 一类SVM
% D- @8 ^) B/ E* l& f  3 -- e -SVR
8 Q; A8 A1 {/ V/ `  4 -- v-SVR
3 ~0 K5 I# x, _( m/ h# ]4 W, P7 \: [" w
-t 核函数类型:核函数设置类型(默认2)
  T" r9 ]6 E( U4 `  0 – 线性:u'v3 ^3 c7 X. A% p+ |! J# z
  1 – 多项式:(r*u'v + coef0)^degree/ [$ d4 i! d; l$ x" o$ g
  2 – RBF函数:exp(-r|u-v|^2)
( _! v) m4 b7 x4 o. F; ?  3 –sigmoid:tanh(r*u'v + coef0)" t  R) x4 i3 o+ e7 T4 e) L
  U0 A' ]) C& k5 f$ H
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)
, O& \7 u4 L$ R) _6 ^
& }" o$ E, i: m, C- j-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1),惩罚系数9 L8 @% P1 [. k+ t( u. _
1 c- H; h9 W3 ^( W$ O
-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)
1 z$ W+ g0 s' m, W$ j
, d2 j8 U: ^6 `# A: ^8 I-p p:设置e -SVR 中损失函数p的值(默认0.1)$ u7 t  S* D5 B0 o

& W) I8 V6 M0 s2 v2 i* F-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
& \0 m# C" i; ?4 P: |
) a8 d  I' g" G: h% a+ j-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
  j4 Q- q. b) G9 ~$ ?, F
3 Y' r- Z  s5 t8 }+ s" P* m-v n: n-fold交互检验模式,n为fold的个数,必须大于等于22 z- v. F* }* @! v1 q) z

2 ]3 [$ o( t% w: R4 J: @4 r+ [1 i! ~5 r+ ]( W$ X

3 F/ N: w6 f/ p  A# plibsvm使用误区----------------------
2 `* ^: c( r) T6 m. i" U6 W) g: h- t2 N
7 G8 t8 h8 k9 b9 @! C5 s(1) 直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。' b3 Q* [% e1 i* L. p( n. C; b- l& g
8 Q# I! {. b) u; I5 ~/ S5 y4 j) K
(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。" ]" E* y5 ^) n
a) 在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。2 V/ [, x% O5 [" ^
b) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。
1 B" c# l: }9 `$ k$ H+ ?9 y2 a(3) 样本数<<特征数的情况:推荐使用线性核,可以达到与RBF同样的性能。
& C, e, p$ i& O
" |' @/ l# d( R3 K1 T& p1 V(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。
3 M# q) _# @$ j5 B
: F( ]6 N$ j# G4 [(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数( x& _" W6 v% n; o
. Y5 x2 ^. e* y( N' C

  s+ r- R6 K6 Z; L4 _' f* \0 _0 ]0 A* }1 o
* c" H" V9 U6 m: z5 Q) y
; B& u; j- r( P+ e6 B, f: J6 E

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 17:33 , Processed in 0.171875 second(s), 23 queries , Gzip On.

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

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

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