MATLAB支持向量机学习笔记

此文章为《量化投资以MATLAB为工具》一书中支持向量机(SVM)部分,自己的实验记录。

测试数据为上证指数1990.12.19至2009.08.19的真实指数,数据大小为4579x6的矩阵。其中每一行表示每一个交易日的上证指数各种指标,6列分别表示当天上证指数的开盘指数、指数最高值、指数最低值、收盘指数、当日交易量和当日交易额。

下面按书中提到步骤,对流程进行介绍:

获取上证指数的数据

可以从本书的在线资源中下载所有源码以及数据,定位到此章后,即可得到名为『chapter_sh.mat』的数据。输出为图形,如下所示:

MATLAB支持向量机学习笔记_第1张图片
上证指数每日的开盘指数

选定自变量与因变量

选取第1个到第4578个交易日内每日的开盘指数、指数最高值、指数最低值、收盘指数、交易量和交易额作为自变量,选取第2个到第4579个交易日内每日的开盘数作为因变量。

代码如下:

[m, n] = size(sh);
ts = sh(2:m, 1);
tsx = sh(1: m-1, :);

数据预处理

通过使用mapminmax函数,对上证指数进行归一化处理,区间为1到2。处理后的图形如下图所示:

MATLAB支持向量机学习笔记_第2张图片
上证指数每日的开盘指数归一化结果

参数选择

通过自定义的SVMcgForRegress.m函数,实现对参数的选择,先进行粗略选择,再进行精细选择。

粗略选择

其二维及三维结果如下图所示:

MATLAB支持向量机学习笔记_第3张图片
粗略选择结果(二维)
MATLAB支持向量机学习笔记_第4张图片
粗略选择结果(三维)

精细选择

其二维及三维结果如下图所示:

MATLAB支持向量机学习笔记_第5张图片
精细选择结果(二维)
MATLAB支持向量机学习笔记_第6张图片
精细选择结果(三维)

训练及回归预测

通过libSVM工具提供的svmtrain以及svmpredict函数完成对数据的训练。效果如下:

MATLAB支持向量机学习笔记_第7张图片
原始数据和回归数据对比

从图中可以看到两者的数据基本是吻合的。

再通过predict - ts';得到两者的差值,生成的误差图如下:

MATLAB支持向量机学习笔记_第8张图片
误差图

再求得它们之间的相对误差图,如下所示:

MATLAB支持向量机学习笔记_第9张图片
相对误差图

从上图中可看到,后期预测数据相对实际数据的偏差较为平稳,基本处在0.1(10%)的区间内。

结语

通过对书中的随书代码进行重新校验,在此过程中,练习了MATLAB的使用,以及LibSVM类库的安装。

由于本书编写的时间较早,部分接口以及配置等都有所变动,在实验过程中,也遇到相关的问题,不过都通过网络方案予以解决。

你可能感兴趣的:(MATLAB支持向量机学习笔记)