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

matlab中libsvm的svmtrain函数用法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这里的LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用。
* Q8 C  g- f8 Z! }! D  b1 Q. w( I/ x7 `! p. y% k
注意不是matlab自带的svm实现函数,自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题,参数可调节,功能更强大。- @( m+ S# F9 b$ ~3 Y0 b
1 C( _* P/ x! E6 Y+ Q- g# v; l  w2 c
libsvm的配置很简单,只需要下载高级版本的matlab和libsvm,VC或VS编译实现很简单的,这里就不细讲了。
" N/ g% E7 Q9 }3 @0 N: j4 K/ k& I. z1 B/ f9 E0 p* U
两个步骤:训练建模——>模型预测
, k. |$ b( h+ l4 D( N* g3 l, U8 p$ c" v$ N! m3 m1 [
分类  model = svmtrain(trainlabel, traindata, '-s 0 -t 2 -c 1.2 -g 2.8');
& Q- Z; h: g7 W2 x2 D
, Y3 b% g& \. n& j1 E回归  model = svmtrain(trainlabel, traindata, '-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');" S' \$ ?3 U' V# U9 P1 @9 }) I* h

4 `9 t: u) p  d. x2 S参数说明:
6 J3 R! h7 |( Q8 P) T
+ ]- w/ `; O  e-s svm类型:SVM设置类型(默认0)# f& x' f; Y0 _$ T1 Q% f
  0 -- C-SVC
! e/ y5 Z* f* O! D  1 --v-SVC
- |% U+ c7 x" ^  2 – 一类SVM! s0 o) m( I& n  m5 g# I$ C  J4 o
  3 -- e -SVR! J  l- S" F/ n, n* ~
  4 -- v-SVR# I2 ], k3 F: Y# w5 P# W
" m9 @! t2 f2 N! @. x
-t 核函数类型:核函数设置类型(默认2)
, A' d2 b  I0 M- Y' D: M  0 – 线性:u'v
4 S) q9 I2 ?% J6 q: C3 S  1 – 多项式:(r*u'v + coef0)^degree' m. z, _  F4 J
  2 – RBF函数:exp(-r|u-v|^2)
2 Q; I. L7 ]) n  3 –sigmoid:tanh(r*u'v + coef0)
4 `4 J: @4 J( \8 `/ d  S* Y$ g# D+ ]% P$ t, o2 a
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)' M5 u' y" F  I- A, [. ^; m$ _

% ^) p0 S2 o' l8 d3 j1 j  L" F-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1),惩罚系数
/ Y" i7 w6 R1 h& X- |+ i9 t) M7 |7 }) a, s- e6 Z3 [4 u  C
-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)
! n3 I: A* w* V' ]1 R) S8 I" |- l9 P
-p p:设置e -SVR 中损失函数p的值(默认0.1)! H5 v' C6 \+ n. D
* s' \( Q! @4 `% h$ f6 _2 {
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)+ C7 C6 X. X+ ~6 b4 h4 A

- d8 |% n( k1 S' S-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
7 l7 V. K/ T* _+ r4 f
* m! M, `  h1 Y5 W-v n: n-fold交互检验模式,n为fold的个数,必须大于等于24 C8 P2 G) x3 W/ x, h; k" G

6 o5 c/ [" M) `: P8 M, |2 o5 g4 ~0 d  j/ s9 Z) g) I- l
2 ~1 s/ f) z3 ?3 U! E7 k
libsvm使用误区----------------------2 C4 b- a2 K6 ^0 m( S( W, P

  j: Z7 F% ]$ R6 g0 p  I6 |# w(1) 直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。1 B  s: f3 h1 _4 r, T8 u1 L
/ b, z4 K+ X' T
(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。# k1 R5 m+ R/ O* m. n
a) 在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。
% d: ?2 O" d6 ?4 m% P6 bb) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。: N+ J$ O' p7 \! c2 l4 s% [1 ^
(3) 样本数<<特征数的情况:推荐使用线性核,可以达到与RBF同样的性能。
3 y! {& B% Y5 x" c5 B5 M: s: s0 A% p% E
(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。9 d) n, x  d$ u0 A
2 \% z8 L5 R: P% a
(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数
% O8 e5 E! w4 J
& S  w# b" ?$ P' U3 P" f; G' C* M. W/ x) [# w; M
: s( b( k1 T" P# X" T% f
! o# B( a4 L2 {; }/ W% r
* N. D8 S, R7 C* m7 v

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-25 11:13 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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