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

matlab中libsvm的svmtrain函数用法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这里的LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用。
8 \6 b1 A3 F; k6 r: A( O- `$ ^! H2 V0 w$ w/ f; i/ n6 U. Y5 s& B
注意不是matlab自带的svm实现函数,自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题,参数可调节,功能更强大。
  a, q6 i( h' _' q
& S) w2 r! S5 z/ |/ Klibsvm的配置很简单,只需要下载高级版本的matlab和libsvm,VC或VS编译实现很简单的,这里就不细讲了。
2 B0 i$ s8 z8 p6 `! [7 w3 s9 r2 `/ }9 G8 j* |; c! `
两个步骤:训练建模——>模型预测
# ~2 t3 A2 U2 k6 s8 W6 \! X& l/ }, `( G
分类  model = svmtrain(trainlabel, traindata, '-s 0 -t 2 -c 1.2 -g 2.8');
1 ]9 b0 z' L" O$ U9 J, h. H$ g) l  K% b- @
回归  model = svmtrain(trainlabel, traindata, '-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');5 F! ^( U9 W/ j4 h; W
6 s' e% R6 w' J5 e
参数说明:
: U+ W+ h3 \9 M* X. E1 @7 b  U' W, n6 A5 _; [8 }& U
-s svm类型:SVM设置类型(默认0)' f2 W' i1 h* ]' @
  0 -- C-SVC
1 o. \3 @4 \- R; z- [) e% \  1 --v-SVC0 J5 H+ @6 G. k/ `
  2 – 一类SVM8 d% G: N* a' j- I; H" K
  3 -- e -SVR' H! B5 ?# B9 O9 k0 Y
  4 -- v-SVR- e: j* F6 {" m6 w' H7 N6 R  e

+ [0 V( I5 Y3 [) T+ e-t 核函数类型:核函数设置类型(默认2)
- k$ R% U& {$ T/ \  0 – 线性:u'v! \0 E! U4 |  w( t6 H
  1 – 多项式:(r*u'v + coef0)^degree
5 E: y7 f% r' e( r7 i  2 – RBF函数:exp(-r|u-v|^2)
* u; a4 {6 p+ T3 k: J; X  3 –sigmoid:tanh(r*u'v + coef0)% u2 P0 J0 n) {* t% T
5 h6 V1 A+ ^, B- u
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)% a/ Q8 s) F1 M: a

; m4 H2 L" t: j0 x-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1),惩罚系数
! A" Y4 z/ I, L, @0 s4 h4 v5 L
% c  ?  O2 b5 Z: |, J-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)
) [# b( V- W1 |' l  y/ _8 V+ [$ _8 e! K) L! ?
-p p:设置e -SVR 中损失函数p的值(默认0.1)* `( J$ x$ w. u; l# c, {
! P; m# {3 L% s& d
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)" a$ w& p7 L7 F2 ?" y7 Y9 I, t

# t, M6 R& x" ], p. O7 |( {! I-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
! H& Z0 }3 X( n) r6 S2 Q3 ?5 P' i& ?. S( b9 H" R# E* K9 U: N
-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2
* z% C- d% F$ s+ S8 I
: u& d- `' z, H" Q6 l
* k+ v& ~3 \2 g. {  L) S# ^2 d( V' J' |- p0 q) ?! T* F
libsvm使用误区----------------------# D% j# F( y; [. _4 Y2 _+ \
1 X; K( j- F- q8 O7 l( N# [0 c% P5 x
(1) 直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。
5 S# f" s7 l& d: @! b0 N% \2 J' D# g, J  e& x9 x) f
(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。# B% U- o- [* ?
a) 在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。
7 U: r" }$ g, }" M* s# nb) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。+ g: _$ L+ _9 l* i
(3) 样本数<<特征数的情况:推荐使用线性核,可以达到与RBF同样的性能。0 O) S# i" [2 O9 U; J5 d+ b! U
1 n" m% }* e5 ~) v6 s( M; G! H
(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。3 q& Z) T  A! L2 e4 i+ E/ {: P( n
* y& Q3 F+ @1 s5 x
(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数
8 o3 ]& `9 Q, K' X, M
! g: W( c, d( y5 S0 u
3 M! M" j$ s. X* V/ Y
2 D# t- B! o1 W6 Y- i( _8 S3 i1 x" K5 x! h4 ?' z$ x7 {& v& d
8 B4 q4 v; {5 ~9 _5 O' p* L

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-8 01:44 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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