加载中…

加载中...

个人资料
faruto
faruto 新浪个人认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,143,192
  • 关注人气:2,115
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

《量化投资:以MATLAB为工具》连载(14)基于MATLAB的支持向量机(SVM)在量化投资中的应用

(2014-10-07 11:19:22)
标签:

matlab

svm

分类

拟合

量化投资

分类: 量化投资:以MATLAB为工具

《量化投资:以MATLAB为工具》连载(14)基于MATLAB的支持向量机(SVM)在量化投资中的应用

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

         《量化投资:以MATLAB为工具》是由电子工业出版社(PHEI)下属旗舰级子公司——北京博文视点资讯有限公司出版的《量化投资与对冲基金丛书》之一,丛书主编为丁鹏博士,《量化投资:以MATLAB为工具》由李洋(faruto)、郑志勇(ArisZheng)编著,主要介绍MATLAB在量化投资中的具体应用。该书预计201410月上市,欢迎大家多多支持。在书籍上市之前,会在中国量化投资学会的各种网络平台进行系列连载介绍,方便读者提前一窥书籍概要。

 

 

《量化投资:以MATLAB为工具》连载(14)基于MATLAB的支持向量机(SVM)在量化投资中的应用

 

SVM概述

支持向量机(Support Vector Machine,SVM),Vapnik首先提出,像多层感知器网络和径向基函数网络一样,支持向量机可用于模式分类和非线性回归支持向量机的主要思想是建立一个分类超平面作为决策曲面,使得正例和反例之间的隔离边缘被最大化,支持向量机的理论基础是统计学习理论,更精确的说,支持向量机是结构风险最小化的近似实现这个原理基于这样的事实:学习机器在测试数据上的误差率(即泛化误差率)以训练误差率和一个依赖于VC维数(Vapnik-Chervonenkis dimension)的项的和为界,在可分模式情况下,支持向量机对于前一项的值为零,并且使第二项最小化因此,尽管它不利用问题的领域内部问题,但在模式分类问题上支持向量机能提供好的泛化性能,这个属性是支持向量机特有的

支持向量机具有以下的优点:

(1)通用性(能够在很广的各种函数集中构造函数)

(2)鲁棒性(不需要微调)

(3)有效性(在解决实际问题中总是属于最好的方法之一)

(4)计算简单(方法的实现只需要利用简单的优化技术)

(5)理论上完善(基于VC推广性理论的框架)

"支持向量"x(i)和输入空间抽取的向量x之间的内积核这一个概念是构造支持向量机学习算法的关键。支持向量机是由算法从训练数据中抽取的小的子集构成。

支持向量机的体系结构如下图所示。

《量化投资:以MATLAB为工具》连载(14)基于MATLAB的支持向量机(SVM)在量化投资中的应用

说明: 1

10- 1:支持向量机的体系结构

其中K为核函数,其种类主要有:

线性核函数: 《量化投资:以MATLAB为工具》连载(14)基于MATLAB的支持向量机(SVM)在量化投资中的应用

多项式核函数: 《量化投资:以MATLAB为工具》连载(14)基于MATLAB的支持向量机(SVM)在量化投资中的应用

径向基核函数: 《量化投资:以MATLAB为工具》连载(14)基于MATLAB的支持向量机(SVM)在量化投资中的应用

两层感知器核函数: 《量化投资:以MATLAB为工具》连载(14)基于MATLAB的支持向量机(SVM)在量化投资中的应用

LIBSVM工具箱介绍

LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件还有一个特点,就是对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数就可以解决很多问题;并且提供了交互检验(Cross Validation)的功能。该软件包可以在http://www.csie.ntu.edu.tw/~cjlin/免费获得。该软件可以解决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)等问题,包括基于一对一算法的多类模式识别问题SVM用于模式识别或回归时,SVM方法及其参数、核函数及其参数的选择,目前国际上还没有形成一个统一的模式,也就是说最优SVM算法参数选择还只能是凭借经验、实验对比、大范围的搜寻或者利用软件包提供的交互检验功能进行寻优

目前,LIBSVM拥有JavaMatlabC#RubyPythonRPerlCommon LISPLabview等数十种语言版本。最常使用的是MatlabJava和命令行的版本。截止到201461日,LIBSVM的最新版本为3.18201441日更新),可在http://www.csie.ntu.edu.tw/~cjlin/libsvm/下载。

LIBSVM工具箱主要函数:

训练函数

model = svmtrain(train_label, train_data, options);

输入:

-train_data训练集属性矩阵,大小n*mn表示样本数,m表示属性数目(维数),数据类型double

-train_label训练集标签,大小n*1n表示样本数,数据类型double

-options参数选项,比如'-c 1 g 0.1'

输出:

-model训练得到的模型,是一个结构体。注意:当使用-v参数时,返回的model不再是一个结构体,分类问题返回的是交叉验证下的平均分类准确率;回归问题返回的是交叉检验下的平均均方根误差(MSE)。

预测函数

[predict_label, accuracy/mse, dec_value] = svmpredict(test_label, test_data, model);

输入:

-test_data测试集属性矩阵,大小N*mN表示测试集样本数,m表示属性数目(维数),数据类型double

-test_label测试集标签,大小N*1N表示样本数,数据类型double注意:如果没有测试集标签,可以用任意的N*1的列向量代替即可,此时的输出accuracy/mse,就没有参考价值。

-model svmtrain训练得到的模型。

输出:

-predict_label预测的测试集的标签,大小N*1N表示样本数,数据类型double

-accuracy/mse 一个3*1的列向量,第一个数表示分类准确率(分类问题使用),第二个数表示mse(回归问题使用),第三个数表示平方相关系数(回归问题使用)。注意:如果测试集的真实标签事先无法得知,此返回值没有参考意义。

-dec_value决策值。

 

 

更多内容参见《量化投资:以MATLAB为工具》。

         该书预计201410月上市。

书籍交流论坛:MATLAB技术论坛读书频道《量化投资:以MATLAB为工具》专版,地址:http://www.matlabsky.com/forum-112-1.html

 

作者简介

李洋(faruto),中国量化投资学会专家委员会成员,MATLAB技术论坛(www.matlabsky.com)联合创始人,北京师范大学应用数学硕士,先后就职于私募、期货公司、保险公司,从事量化投资相关工作。十年MATLAB编程经验,对机器学习、量化投资等相关领域有深入研究,已出版《MATLAB神经网络30个案例分析》和《MATLAB神经网络43个案例分析》等书籍。

邮箱:farutoliyang@foxmail.com

微博:http://weibo.com/faruto

郑志勇(Ariszheng),中国量化投资学会专家委员会成员,方正富邦基金产品总监,北京理工大学运筹学与控制论硕士,先后就职于中国银河证券、银华基金、方正富邦基金,从事金融产品研究与设计工作。十余年MATLAB编程经验,专注于产品设计、量化投资等相关领域的研究,尤其对于各种结构化产品、分级基金产品有着深入的研究,已出版《运筹学与最优化MATLAB编程》和《金融数量分析:基于MATLAB编程》等书籍。

邮箱:ariszheng@gmail.com

微博:http://weibo.com/ariszheng

 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有