《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 473803|回复: 3095
收起左侧

[教程] 关于SVM的那点破事[faruto长期更新整理]

    [复制链接]

签到天数: 12 天

[LV.3]偶尔看看II

发表于 2010-11-2 14:11:00 | 显示全部楼层 |阅读模式
本帖最后由 faruto 于 2011-7-16 15:14 编辑

关于SVM的那点破事[faruto长期更新整理]


简易目录:

写在前面的碎碎念;
Libsvm下载
SVM入门;
Libsvm安装与使用(待完善);
SVM相关文献资料;
SVM相关书籍推荐;
SVM[Libsvm]相关应用(待完善);
SVM相关杂帖(待完善);
写在最后的闲扯淡;
Faruto的联系方式(讨论MATLAB相关问题或者具体一些SVM相关问题或者再具体一些libsvm使用相关问题或者再再具体一些 … …);

===================无聊的分隔线=========================

写在前面的碎碎念 by faruto        

        还记得初次接触SVM是本科大三的时候参加北师本科科研基金在管理学院系统科学那边做一个有关脑电波EEG模式识别的项目,那时候对于“机器学习”这个概念还是头一次染指,后来使用libsvm工具箱来做分类和回归,在用的过程中来学习SVM底层的统计学习理论,再后来自己完善提升libsvm的matlab版本,在林智仁先生的libsvm-mat基础上自己编写了一些辅助函数(参数寻优什么的),后来不断完善,最终自己的libsvm-mat版本是libsvm-mat-2.89-3[FarutoUltimate3.0],方便自己使用以及论坛的一些朋友使用。
        SVM的实现工具箱有很多,但我还是认为libsvm最好用(lssvm也不错的说),我认为把这一个SVM的实现工具箱研究的透彻就够了,反正我是够用了,即如果现在需要SVM这个工具来进行分类或者回归我可以拿来libsvm-mat-2.89-3[FarutoUltimate3.0]就能熟练使用以达到解决自己的问题的目的,而不用再重新学习掌握SVM这个工具。
        其实还有一些话要说,姑且先留着吧 … …

====================
MATLAB技术论坛电子期刊第九期(2011.06)[faruto帖子集锦]
http://www.matlabsky.com/thread-17223-1-1.html
====================
《Learn SVM Step by Step 》系列视频应用篇
Libsvm的下载、安装和使用
http://www.matlabsky.com/thread-18080-1-1.html

Libsvm参数实例详解
http://www.matlabsky.com/thread-18457-1-1.html

一个实例搞定libsvm分类
http://www.matlabsky.com/thread-18521-1-1.html

一个实例搞定libsvm回归
http://www.matlabsky.com/thread-18552-1-1.html
Libsvm下载

Libsvm-mat林智仁先生的原始版本下载

libsvm官方更新[2011.04.01]:libsvm-3.1
http://www.matlabsky.com/thread-14345-1-1.html

libsvm-mat-2.91-1.zip
http://www.matlabsky.com/thread-9328-1-1.html
【说明:最新的版本为libsvm-mat-3.0-1.zip大家可以在这里下载http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 最新版本的改动是将SVM的model structure移动到了svm.h里面,对于常规用户没有影响基本和以前的都一样,只是方便一些高级用户自己进行底层代码的修改】

Libsvm-mat faruto版本下载

(更新libsvm-faruto版本归来)libsvm-3.1-[FarutoUltimate3.1Mcode]
http://www.matlabsky.com/thread-17936-1-1.html

libsvm-mat-2.89-3[FarutoUltimate3.0]
http://www.matlabsky.com/thread-9327-1-1.html

GUI版本下载【基于libsvm-mat-2.89-3[FarutoUltimate3.0]】
[原创]SVM_GUI_2.0[mcode][by_faruto]
http://www.matlabsky.com/thread-9333-1-1.html

SVM入门

我个人推荐您看这个系列帖子

SVM入门精品系列讲解目录
http://www.matlabsky.com/thread-10317-1-1.html
共有10个系列讲解,很适合SVM入门。

[整理]Libsvm官方FAQ翻译
http://www.matlabsky.com/thread-15225-1-1.html


Libsvm安装与使用(待完善);

libsvm-mat在MATLAB平台下的安装【by faruto】
http://www.matlabsky.com/thread-11925-1-1.html

如何使用libsvm进行分类【by faruto】
http://www.matlabsky.com/thread-12379-1-1.html

如何使用libsvm进行回归预测【by faruto】
http://www.matlabsky.com/thread-12390-1-1.html

利用libsvm-mat建立分类模型model参数解密【by faruto】
http://www.matlabsky.com/thread-12649-1-1.html

libsvm如何使用自定义核函数[有关-t 4 参数的使用例子]
http://www.matlabsky.com/thread-15296-1-1.html

【转】Matlab中使用libsvm进行分类预测时的标签问题再次说明
http://www.matlabsky.com/thread-12396-1-1.html

基于GridSearch的svm参数寻优
http://www.matlabsky.com/thread-12411-1-1.html

基于GA的svm参数寻优
http://www.matlabsky.com/thread-12412-1-1.html

基于PSO的svm参数寻优
http://www.matlabsky.com/thread-12414-1-1.html

线性可分模式的最优超平面的详细推导过程【支持向量机相关】
http://www.matlabsky.com/thread-12613-1-1.html


libsvm 参数说明【中英文双语版本】
http://www.matlabsky.com/thread-12380-1-1.html


这部分过一段还要完善,目前关于libsvm的安装与使用可以参看以下资源


另外一篇: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实现函数唯一的优点~)

参看在优酷上的一个有关libsvm的视频(这个是我以前在国内某论坛制作过的一个视频被网友放到了优酷上)

http://v.youku.com/v_show/id_XMTIwOTIzNTQ4.html

SVM相关文献资料

[flash]
http://player.youku.com/player.php/sid/XMTIwOTIzNTQ4/v.swf
[/flash]


关于SVM的理论相关的,在下面提供了一些资源和paper, ppt,pdf,虽然这几个资源是有限的,但我敢说足够了.原因有两个:a.下面的几个文献本身质量就很高.b.这些文献主要的SVM的参考文献已经几乎全部列出了,你可以寻径查找.

田英杰_支持向量回归机及其应用研究
http://www.matlabsky.com/thread-12841-1-1.html

Sequential Minimal Optimization for SVM
http://www.matlabsky.com/thread-13059-1-1.html


资料截图: 1.jpg

资料打包下载:
游客,如果您要查看本帖隐藏内容请回复


SVM相关书籍推荐

关于SVM的相关书籍,我个人首推这本书《MATLAB 神经网络30个案例分析》,因为我是这本书的作者之一,这本书的12-15章是有关SVM的,很不错的一本书,欢迎您购买
MATLAB 神经网络30个案例分析(加印版).jpg
购买方式:
当当
http://product.dangdang.com/prod ... 07&ref=search-1-pub
china-pub
http://www.china-pub.com/50688
卓越
http://www.amazon.cn/mn/detailApp/ref=sr_1_1?_encoding=UTF8&s=books&qid=1287536439&asin=B003HGHB9W&sr=8-1

《MATLAB 神经网络30个案例分析》官方网站(可以额外购买书籍视频)
http://video.ourmatlab.com/
书籍视频销售客服QQ:1007911579


Matlab神经网络30个案例读者交流群
http://www.matlabsky.com/thread-14315-1-1.html


书籍目录
第1章 P神经网络的数据分类——语音特征信号分类1
第2章 BP神经网络的非线性系统建模——非线性函数拟合11
第3章 遗传算法优化BP神经网络——非线性函数拟合21
第4章 神经网络遗传算法函数极值寻优——非线性函数极值寻优36
第5章 基于BP_Adaboost的强分类器设计——公司财务预警建模45
第6章 PID神经元网络解耦控制算法——多变量系统控制54
第7章 RBF网络的回归——非线性函数回归的实现65
第8章 GRNN的数据预测——基于广义回归神经网络的货运量预测73
第9章 离散Hopfield神经网络的联想记忆——数字识别81
第10章 离散Hopfield神经网络的分类——高校科研能力评价90
第11章 连续Hopfield神经网络的优化——旅行商问题优化计算100
第12章 SVM的数据分类预测——意大利葡萄酒种类识别112
第13章 SVM的参数优化——如何更好的提升分类器的性能122
第14章 SVM的回归预测分析——上证指数开盘指数预测133
第15章 SVM的信息粒化时序回归预测——上证指数开盘指数变化趋势和变化空间预测141

第16章 自组织竞争网络在模式分类中的应用——患者癌症发病预测153
第17章 SOM神经网络的数据分类——柴油机故障诊断159
第18章 Elman神经网络的数据预测——电力负荷预测模型研究170
第19章 概率神经网络的分类预测——基于PNN的变压器故障诊断176
第20章 神经网络变量筛选——基于BP的神经网络变量筛选183
.第21章 LVQ神经网络的分类——乳腺肿瘤诊断188
第22章 LVQ神经网络的预测——人脸朝向识别198
第23章 小波神经网络的时间序列预测——短时交通流量预测208
第24章 模糊神经网络的预测算法——嘉陵江水质评价218
第25章 广义神经网络的聚类算法——网络入侵聚类229
第26章 粒子群优化算法的寻优算法——非线性函数极值寻优236
第27章 遗传算法优化计算——建模自变量降维243
第28章 基于灰色神经网络的预测算法研究——订单需求预测258
第29章 基于Kohonen网络的聚类算法——网络入侵聚类268
第30章 神经网络GUI的实现——基于GUI的神经网络拟合、模式识别、聚类277
========================================================
MATLAB神经网络30个案例分析 源代码+数据{SVM}[chapter12-15]
http://www.matlabsky.com/thread-11385-1-1.html
MATLAB神经网络30个案例分析 源代码+数据 大放送目录
http://www.matlabsky.com/thread-11479-1-1.html
========================================================

还有这本书也很不错~
《支持向量机--理论、算法与拓展》
作者: 邓乃扬    田英杰   
出版社:科学出版社
ISBN:9787030250315
上架时间:2009-8-12
出版日期:2009 年8月
开本:16开
页码:244
版次:1-1
1.jpg

China-pub上的购买链接:http://www.china-pub.com/47322


SVM[Libsvm]相关应用(待完善)

基于libsvm的手写字体识别
http://www.matlabsky.com/thread-11025-1-1.html
基于libsvm的图像分割
http://www.matlabsky.com/thread-11026-1-1.html
基于SVM的基因选择(SVM-RFE算法)[SVM Recursive Feature Elimination (SVM RFE)]
基因选择算法SVM-RFE
http://www.matlabsky.com/thread-11568-1-1.html

基于平均影响值MIV的SVM变量筛选方法
http://www.matlabsky.com/thread-11569-1-1.html

基于SVM的语音特征信号分类
http://www.matlabsky.com/thread-11821-1-1.html

如何可视化libsvm的分类结果以及分类曲线
http://www.matlabsky.com/thread-12358-1-1.html

【转】文本分类入门(番外篇)特征选择与特征权重计算的区别
http://www.matlabsky.com/thread-12574-1-1.html

一些计划中将要发的帖子:
下几个帖子计划 掰饽饽说馅 的给大家说说
如何使用libsvm进行分类
如何使用libsvm进行回归
如何优化libsvm的各种参数
使用libsvm进行分类和回归的通常的流程以及注意事项

这个最有技术含量了,因为总有朋友说用libsvm做分类或者回归效果不好,我说把数据给我试一下,结果我做的效果一般都会比其要好,为啥捏?这里先简单说一点点:使用libsvm(SVM)不是简简单单的用svmtrain输入几个参数 -c -g 生成model后用svmpredict来分类或者回归,其实更重要的是前期的数据预处理和后期的参数选择(归一化范围的选取,降维算法的选取,以及最佳参数选取的算法)这些才是关键,其实说白了如果这些您都搞得很透彻的话,选择其他分类器也能做好,即这些(前期的数据预处理和后期的参数选择)做好了,选择神马分类器真的并不重要,在libsvm-mat-2.89-3[FarutoUltimate3.0]工具箱中我把常见的数据预处理方法(归一化,降维pca)和参数选择算法(grid search 暴力搜索方法,启发式GA、PSO方法)都封装好了方便大家使用,同样是用这个加强工具箱,但对于同一个测试数据集合,我敢保证肯定会有人用的效果就没有我的好,为啥捏?因为知其然不知其所以然!肯定是其仅仅是了解一些表象的使用,而对于底层到底是怎么回事没有搞清楚,这样在具体的参数调整上肯定是不行的,这也回答之前的“为什么总有朋友说用libsvm做分类或者回归效果不好,我说把数据给我试一下,结果我做的效果一般都会比其要好”的原因。

如何可视化libsvm的分类结果【虚幻的浮云~】
如何处理unbalanced label(不平衡数据标签)问题【难点问题】



SVM相关杂帖(待完善)

交叉验证(Cross Validation)方法思想简介
http://www.matlabsky.com/thread-10567-1-1.html

SVM的多分类问题
http://www.matlabsky.com/thread-9471-1-1.html

MATLAB数据归一化汇总(最全面的归一化介绍)
http://www.matlabsky.com/thread-9268-1-1.html

LibSVM程序代码注释详解
http://www.matlabsky.com/thread-9462-1-1.html

PSO资源整合工具箱
http://www.matlabsky.com/thread-9330-1-1.html

Matlab Toolbox for Dimensionality Reduction [降维工具箱]
http://www.matlabsky.com/thread-9335-1-1.html

TSVM(Transductive SVM)
http://www.matlabsky.com/thread-14257-1-1.html

Matlab神经网络30个案例读者交流群
http://www.matlabsky.com/thread-14315-1-1.html


关于matlab中princomp的使用说明讲解小例子【by faruto】
http://www.matlabsky.com/thread-11751-1-1.html

主成份分析PCA源代码
http://www.matlabsky.com/thread-11750-1-1.html


SVM相关QQ讨论群整理
http://www.matlabsky.com/thread-11971-1-1.html


写在最后的闲扯淡
如题,O(∩_∩)O~
外两篇:**有趣图片

1.gif    2.gif


Faruto的联系方式(讨论MATLAB相关问题或者具体一些SVM相关问题或者再具体一些libsvm使用相关问题或者再再具体一些 … …);

欢迎大家一起讨论svm相关问题,共同提高。
推荐大家可以在matlabsky发帖子共同讨论。O(∩_∩)O~
www.matlabsky.com
http://video.ourmatlab.com/

我个人联系方式:

游客,如果您要查看本帖隐藏内容请回复

还可以找我一起玩 三国杀
【娱乐贴】论坛里有人玩三国杀吗?
http://www.matlabsky.com/thread-10768-1-1.html

========外一篇:我个人比较喜欢的宋词一首======












江城子·乙卯正月二十日夜记梦
  (苏轼)
  十年生死两茫茫,
  不思量, 自难忘。
  千里孤坟,,无处话凄凉。
  纵使相逢应不识,
  尘满面,鬓如霜。
  夜来幽梦忽还乡,
  小轩窗,正梳妆。
  相顾无言,惟有泪千行。
  料得年年肠断处,
  明月夜,短松冈。

评分

参与人数 11威望 +15 贝壳 +20 贡献 +6 收起 理由
国家佳 + 1 + 1 楼主整理的太辛苦了,我很有收获啊
sarathy + 1 + 1
ylhshadpw + 1 + 1
mlzy_byr + 1 + 1 好银啊
fengchuizhuming + 1 支持原创内容,鼓励自己动手

查看全部评分

该用户从未签到

发表于 2015-7-24 14:34:45 | 显示全部楼层
faruto 发表于 2010-11-3 08:11
真本书原本就没有配套光盘的。O(∩_∩)O

视频是额外购买的。~

楼主您好,我看了您的书,有个地方不太明白,还望您解释一下。cmd = ['-v ',num2str(pso_option.v),' -c ',num2str( pop(i,1) ),' -g ',num2str( pop(i,2) ),' -s 3 -p 0.01'];
    fitness(i) = svmtrain(train_label, train, cmd);
"分类问题适应度函数用的是cv下的分类准确率,回归问题适应度函数用的是cv下的mse",fitness(i) 都能反映吗,fitness(i) 不是交叉验证的分类准确率吗,怎么可以反映回归平方相关系数或回归误差(mse)。这样做会不会使回归参数的优化的带来较大的误差
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

发表于 2015-7-24 14:32:41 | 显示全部楼层
cmd = ['-v ',num2str(pso_option.v),' -c ',num2str( pop(i,1) ),' -g ',num2str( pop(i,2) ),' -s 3 -p 0.01'];
    fitness(i) = svmtrain(train_label, train, cmd);
"分类问题适应度函数用的是cv下的分类准确率,回归问题适应度函数用的是cv下的mse",fitness(i) 都能反映吗,fitness(i) 不是交叉验证的分类准确率吗,怎么可以反映回归平方相关系数或回归误差(mse)。这样做会不会使回归参数的优化的带来较大的误差
回复 支持 反对

使用道具 举报

签到天数: 1 天

[LV.1]初来乍到

发表于 2010-11-2 18:45:33 | 显示全部楼层
这帖子相当给力。不能不赞。另外,再发一问。
洋兄,能不能通过内部权值和阈值以及传递函数把已经训练好的网络用表达式写出来?

该用户从未签到

发表于 2010-11-2 20:47:24 | 显示全部楼层
东西都很经典,收藏了,慢慢品味

该用户从未签到

发表于 2010-11-2 20:58:40 | 显示全部楼层
楼主在吗?看了你写的那本书,我很想买,请问在卓越买有送光盘吗??我似乎没看到呢

签到天数: 5 天

[LV.2]偶尔看看I

发表于 2010-11-2 21:38:29 | 显示全部楼层
楼主太厉害了!楼主,I服U!
我觉得MATLAB技术论坛是注册对了!

该用户从未签到

发表于 2010-11-2 21:53:49 | 显示全部楼层
很期待《MATLAB 神经网络30个案例分析》第二版的发布啊!第一版里面的错误真的不少,特别是里面印的代码和从论坛上下载的相同M文件里面代码出入都挺大的。如果直接按照书上面的代码手动输入的话程序运行时经常报错,还是有待完善和提高啊

签到天数: 12 天

[LV.3]偶尔看看II

 楼主| 发表于 2010-11-3 08:11:59 | 显示全部楼层
yanwen 发表于 2010-11-2 20:58
楼主在吗?看了你写的那本书,我很想买,请问在卓越买有送光盘吗??我似乎没看到呢

真本书原本就没有配套光盘的。O(∩_∩)O

视频是额外购买的。~   

签到天数: 12 天

[LV.3]偶尔看看II

 楼主| 发表于 2010-11-3 08:12:35 | 显示全部楼层

签到天数: 12 天

[LV.3]偶尔看看II

 楼主| 发表于 2010-11-3 08:16:10 | 显示全部楼层
hyo 发表于 2010-11-2 18:45
这帖子相当给力。不能不赞。另外,再发一问。
洋兄,能不能通过内部权值和阈值以及传递函数把已经训练好的 ...

这个完全是可以的~

具体的表达式是可以写出来的~

签到天数: 1 天

[LV.1]初来乍到

发表于 2010-11-3 08:47:49 | 显示全部楼层
回复 faruto 的帖子

你有没有做过这个方面的例子,给我膜拜一下。
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 陕ICP备08102094号  

GMT+8, 2017-12-12 18:27 , Processed in 1.114559 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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