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

matlab中libsvm的svmtrain函数用法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这里的LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用。9 W" D0 M0 L) S* [) @7 R1 f* n  M

2 C" Z9 X+ W6 ?6 k5 z注意不是matlab自带的svm实现函数,自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题,参数可调节,功能更强大。
% g4 m; q6 \7 z6 F
5 ~/ A) v! G9 x9 i5 R7 glibsvm的配置很简单,只需要下载高级版本的matlab和libsvm,VC或VS编译实现很简单的,这里就不细讲了。% U7 O' a' b  N7 h) t! F9 n
( I/ B/ b. z# R! v; x
两个步骤:训练建模——>模型预测$ k( P' Z8 _0 v4 E# A; j3 j

' S; Z6 `& g' }8 o7 t1 s8 C& c! ^分类  model = svmtrain(trainlabel, traindata, '-s 0 -t 2 -c 1.2 -g 2.8');2 ]/ y2 V! c  [) T; ]$ [
6 y8 a: ~5 q% @7 b1 r
回归  model = svmtrain(trainlabel, traindata, '-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');* _* W  g- I2 @: \$ n5 W

$ Z' a; ^5 q3 w- u: k+ o$ g8 ^参数说明:
* B& W2 ~9 I4 n0 z: M: t! ^4 u% [2 O) z2 m6 T- {( ]
-s svm类型:SVM设置类型(默认0)
, q3 \5 ]7 A5 y, l2 w/ w  t. H  0 -- C-SVC
2 I+ N7 F1 P) X7 ?5 g* B  1 --v-SVC5 d" z! J  _3 z9 A0 P& u' n
  2 – 一类SVM0 c( T$ C4 g& n% J2 F4 x1 e
  3 -- e -SVR
( Z* w4 F3 f! \6 @  4 -- v-SVR, W$ [4 u7 g$ `6 U

- U$ G6 V7 S. G, d- b-t 核函数类型:核函数设置类型(默认2)
. G  f0 S  y5 F7 Q  0 – 线性:u'v
. `% H' G, [0 ~3 @. C  1 – 多项式:(r*u'v + coef0)^degree$ d' t7 _' C! [$ E$ W. w
  2 – RBF函数:exp(-r|u-v|^2)1 K: w1 a" e5 U7 T: u' x! x8 _
  3 –sigmoid:tanh(r*u'v + coef0)2 h+ e, o4 v2 C  o, v" M

% v% I( N# [/ S+ ]' y+ L-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)
. J3 b3 u# L7 r( |' |, s$ J! V/ A3 {: v! E
-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1),惩罚系数
  R* _& E1 ?0 g* W( q7 Q
0 Y3 X" ?& F$ l! d: H5 {-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)$ |0 _4 j) y3 C3 U  ~$ T3 W% f6 S
0 X) x8 ^* \. q8 i# s: b
-p p:设置e -SVR 中损失函数p的值(默认0.1)6 I! y- z; r; G5 N

- t- u+ Y' y5 i-d degree:核函数中的degree设置(针对多项式核函数)(默认3)5 b* A' i6 }5 P; Q  F! ^" ^
1 d. f# H/ u8 J! v! y
-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
9 p& f# x* r. J0 a7 S; [9 V& Y; D
0 D- Y. S/ z% d-v n: n-fold交互检验模式,n为fold的个数,必须大于等于26 R" P7 r% a% r3 c  ^8 F6 E5 U
3 U2 y. J- u6 X4 E7 {: a

5 K+ q4 B0 y; x9 b/ v# a& ~& G3 ?, F+ d9 K, w9 M1 {  l
libsvm使用误区----------------------8 [; d# o: B" w( q1 A. r
* N8 U( }8 F& r0 i
(1) 直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。
- h( X$ z3 {2 q+ n
' _1 M- L5 D/ o(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。
( R6 X+ D& j5 {+ Ha) 在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。
7 G( z& w$ x8 v, e5 ~8 T* Xb) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。- J, G+ v& u$ P
(3) 样本数<<特征数的情况:推荐使用线性核,可以达到与RBF同样的性能。6 I! Y2 |9 r7 s& Y  h- L% ?' q( O

. @, w: s* @7 D2 F5 b6 t- U(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。; \% \$ M* t0 p1 {! e  F
  U- Z( u; R# ?9 O. B
(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数
/ F7 f2 v& E: L6 G+ R
$ w# t  _/ E0 k* _5 m! K9 \- e4 C

2 |( v7 h6 p! ^0 Z9 x4 d9 D3 c4 p& |
! Q3 Q9 ^" y: u% l) O3 T+ W& S- O+ k+ S

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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