美文网首页
MATLAB支持向量机学习笔记

MATLAB支持向量机学习笔记

作者: e10101 | 来源:发表于2017-05-24 21:37 被阅读0次

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

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

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

    获取上证指数的数据

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

    上证指数每日的开盘指数

    选定自变量与因变量

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

    代码如下:

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

    数据预处理

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

    上证指数每日的开盘指数归一化结果

    参数选择

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

    粗略选择

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

    粗略选择结果(二维) 粗略选择结果(三维)

    精细选择

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

    精细选择结果(二维) 精细选择结果(三维)

    训练及回归预测

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

    原始数据和回归数据对比

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

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

    误差图

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

    相对误差图

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

    结语

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

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

    相关文章

      网友评论

          本文标题:MATLAB支持向量机学习笔记

          本文链接:https://www.haomeiwen.com/subject/qpnoxxtx.html