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

matlab中libsvm的svmtrain函数用法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这里的LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用。
% V  X0 W8 y  {. l
  z4 O/ a& I5 ~  n% |9 w注意不是matlab自带的svm实现函数,自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题,参数可调节,功能更强大。: Q6 ~' e& R0 O, F# F( w5 k/ U
& s8 l' e. V& R% n# |6 W, N% y4 j
libsvm的配置很简单,只需要下载高级版本的matlab和libsvm,VC或VS编译实现很简单的,这里就不细讲了。
& `+ R1 K+ a/ t1 ]( q5 F( R6 W% i! _9 ~
两个步骤:训练建模——>模型预测
1 w, ^- q9 |; d8 ]; U: f/ q/ n+ M5 S. b8 u0 k
分类  model = svmtrain(trainlabel, traindata, '-s 0 -t 2 -c 1.2 -g 2.8');" A# z' z& y* ~7 l* Q& n
2 Z; P* s- n  `* A  z
回归  model = svmtrain(trainlabel, traindata, '-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');
; h: f) S; t6 l6 L/ V4 x. z& I! i/ W5 |4 o4 I0 r* a4 W  y
参数说明:. C8 o- u" x, e5 j! W

& {; O7 T  p) x2 R. C-s svm类型:SVM设置类型(默认0)/ U) D8 t1 n% a% ^* e  i2 E
  0 -- C-SVC
- |3 h, U6 X5 G  {5 O  1 --v-SVC
1 |+ Q/ x1 r. _" [" l$ c# X! R, Z. A  2 – 一类SVM- h; F5 O. A$ w: \5 T, Z6 k0 z: w4 }
  3 -- e -SVR4 I" ^" H9 t( n0 w: m. r4 V; j
  4 -- v-SVR
- }0 a- k  k, o# K4 f# n9 z# D) ]9 ?8 N- T9 v; q4 P9 A6 V
-t 核函数类型:核函数设置类型(默认2)+ v9 y% Z: n. u, \6 e# u% L+ F
  0 – 线性:u'v- `$ g4 r( P0 [: t% U, R
  1 – 多项式:(r*u'v + coef0)^degree9 O# n+ y) g! g% q2 i
  2 – RBF函数:exp(-r|u-v|^2)3 i- R& X, I7 @8 e( z$ P1 |/ u
  3 –sigmoid:tanh(r*u'v + coef0)7 |5 K1 `. X/ b5 o) E6 q! i0 Y
# [! h5 x# b2 A; `
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)/ d9 x1 s! }  T4 t7 M4 ?% k
  t; x% W, {8 P8 o8 w( ~% [
-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1),惩罚系数- W! H$ I8 _! c$ ~8 D
$ s4 D2 Q  N! P5 R1 z
-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5), f. p1 A3 Y; m

7 }4 G8 _3 {# d! A6 M3 ?-p p:设置e -SVR 中损失函数p的值(默认0.1)
& G* \4 w5 i6 Y; o$ b$ T! r' t& a0 _
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
/ K7 K) z% u+ Z* V0 H$ k# G/ [% b% t
-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
* ?8 K" q( `  i( X1 e* R9 Z
2 N+ X7 i( C  Q# v6 D4 E-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2. ]( `% `, ?# N

4 P, v* o( X! T, \2 a; ~; I8 T
+ `: ?* P* ?5 a- w9 ~- h- E
2 K+ x4 |! C/ x: blibsvm使用误区----------------------, @( V; a. z8 ~0 ?' s: V4 E

% W$ N" j9 ?  O/ |(1) 直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。6 i9 C' L# W. H. Z, w5 l3 ~" k

& G( Q7 {; n' _(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。0 ]0 h. R0 Z  {2 _
a) 在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。
9 `" h8 F; H& @* I8 ]b) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。
  _+ D  _; F$ h  S, I+ L(3) 样本数<<特征数的情况:推荐使用线性核,可以达到与RBF同样的性能。
! l7 B- a6 \/ Q( a0 ]; N
: h4 O# b6 \# f8 T(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。
3 C4 |8 x$ P+ c, e3 ]* l) u! F: G. {7 F$ s& M
(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数
# Z% y- g) d. \* {3 {4 H
% S, R5 T9 M+ Z0 h6 O1 u- Y
; w& T9 T* \; f* v0 V3 A$ ~. F8 w" U" F% O3 X; O

; k6 h  O1 H7 o) o
9 a$ G$ i8 y) f

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-20 17:47 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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