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

matlab中libsvm的svmtrain函数用法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这里的LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用。
4 U- ]4 n0 T; S# u* {
- \1 [# b8 R% a( f3 h注意不是matlab自带的svm实现函数,自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题,参数可调节,功能更强大。8 [( ~+ `5 M+ T8 }, O. h, I& @
: a- h3 M- f$ u( g
libsvm的配置很简单,只需要下载高级版本的matlab和libsvm,VC或VS编译实现很简单的,这里就不细讲了。6 ~5 L3 d3 c. g
# F7 p4 t! o- J* Z. e' u
两个步骤:训练建模——>模型预测
; A$ \. S+ c$ ^4 @
! M5 _! p4 I5 |! K. i分类  model = svmtrain(trainlabel, traindata, '-s 0 -t 2 -c 1.2 -g 2.8');
0 C5 C: y6 |# M: F8 M: i% L, s4 e7 C5 H7 n$ w- s; b! O  a- x8 b; n
回归  model = svmtrain(trainlabel, traindata, '-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');0 X7 e. @, r2 e9 h% z% I2 h
  q% a# d% q5 u) g
参数说明:5 q  w" t0 A8 `* I' O* _
! Q) a0 n; g, s
-s svm类型:SVM设置类型(默认0)
6 n, v( c* E  X+ L! ?  0 -- C-SVC; g! s% X9 ?' y/ N5 s
  1 --v-SVC1 _  A% t8 G4 b* m' \# b! ?. h7 T
  2 – 一类SVM
# s' p. d7 c: w  ^  P: u3 B/ d' O  3 -- e -SVR
7 ?* Z4 a8 {% q0 v, Q9 f6 ]& u  4 -- v-SVR
) {$ y/ \. R' R/ B% e" h) |4 p1 I: ]1 Q; A0 o, g
-t 核函数类型:核函数设置类型(默认2)9 s2 g5 C! e3 I' \1 P0 A6 ~/ t
  0 – 线性:u'v
, r# b  k* V5 j0 B' e) F% \  c  1 – 多项式:(r*u'v + coef0)^degree
2 o. `) L, H9 W; P6 z: m  2 – RBF函数:exp(-r|u-v|^2)
9 s. b' s' B8 }  3 –sigmoid:tanh(r*u'v + coef0)
7 D- m' t( l- N7 B& Q, D0 ~5 a0 H" U
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数), s( d- i' ^( o6 U" i

; _5 s/ R# L* v5 W  E) S1 _3 R-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1),惩罚系数
! S8 c5 M, a8 b& e$ D) _# V* H4 O1 @- |) l% ?; e2 L- I  A' k
-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)" `7 d6 V) w) q- z( D) B$ w
$ y# M8 K6 U; [
-p p:设置e -SVR 中损失函数p的值(默认0.1)
9 R- E- q4 q4 h
6 M# h! T/ g$ y2 w8 Z  c) \' D/ w! ], M-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
  f2 n! S" v* X
5 T0 @. q* Z: X9 T) U  q-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)# l; j% f: Z1 ^6 Q: l: ]! ^

  ~1 i) W& F  a2 f3 b! }! \-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2
; K6 n; ~* E5 @$ v3 u! G8 y. e
, M, p  y$ @4 F  z" Q2 W+ M
, M& S" f, W3 H8 I" X* D
, M; \/ j3 K  m: z: Flibsvm使用误区----------------------' e; u; U. C0 i4 R

& A" ^( T2 d( z  F1 c5 m(1) 直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。
) R! C: v5 R. P5 H& z# l+ H2 x+ y/ s7 _; i* O4 |) f5 g
(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。8 F$ L, E$ [9 o& I3 i; R  c
a) 在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。
( v$ V: A( y! R/ lb) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。: s  r, g0 i. P9 S
(3) 样本数<<特征数的情况:推荐使用线性核,可以达到与RBF同样的性能。& ~- l' b% ]7 R8 U
& S  A$ F! `; R& ~6 U0 p- \
(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。" f+ r* n( J8 o2 r
4 J+ s9 }1 ^% {4 F# i7 i$ f, h# q9 \
(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数
0 q% k) l2 H5 }0 c% b8 r. i3 X, |5 Z7 v  i! v+ H6 d( K9 t0 b

5 l, _; h/ K9 v0 r; W, }9 }4 d/ b9 `8 D: f. n3 H# f& @
9 z0 x, G) R6 o9 J

+ d$ k! a6 |2 b. ~6 ?: C) |

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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