首页 > 其他分享 >MATLAB贝叶斯优化混合Bayes-CNN-RNN分析股票市场数据与浅层网络超参数优化

MATLAB贝叶斯优化混合Bayes-CNN-RNN分析股票市场数据与浅层网络超参数优化

时间:2024-11-25 22:55:27浏览次数:8  
标签:RNN 数据 网络 贝叶斯 Bayes CNN 优化

全文链接: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.    
  2.   set(gca, 'FontSize', 12, 'FontName', 'Adobe Kaiti Std R', 'FontWeight', 'bold');
  3.   set(gca, 'Box', 'on', 'LineWidth', 1, 'Layer', 'top',...
  4.   'XMinorTick', 'on', 'YMinorTick', 'on', 'XGrid', 'on', 'YGrid', 'on',...
  5.   'TickDir', 'out', 'TickLength', [.015.015],...
  6.   'FontName', 'avantgarde', 'FontSize', 12, 'FontWeight', 'normal');
  7.   axis tight;
 

划分训练集和测试集序列

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

准备自变量和因变量

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

超参数优化

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

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

优化结果如下表所示:

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

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

delete(gcp('nocreate'));

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

可视化

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

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

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

绘制回归图:

标签:RNN,数据,网络,贝叶斯,Bayes,CNN,优化
From: https://www.cnblogs.com/tecdat/p/18568984

相关文章

  • 高性能计算-ARM(neon)向量化优化(SIMD)和循环展开效率对(14)
    1.目标对数组求和,对比ARM(neon)向量化优化(SIMD)和循环展开,还有O0O1优化的效率对比。2.测试代码#include<arm_neon.h>#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN1024000int32_tneonSum(int32_t*arr,intn){//保存计算元素向量......
  • 工程管理如何优化?2024年8款进度管理系统分享
    本文盘点了8款主流工程项目管理工具:1.Worktile;2.泛普软件;3.子筑云;4.蓝凌;5.智建云;6.Wrike;7.Smartsheet;8.用友U8。工程进度管理系统是确保工程项目按计划顺利进行的关键工具。这类系统通过提供任务调度、资源分配、进度跟踪和实时通讯等功能,帮助项目经理和团队成员保持项目的时间......
  • SpringCloud入门(九)Feign实战应用和性能优化
    一、Feign实战应用 Feign的客户端与服务提供者的controller代码非常相似:有没有一种办法简化这种重复的代码编写呢?方式一:继承优点:简单。实现了代码共享。缺点:服务提供方、服务消费方紧耦合。参数列表中的注解映射并不会继承,因此Controller中必须再次声明方法、参数列表、......
  • 了解香港站群服务器对SEO优化带来的好处。
    多IP服务器又称多IP站群服务器,简单点说就是一台服务器上拥有很多个IP地址,所以多IP服务器,除了硬件资源之外,最耗费的就是IP地址资源。而使用多IP服务器的客户,一般都是通过大量建站的方式,来吸引流量,给自己的网站创造更多的访问,提高自己网站的权重。多IP服务器可以为一个或多个网站配......
  • PG优化-业务场景需求实现-大表低基数列group by优化
    PG优化-业务场景需求实现-大表低基数列groupby优化原创 akengan DB印象  2021年11月07日22:18阅读使人充实,讨论使人敏捷,写作使人精确。 前言 今天抽空聊一个和成本优化相关的话题。 说到成本优化,大家觉得优化多少算不错呢? 10%?20%? 成本优化的空间到底有多......
  • 如何优化团队进度追踪?看板管理方法
    看板管理作为一种可视化、灵活的项目管理工具,以其清晰的工作流程展示和动态的任务状态更新,成为优化进度追踪的利器。本文将从看板管理的核心理念出发,探讨其对进度追踪的优化策略,并提供实践建议。一、看板管理与进度追踪1)看板管理核心理念:可视化与流动性看板管理起源于丰田生......
  • 某保险理赔核心OB SQL优化案例
    某保险理赔核心系统oracle平迁ob国产化项目,目前已经投产完成,稳定运行。其中遇到条执行3600s慢sql,这条sql是hibernate拼接出来的语句,如果页面不同选项的话,表顺序,谓词过滤条件内容都会不一样。目前只针对这条拼接的慢sql进行优化,并无实际多大用处,记录个改法案例,实际优化方案还......
  • CloudPilot AI携手阿里云发布Karpenter阿里云 Provider,优化ACK集群自动扩展
    去年7月,Kubernetes达成十万星标的里程碑,彰显其作为云计算领域核心容器编排工具的广泛应用与认可。Kubernetes的普及加速了企业的上云进程,使云计算成为数字化转型的主流选择。随着越来越多企业依赖Kubernetes提供灵活的基础设施扩展,云支出管理需求也愈发紧迫。根据Flexera发......
  • NLP论文速读(ECCV2024)|面向文生图的Parrot优化的多奖励强化学习
    论文速读|Parrot:Pareto-optimalMulti-RewardReinforcementLearningFrameworkforText-to-ImageGeneration论文信息:简介:   本文背景是文本到图像(Text-to-Image,T2I)生成领域,这是一个旨在根据给定的文本提示生成相应图像的技术领域。尽管该领域取得了显著进......
  • 枚举及优化(n钱买n鸡)
    题目描述百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只?本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、小鸡各买多少只?输入格式一个正整数n(1≤n≤200)。输出格式如果有......