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

matlab中libsvm的svmtrain函数用法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这里的LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用。2 Z' @1 ]* ?( @8 U& Y5 G
" J; z% e& P: d4 k: U) q( O
注意不是matlab自带的svm实现函数,自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题,参数可调节,功能更强大。
4 K2 ~6 Z2 @: H
0 P% U: C1 L# }4 Z! z3 Alibsvm的配置很简单,只需要下载高级版本的matlab和libsvm,VC或VS编译实现很简单的,这里就不细讲了。
4 o) w$ f4 t/ {1 |1 q
2 T2 J( T, y% K& V两个步骤:训练建模——>模型预测
, G: s! T2 m/ m" E- b& A( L: r. [( F2 A4 x/ i
分类  model = svmtrain(trainlabel, traindata, '-s 0 -t 2 -c 1.2 -g 2.8');
3 e+ @( s( K$ C( O" O/ }: O8 C" t: Y# t  d4 w1 x" \- D
回归  model = svmtrain(trainlabel, traindata, '-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');/ i% \3 u9 @2 B7 E, Y
5 ]  i+ I7 q, Z' Z* U" n2 {$ L! ^. ^$ S
参数说明:
3 F& f3 t0 A) w! `8 A# a$ t/ g# J4 N
0 `. |  ]0 G" a8 I: F: \-s svm类型:SVM设置类型(默认0)8 o  l* \& F- }8 ~
  0 -- C-SVC2 o: G9 l" A! I7 e2 D+ I' t
  1 --v-SVC
" f9 ~6 h& T2 p- ?5 k& B6 y2 X/ [  2 – 一类SVM( m9 [9 }, |. U; n; B0 p. ^" x
  3 -- e -SVR4 |3 w# W! ~$ A* ?* c
  4 -- v-SVR$ [" D+ N6 a, Z$ o4 w

. D0 ]" m6 X5 }8 |  d& _-t 核函数类型:核函数设置类型(默认2)
0 o. V# {2 k# L$ U7 d  0 – 线性:u'v7 F$ ]8 ^+ _1 Q% X
  1 – 多项式:(r*u'v + coef0)^degree
. f/ @- |5 {/ o& k  2 – RBF函数:exp(-r|u-v|^2)7 l. z1 ?& Y; }, ?5 ]8 E
  3 –sigmoid:tanh(r*u'v + coef0)! x' i1 t( X% R5 Z/ n& X* O

7 k: q# o- c" T) ?/ V-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)( V' N, \9 C) n6 V/ t: @; e: a
7 y. H5 Y* l( w
-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1),惩罚系数
+ w' ?2 @: x4 L
, ]8 P% P+ N0 w' z* o-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)' p" S- R* v2 \1 }: G- O( o

$ H) r$ _2 m9 \2 l& ?( c* z-p p:设置e -SVR 中损失函数p的值(默认0.1)
# q9 @, \& U" j/ J( Y" X% k# x* c2 A! O4 h6 P! ^! _) w
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
7 N# d3 N3 W3 E" M% c/ ?% n! t. S- T
-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
1 U4 S! v6 p8 k8 c2 j6 r; w; p' b# x* @2 W( Z; }8 N
-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2
" ]4 m8 u9 F- f. ~* Q6 ^6 L- y
% T+ W! X4 w' E: \6 W7 `& K! M* p/ Q4 P5 I) s) |# J: ]+ z
% V2 G" J2 {) b, P' e
libsvm使用误区----------------------
! U; [2 @+ R6 x
7 G" ]! p4 m- t, F% u9 Q* D, d(1) 直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。, D1 P8 ^, b4 ]

1 k1 q! t' N! l/ d(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。6 A+ E! k: g3 W& O) u2 k7 K8 Q9 b  j1 n
a) 在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。$ J  n2 M: i, V) z" }% m' L' ^. `
b) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。: _6 _$ I/ \+ S3 m* |& \" u
(3) 样本数<<特征数的情况:推荐使用线性核,可以达到与RBF同样的性能。
5 q7 T4 c  E4 \( l2 }% b/ Y5 Q9 l( ?( t  w* f3 U% C6 \0 [
(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。
3 N$ `: G8 F! p2 q9 ?" r6 a
: R, j# b  ?+ Q0 t" |; ?(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数
5 B; u' a- M- B+ a' c( n' Z9 z0 e# D$ a* e6 `4 x

; v3 I# D1 j4 F
, b% F2 o, b1 [( u
; v( m0 s# C1 n0 `# x0 d0 {8 m% Z6 C4 S1 N

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-6 14:05 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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