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

matlab中libsvm的svmtrain函数用法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这里的LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用。( w! `$ H& Q! z2 H: }
! h+ u1 V% o( ?( _' r" T# J7 {% V
注意不是matlab自带的svm实现函数,自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题,参数可调节,功能更强大。
7 Y6 C' y; h( @! d$ Q( K
& w# v+ z, f0 G7 Qlibsvm的配置很简单,只需要下载高级版本的matlab和libsvm,VC或VS编译实现很简单的,这里就不细讲了。& Z4 _: K6 j6 U

) {- `5 H. m# D4 J7 i3 \两个步骤:训练建模——>模型预测* b( p6 j  a" d& f& {$ j: b" s

& \  N$ h0 w8 g1 T. H分类  model = svmtrain(trainlabel, traindata, '-s 0 -t 2 -c 1.2 -g 2.8');. x/ j& Y. M- f
8 V5 b$ g: K; O% U; e+ Y
回归  model = svmtrain(trainlabel, traindata, '-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');" v) [# b8 R  d

* S& D, t! t4 [4 {% I参数说明:
1 L: i1 p) Z3 y2 ^6 k" W
' b$ c" e) W7 e. l8 l' v4 L-s svm类型:SVM设置类型(默认0)% a8 T: r4 f. n+ o( `# m0 l
  0 -- C-SVC
1 C$ d( u  R, [6 m5 X  1 --v-SVC
& _0 O8 ]( e! Z' I  2 – 一类SVM5 ^7 k1 A' \/ _- I  {
  3 -- e -SVR
# C. e: x: f1 |, H( T9 X  4 -- v-SVR
% w6 x6 l: O9 S# ^
1 I' |/ y6 G1 X-t 核函数类型:核函数设置类型(默认2)
6 ?# w- J- n! V6 H) M& H  0 – 线性:u'v
6 l' [8 u3 [9 b6 ]. |$ K  1 – 多项式:(r*u'v + coef0)^degree
1 r! O. t  N4 Y2 K: v  2 – RBF函数:exp(-r|u-v|^2)" n% `$ Q. p% k  h, a3 |0 L* l- {- q
  3 –sigmoid:tanh(r*u'v + coef0)* ], w2 }) L  z. y& S3 }
; S" J: q& o1 ?; T
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)
7 {7 ^1 V! S3 r0 v* }8 q8 ?
* w$ O6 \, Z/ S$ p$ {1 V. ~-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1),惩罚系数6 i) b* B  C5 Q1 M1 E3 D+ d) J: u$ {
2 ^) ^7 i; R  x/ J4 S% s
-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5), y- H5 I" K% b
4 i5 J( y0 G3 M% \" c4 z6 d
-p p:设置e -SVR 中损失函数p的值(默认0.1)/ Y! R% c5 v4 b& A/ U5 V7 _

3 i" u' }3 i  @7 k9 r6 o  F-d degree:核函数中的degree设置(针对多项式核函数)(默认3)) \7 k: F$ L9 q1 f( u

3 L( o8 N9 h4 Z; E: e-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
) c3 w9 A0 ]$ y* f# H) a- Z3 o7 Z/ `% a* M/ ]6 `
-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2& [8 d5 P& [8 X$ k( C
7 \6 c) N' O2 ~

7 D7 n# x, {3 P7 I$ x  [3 y) d( I: f# L0 i) Z
libsvm使用误区----------------------* J: o4 g& ^% e$ d& B

( I1 F  l7 c$ ?: d(1) 直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。
7 u# M8 P- \3 k1 W
$ F) c. m; S; l(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。$ |- g' v' Y7 a) f8 K
a) 在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。( m5 L( G; C" a+ C: L
b) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。+ k0 ~/ K6 ?% L9 v
(3) 样本数<<特征数的情况:推荐使用线性核,可以达到与RBF同样的性能。
' V. r" w% p) W( E8 P% Z
8 [% X% R8 K# g$ j# X( x+ s; B& O(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。
" J7 H) e+ X4 D* m1 j% y' i3 Q1 K6 ?) K3 J$ ~+ q5 j. [
(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数9 {1 a- p. v+ _
+ F; L$ Y: _8 x5 z

+ b$ E9 i- u0 ^" ^4 R$ R2 G* R+ z1 o+ W( g5 A3 Y7 K. x" U( _

: F5 ~) b2 N- r* O; Z- W
. B& V" C5 t# I5 c/ f' l# D& o

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 15:05 , Processed in 0.218750 second(s), 24 queries , Gzip On.

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

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

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