许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB贝叶斯优化Bayes-CNN-RNN分析股票市场数据超参数优化

MATLAB贝叶斯优化Bayes-CNN-RNN分析股票市场数据超参数优化

阅读数 2
点赞 0
article_banner


全文链接:https://tecdat.cn/?p=38354

原文出处:拓端数据部落公众号

本文旨在介绍一种利用贝叶斯优化方法来优化混合 CNN - RNN 和浅层网络超参数的简单方法,并展示了如何使贝叶斯优化器考虑离散值。通过对股票市场数据的模拟与分析,阐述了网络构建、数据预处理、超参数优化以及结果可视化等过程,探讨了股票市场预测这一具有挑战性任务中机器学习方法的应用与局限性。

引言

“我能计算天体的运动,却无法计算人类的疯狂。” ——艾萨克·牛顿爵士,在 1720 年春天被问及南海股票时所言。 如今,像我这样的数学家、物理学家、机器学习专家、数据科学家以及对数据充满好奇的爱好者们,都梦想着有朝一日能够借助人工智能预测未来。股票市场预测?它既困难又令人失望,同时也充满希望,这正是股票市场的本质所在。支撑时间序列预测基础的假设并不总是适用于股票市场现象。股票市场时间序列是众多受利润诱惑的投资者贪婪、野心、失望与希望的源泉。而这正是我们试图通过机器学习进行预测的内容;这无疑是一项极为艰巨的任务,但如果精心设计网络,就有可能识别出某些模式,并预测出接近未来现实的行为。 “过去的模式或许会在明天重现”。本文将展示一种利用贝叶斯优化来优化混合 CNN - RNN 和浅层网络超参数的简单方法。

关键要点

  • 分别使用贝叶斯优化对混合 CNN - RNN 和浅层网络进行调优。
  • 采用一种简单的方法使贝叶斯优化算法能够包含离散值。
  • 本代码中使用了一种生成类似随机股票市场数据的简单程序。

输入参数

  1. clearvars;
  2. delete(gcp('nocreate'));
  3. ratio = 0.9; % 用于划分训练集和测试集数据的比例
  4. MaxEpochs = 600; % 两个网络的最大训练轮数
  5. NetOption = []; % 所使用的网络

生成股票价格

生成随机股票市场数据并包含日期信息。

  1. % 模拟股票数据
  2. Period = 249 * 2;
  3. data = stockpricesimulation(Period, true);
  4. Past = datetime('today') - Period;
  5. Date = Past:datetime('today');

可视化完整序列

首先查看数据总是有益的。

  1. set(gca, 'FontSize', 12, 'FontName', 'Adobe Kaiti Std R', 'FontWeight', 'bold');
  2. set(gca, 'Box', 'on', 'LineWidth', 1, 'Layer', 'top',...
  3. 'XMinorTick', 'on', 'YMinorTick', 'on', 'XGrid', 'on', 'YGrid', 'on',...
  4. 'TickDir', 'out', 'TickLength', [.015.015],...
  5. 'FontName', 'avantgarde', 'FontSize', 12, 'FontWeight', 'normal');
  6. axis tight;

划分训练集和测试集序列

对数据进行训练集和测试集的划分。

准备自变量和因变量

浅层网络环境会在内部完成所有数据准备工作,但如果使用 CNN - RNN,则需要在训练网络之前准备序列。

超参数优化

有大量超参数需要调整和优化。NarNet 训练速度极快,所以如果计算机配置一般,此选项是不错的选择,并且仍能获得较好的拟合性能。如果计算机配备了最新一代处理器,则可以尝试使用贝叶斯优化来优化 CNN - RNN 参数。 在 CNN - RNN 优化中,使用了一个“技巧”来强制优化器处理离散值。通过将“MiniBatchSize”声明为分类变量,使其取值为’16’ ‘32’ ‘48’ ‘64’,然后将这些值转换为数值。

  1. % 获取贝叶斯优化的最佳点
  2. optVars = bestPoint(BayesObject);
  3. % 使用最优参数评估和训练网络
  4. [valError, ~, net, Ys, YPred, YPredStep, YTest] = BayesObject.ObjectiveFcn(optVars, true);
  5. % 还原数据标准化
  6. YPredStep = sig * YPredStep + mu;
  7. YTest = sig * YTest + mu;
  8. YPred = sig * YPred + mu;
  9. % 评估网络性能
  10. sMAPErr = sMAPE(con2seq(YTest), con2seq(YPred));
  11. end

优化结果如下表所示:

  1. optVars = 1×7 table
  2. **learningrate** **performFcn** **mc** **processFcns** **Lag** **hiddenLayerSize1** **hiddenLayerSize2** **\_\_\_\_\_\_\_\_\_\_\_\_** **\_\_\_\_\_\_\_\_\_\_** **\_\_\_\_\_\_\_** **\_\_\_\_\_\_\_\_\_\_\_** **\_\_\_** **\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_** **\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_**
  3. 0.0014275 msesparse 0.73025 mapminmax 14 22 11

性能函数已替换为均方误差性能。

该表展示了贝叶斯优化器找到的最佳参数。

可视化

将完整序列与测试数据和预测数据重叠显示。

  1. figure;
  2. plot(Date, data);
  3. hold on;
  4. idx = size(YPred, 2);
  5. set(gca, 'FontSize', 12, 'FontName', 'Adobe Kaiti Std R', 'FontWeight', 'bold');
  6. set(gca, 'Box', 'on', 'LineWidth', 1.1, 'Layer', 'top',...
  7. 'XMinorTick', 'on', 'YMinorTick', 'on', 'XGrid', 'on', 'YGrid', 'on',...
  8. 'TickDir', 'in', 'TickLength', [.015.015],...
  9. 'FontName', 'avantgarde', 'FontSize', 12, 'FontWeight', 'normal');
  10. axis tight;

单独可视化预测数据和测试数据以便更好地理解。


绘制回归图:


预测未观测值

以下是浅层网络闭环预测超出观测值序列的情况。

  1. if strcmp(NetOption, 'NarNet')
  2. numTimeStepsTest = size(YTest, 2);
  3. [x1, xio, aio, t] = preparets(net, {}, {}, XTrain);
  4. [y1, xfo, afo] = net(x1, xio, aio);
  5. [netc, xic, aic] = closeloop(net, xfo, afo);
  6. X2 = num2cell(rand(1, numTimeStepsTest));
  7. [YPredStep, xfc, afc] = netc(X2, xic, aic);
  8. YPredStep = cell2mat(YPredStep);
  9. end

一些可视化操作来检查网络性能。


绘制回归图:



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空