mangoily的个人博客分享 http://blog.sciencenet.cn/u/mangoily

博文

R中的svm

已有 4153 次阅读 2016-12-1 15:47 |系统分类:科研笔记|关键词:学者

svm理解:

LSSVM:

最小二乘支持向量机(Least squares support vector Maehine,LSSVM)是SVM的一种变体,把问题转化成对一个

线性方程求解,所需计算资源少,具有较高的准确率。


~~~~~~~~~~~~~~~~~~~~~~~~~cut:引用别人的话~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libsvm 工具箱和 lssvm工具箱的区别:

答:libsvm工具箱是用 SMO算法来求解 svm模型中的那个最优化问题的解。
      lssvm工具箱是用最小二乘算法来求解 svm模型中的那个最优化问题的解。
这就是libsvm 工具箱和 lssvm工具箱的区别

PS:: MATLAB自带的svm实现函数与libsvm差别小议:
1 MATLAB自带的svm实现函数仅有的模型是C-SVC(C-support vector classification) libsvm工具箱有C-SVC(C-support vector classification),nu-SVC(nu-support vector classification),one-class SVM(distribution estimation),epsilon-SVR(epsilon-support vector regression),nu-SVR(nu-support vector regression)等多种模型可供使用。
2 MATLAB自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题。
3 MATLAB自带的svm实现函数仅支持二分类问题,多分类问题需按照多分类的相应算法编程实现;而libsvm采用1v1算法支持多分类。
4 MATLAB自带的svm实现函数采用RBF核函数时无法调节核函数的参数gamma,貌似仅能用默认的;而libsvm可以进行该参数的调节。
5 libsvm中的二次规划问题的解决算法是SMO;而MATLAB自带的svm实现函数中二次规划问题的解法有三种可以选择:经典二次方法;SMO;最小二乘。(这个是我目前发现的MATLAB自带的svm实现函数唯一的优点~
        在以上的一些对比下,我个人建议目前svm的实现还是使用libsvm(这个应该是目前最好用的svm工具箱),当然MATLAB自带的svm实现函数对于简单问题也可使用,MATLAB自带的svm实现函数可能会在更加新的版本里面进行完善,我也曾尝试用MATLAB自带的svm实现函数来进行重新封装实现libsvm中的所有功能但工作量有些大~

~~~~~~~~~~~~~~~~~~~~~~~cut:引用别人的话~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

可以参考Training ν-Support Vector Regression- Theory and Algorithms.pdf


to do list:

ARIMA一SVM



关于在matlab中适用libsvm:

http://blog.sina.com.cn/s/blog_6a41348f0101ep7w.html

在R中使用的博文:

http://blog.sina.com.cn/s/blog_6ab063770102vwup.html

R 中svm的参数

decision.values = TRUE,probability = T

可以看到,两两组合有k(k-1)个分类器,第一行投票setosa、setosa、versicolor,所以概率上是setosa很高

   setosa/versicolor  setosa/virginica versicolor/virginica         setosa  versicolor    virginica
1           1.1961523        1.0917574           0.670881001    0.979858480 0.011735539 0.008405980
2           1.0646207        1.0561852           0.848351782    0.972122627 0.018875660 0.009001713
3           1.1808415        1.0745422           0.643979823    0.978531389 0.012386896 0.009081715
4           1.1106992        1.0530122           0.678204104    0.974306386 0.015938338 0.009755276
5           1.1853301        1.0943138           0.558740545    0.979000412 0.012070757 0.008928831
6           1.0811618        1.0943843           0.553844186    0.973242016 0.017453410 0.009304574
7           1.1448311        1.0392875           0.568047307    0.975160289 0.014021169 0.010818542
8           1.1937271        1.0845292           0.729777488    0.979735842 0.011881315 0.008382843
9           0.9995967        1.0313068           0.592235069    0.965043725 0.023491575 0.011464700


使用tune.svm调试参数cost,和gamma:

tmp_c <- -2:3

Cs = 10^(tmp_c)

gm = 10^(tmp_c-2)

tc <- tune.control(cross = 5)

prioir_svm <- tune.svm(f~.,data=train_svm, cost = Cs,gamma = gm,

                      tunecontrol = tc)



用于阅读的参考文献

e1071.pdf

libsvm.ps

A Practical Guide to Support Vector Classification.pdf



https://m.sciencenet.cn/blog-3083238-1018044.html

上一篇:matlab cvx + yalmip
下一篇:R 中作图的图标问题汇总

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-23 19:42

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部