【视频讲解】神经网络、Lasso回归、线性回归、随机森林、ARIMA股票价格时间序列预测|附代码数据

news2024/11/13 15:35:36

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

分析师:Haopeng Li

随着我国股票市场规模的不断扩大、制度的不断完善,它在金融市场中也成为了越来越不可或缺的一部分。

【视频讲解】神经网络、Lasso回归、线性回归、随机森林、ARIMA股票价格时间序列预测

基于此,选择合适的模型对股票价格进行精准、可靠的预测变得愈加重要。因为股票市场容易受到经济、政策、心理等多种相关因素的影响,是一个极其复杂的非线性系统,再加上每天大量投资者进行交易产生了非常庞大的交易数据需要处理、增添了股价预测的难度,所以传统的统计方法由于其在适应性、学习能力以及容错能力等方面的局限性,应用在股价预测问题上的结果往往差强人意。而计算机技术与机器学习算法的发展为股价预测开辟了一条新的道路,取得了不俗的成果。BP神经网络就是其中较成熟、应用较广泛的模型之一。选择合适的模型输入变量与优化算法来提高模型与预测的精确度也越来越不可或缺。

数据源准备

数据来自国泰安数据库,选取了中国平安(601318)个股从2017年2月16日到2021年2月16日的日开盘价、日最高价、日最低价、日收盘价、日成交量和日成交额的数据。

特征转换

计算了24个股价相关的技术指标,例如心理线(PSY= n日内上涨总天数/n*100)、布林线(一共含有三条线:中轨线 = n日的移动平均;下轨线 = 中轨线-m*n日收盘价的标准差;上轨线 = 中轨线+m*n日收盘价的标准差),与开盘价、成交量等一共30个指标作为BP神经网络模型的输入变量,并用主成分分析的方法选取了6个主成分,总贡献率达到了0.87。

之后对数据进行了数据归一化,并选择五天的股票相关指标作为模型的输入变量。

构造

以上说明了如何抽取相关特征,我们大致有如下训练样本(只列举部分特征)。

主成分分析前:

主成分分析并数据归一化后:

划分训练集和测试集

将2017年2月16日至2020年5月12日的数据划分为训练集,2020年5月12日至2021年2月16日的数据划分为测试集;其中训练集部分使用5重交叉验证的方法划分验证集来探寻模型的最优参数。经反复多次试验发现网络在1000次之内便能收敛,因此将网络的学习迭代次数设为1000次。为了减小偶然性、增加可信度,本文在验证集与测试集上均重复5次独立试验,取5次试验平均的MSEMAE作为最终的评价结果来比较不同参数与模型的拟合效果。

建模

BP神经网络模型

BP神经网络属于有监督的多层前馈神经网络中的一种,该网络的训练特点为输入工作信号的正向传播与反馈误差信号的反向传递。在正向传播的过程中,输入的工作信号从输入层进入网络,在经过各层的加权变换与激活函数变换后抵达输出层;在这一过程中整个网络的阈值和权值是不进行更新的,且每一层神经元的状态只收到上一层神经元状态的影响。在反向传递的过程中,根据MSE指标计算网络实际输出与期望输出之间的误差,根据该误差反向逐层修改网络的权值与阈值,使得网络的实际输出不断向期望输出逼近。经过上述两个步骤的反复迭代,网络的权值与阈值最终会收敛,学习过程就会停止。1989年Robert Hecht-Nielsen曾证明含有一层隐层的BP神经网络就可以无线逼近任意闭区间内的任意一个连续函数,因此三层BP神经网络便能够实现任意的m维到n维的映射。使用三层BP网络来预测股价。

Lasso回归

假定因变量y是多个自变量x1,…,xp(p≥2)和随机误差项ε的线性函数,则多元线性回归模型可以表示为:

  y=β0+β1x1+…+βpxp+ε=Xβ+ε                   

  其中,y为随机变量,x1,…,xp(p≥2)为确定性的自变量,ε~N(0,σ2)为随机的误差项,β0,..., βp为回归系数。则多元线性回归模型的目标函数为:                                                               minβ||y-||2

在其中加入L1范数惩罚项则得到具有变量选择特征、可以得到稀疏解的Lasso回归模型:

minβ{||y-Xβ||2|β|1}

型优化

特征提取,数据降维,参数调参。

选择Adam优化算法

  1. 隐藏节点的确定

使用公式t=m+n+τ确定隐藏层的最优节点个数范围(其中,t表示隐藏层节点数,m表示输入层节点数,n表示输出层节点数,τ表示1-10之间的常数),因为输入层节点数为150,输出层节点数为1,因此隐藏层的节点数范围为[14,23]。令隐藏层的激活函数为sigmoid函数,输出层的激活函数为Leaky Relu函数,Adam算法初始的学习率设为0.01

  1. 激活函数的确定

  1. 初始学习率的确定

在此案例中,使用Adam算法优化的主成分分析降维的BP神经网络模型预测效果最好,在测试集上拟合的平均MSE0.000641,平均MAE0.019441

Adam优化算法的预测效果也要比SGD优化算法的预测效果好。

Lasso模型因为自身带有变量选择作用,应用在未降维的数据上的效果要比降维数据效果要好,因为在主成分分析降维时会损失一部分原始信息。最终模型选择变量如下所示:

模型预测结果也较好,平均MSE0.000681,平均MAE0.0202

最终因为输入天数的确定具有主观性,因此尝试改变输入天数与训练集大小来观察BP神经网络模型的稳定性。

可以看到降维后的Adam优化BP神经网络模型较稳定,且模型的误差基本都随着输入天数的增加先下降再上升,这是因为当输入天数增加时最开始模型获取的有效信息增加,使模型训练得更加精确,拟合效果更好;但随着输入天数增加过多,新增的股价数据是较久远缺少时效性的数据,提供的干扰信息多于有效信息,因此模型的误差会随后增大。

但市场股价信息只是影响股票价格的一部分因素,更适用于短期股价预测;在中长期股价预测中,要考虑的因素还有很多,例如股票的基本面因素,包括宏观经济分析(CPIGDP、通货膨胀率)、中观经济分析(企业所处的行业相关的情况)和微观经济分析(企业内部运营情况)三大方面的内容。

接下来我们一个实例包含代码和数据来演示如何用神经网络、Lasso回归、线性回归、随机森林进行股票价格预测。

 基于神经网络、Lasso回归、线性回归、随机森林对大型科技股价格预测

数据选择

该数据集包括 14 家不同科技公司的每日股价和交易量,包括苹果 (AAPL)、亚马逊 (AMZN)、Alphabet (GOOGL) 和 Meta Platforms (META) 等

数据导入

数据的时间序列可视化



unique_symbols = stock['stock_symbol'].unique()
colors = ['red', 'blue', 'green', 'purple', 'grey', 'brown', 'cyan', 'magenta', 'yellow', 'black', 'orange', 'pink', '#ADD8E6', '#90EE90']
color_palette = {symbol: colors[i % len(colors)] for i, symbol in enumerate(unique_symbols)}

显示 2010 年至 2023 年股票调整后收盘价的时间序列的折线图。每只股票都由一条不同颜色的线表示,股票代码列在右侧的图例中。这些线显示了股价随时间推移的波动,一些股票显示出显着的增长

探索性数据分析

缺失值

数据集中没有缺失值。('stock_symbol'、'date'、'open'、'high'、'low'、'close'、'adj_close'、'volume')中的每一列都有等于条目总数的非空计数,即 45,088。因此,每列的缺失值百分比为 0.0%,确认数据集是完整的,没有缺失数据。

对图

配对图是一个图表网格,显示每个股票变量(如开盘价和收盘价)与其他变量的关系。对角线上是直方图,显示每个变量出现不同值的频率。对角线的散点图显示了两个变量之间的趋势或模式,例如整个数据中最高价和最低价的比较情况。



numerical_data = stock[['open', 'high', 'low', 'close', 'adj_close', 'volume']]

相关热图

热图显示了不同股票市场变量之间的密切关系,例如开盘价和收盘价。深绿色方块表示非常强的关系,开盘价、最高价、最低价、收盘价和调整后的收盘价都是如此,它们都非常相似。成交量与这些价格的关系不大,如棕色方块所示。

异常

数据集中的异常值可以在每个数值股票列的箱线图中发现,例如开盘价、最高价、最低价、收盘价和调整后的收盘价,以及成交量。描述性统计量显示的值远高于或低于平均值,表明这些是异常值。

数据预处理

数据清理

由于没有缺失值,因此我们不会执行任何插补技术,如均值或中位数插补或基于模型的方法,也不会删除具有缺失值的行/列。

删除异常值

stock_cleaned = remove_outliers(stock, columns_to_check, z_score_threshold)

预测分析

对于我们的预测分析,我们开发了一种综合方法,利用四种不同的机器学习模型,每种模型都因其在预测结果方面的独特优势和能力而被选中。这些模型包括:

  • 线性回归:评估自变量和因变量之间线性关系的基础模型。
  • 套索回归:线性回归的扩展,包含 L1 正则化,有助于特征选择和减少过拟合。
  • 随机森林回归:一种集成学习方法,它使用多个决策树,通过平均结果来生成更准确、更稳健的预测。
  • 多层感知器 (MLP):一类前馈人工神经网络,可以对输入和输出之间的复杂非线性关系进行建模。

通过利用这些模型的多种方法,我们旨在提高预测分析的准确性和可靠性。

线性回归

在线性回归代码中,我们使用一个模型来预测基于其他市场因素(“开盘价”、“最高价”、“最低价”、“收盘价”)的股价(“adj_close”)。该模型使用部分数据进行训练,然后进行测试以查看其预测新数据的程度,表明它通常准确,均方误差为 92.29,R 平方约为 96.8%。最后,我们用图查看预测价格和实际价格之间的差异,注意模型在哪些方面没有完美预测。

model = LinearRegression()

第一张图显示了预测的股票价格与实际价格的比较情况,大多数点位于一条线上,表明预测准确性良好。第二张图显示残差,即实际值和预测值之间的差值;点分散在零线周围,在预测中显示一些误差。第三张图是一个直方图,它告诉我们不同残差发生的频率,大多数接近于零,这表明许多预测接近实际值。

套索回归

在套索回归代码中,我们创建了一个模型,该模型不仅可以预测股票价格,还可以通过减少变量的数量来简化模型,如果某些变量对预测没有多大帮助(这是通过“alpha”值完成的,它控制着这种简化的强度)。该模型的准确率略低于基本线性回归,R 平方约为 96.82%。然后,我们使用散点图和直方图根据实际价格和误差(残差)检查预测。

第一张图将实际股票价值与 Lasso 模型预测的股票价值进行了比较,显示了沿线的紧密聚类,表明预测良好,但存在一些价差。第二张残差图显示了预测值和实际值之间的差异,点集中在零线附近,但对于较高的值,则存在一些较大的偏差。第三张图显示了这些差异的分布,主要以零为中心,这表明预测通常接近实际值,尽管有一些明显的例外。

随机森林回归

在随机森林模型代码中,我们使用一组决策树来预测股票价格,与单个决策树相比,这通常会导致更准确和稳定的预测。该模型显示均方误差为 75.59,R 平方误差为 97.4%,表明其预测与实际值非常接近。我们使用绘图直观地将预测值与实际值进行比较,并分析预测误差(残差)。

第一张图显示了随机森林模型的实际股价与预测股价,大多数点都接近黑线,表示预测准确。第二张图显示了残差,即预测值和实际值之间的差异,散布在水平线周围,对于较高的值,存在一组较大的误差。第三张图是残差直方图,显示大多数预测都非常准确,峰值在零附近,但也有一些更大的误差离零更远。

多层感知器 (MLP)

在多层感知器模型代码中,我们使用一种具有两层处理的神经网络来预测股票价格,网络通过其层“学习”复杂的模式。该模型的均方误差约为 97,R 平方得分约为 96.7%,这意味着它非常擅长做出与实际数据相匹配的预测。我们使用几个图来检查预测值与实际值的比较情况,并查看预测误差,即残差。

第一张图显示了神经网络模型对实际和预测股票价值的比较,主要是沿着这条线,这意味着预测是好的。第二个图是一个残差图,它显示了预测中的一些误差,特别是对于较高的值,因为它们偏离了零线。第三张图是一个直方图,在零附近急剧达到峰值,表明大多数预测接近实际值,但也有一些误差离零更远。

使用 ARIMA 模型进行时间序列预测

该代码准备股票市场数据,并使用 ARIMA 模型预测每只股票的未来调整后收盘价。首先,它将 2023 年初之前的历史数据分开以训练模型。然后,它按日期和股票代码对数据进行分组,选择每个月的最大调整收盘价。对于每只股票,它都会根据历史数据拟合 ARIMA 模型,并使用它来预测 2023 年未来 12 个月的收盘价,并在历史数据旁边用图表显示这些预测。

model = ARIMA(dataf_max_pivot[symbol], order=(5,1,0))
model_fit = model.fit()














关于分析师

  

 在此对Haopeng Li对本文所作的贡献表示诚挚感谢,她在上海财经大学完成了控制工程专业的硕士学位专注人工智能领域。擅长Python、Matlab仿真、视觉处理、神经网络、数据分析 。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1934792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Haproy服务

目录 一.haproxy介绍 1.主要特点和功能 2.haproxy 调度算法 3.haproxy 与nginx 和lvs的区别 二.安装 haproxy 服务 1. yum安装 2.第三方rpm 安装 3.编译安装haproxy 三.配置文件详解 1.官方地址配置文件官方帮助文档 2.HAProxy 的配置文件haproxy.cfg由两大部分组成&…

【MQTT(3)】开发一个客户端,QT-Android安卓手机版本

手机版本更加方便 生成安卓库 参考了这个代码 在编译Mosquitto以支持安卓平台时,主要涉及到使用Android NDK(Native Development Kit)进行交叉编译。环境的准备参考之前的博客【QT开发(17)】2023-QT 5.14.2实现Andr…

jenkins添加ssh证书

1、生成ssh密匙:windows生成ssh密匙-CSDN博客 2、添加添加ssh凭证:jenkins路由地址为:/manage/credentials/store/system/domain/_/ 点击添加凭证 选择第二个,将生成的私匙 id_rsa 里边的内容赋值到密钥,id留空自动…

使用小波分析实现文字种类自动识别

文章目录 数据简介开始实验小波分解得出结果结果分析误差分析 数据简介 各找一篇中文,日文,韩文,英文,俄文较长的学术论文。将论文转化为JPG格式。拆分每张JPG生成更多小的JPG。最终获得很多5个不同语言的JPG并且自带标签。数据链…

网安速查引擎(厂商设备大全)

速查引擎 斯元的速查引擎以其全面、精准的信息整合和便捷的搜索功能,大大缩短了用户查找相关厂商和产品信息的时间,从而提高了工作效率和决策质量。用户可以轻松查阅到各个赛道中的领先厂商和最新技术,帮助企业快速找到适合的合作伙伴和解决方…

逆向案例二十五——webpack所需模块函数很多,某翼云登录参数逆向。

解决步骤: 网址:aHR0cHM6Ly9tLmN0eXVuLmNuL3dhcC9tYWluL2F1dGgvbG9naW4 不说废话,密码有加密,直接搜索找到疑似加密位置打上断点。 再控制台打印,分析加密函数 有三个处理过程,b[g]得到的是用户名,b[f] 对…

HiFi-GAN——基于 GAN 的声码器,能在单 GPU 上生成 22 KHz 音频

拟议的 HiFiGAN 可从中间表征生成原始波形 源码地址:https://github.com/NVIDIA/DeepLearningExamples 论文地址:https://arxiv.org/pdf/2010.05646.pdf 研究要点包括 **挑战:**基于 GAN 的语音波形生成方法在质量上不及自回归模型和基于流…

Linux部署Prometheus+Grafana

【Linux】PrometheusGrafana 一、Prometheus(普罗米修斯)1、Prometheus简述2、Prometheus特点3、Prometheus生态组件4、Prometheus工作原理 二、部署Prometheus1、系统架构2、部署Prometheus3、修改配置文件4、配置系统启动文件 三、部署 Node Exporter …

Spring MVC-什么是Spring MVC?

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 文章目录 1.MVC定义2. Spring MVC 官方对于Spring Web MVC的描述这样的: Spring Web MVC is the original web framework built on the Servlet APl and has been includedin the Spring Frame…

P1-AI产品经理--九五小庞

产品经理的定位 AI基于现有业务挖掘AI应用场景,服务提供商选择及算法定制等,配合已有产品完成整体产品工工资基于从事医疗行业的考虑,我们走的应该是AI产品经理(软件型) AI产品经理(行业型) AI…

JavaEE:Lombok工具包的使用以及EditStarter插件的安装

Lombok是一个Java工具库&#xff0c;通过添加注解的方式&#xff0c;简化Java的开发。 目录 1、引入依赖 2、使用 3、原理解释 4、更多使用 5、更快捷的引入依赖 1、引入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lomb…

STM32全栈嵌入式人脸识别考勤系统:融合OpenCV、Qt和SQLite的解决方案

1. 项目概述 本项目旨在设计并实现一个基于STM32的全栈人脸识别考勤系统。该系统结合了嵌入式开发、计算机视觉和数据库技术&#xff0c;实现了自动人脸检测、识别和考勤记录功能。 主要特点: 使用STM32F4系列微控制器作为主控制器采用OpenCV进行人脸检测和识别Qt开发跨平台…

高性能、安全、低碳绿色的趋势下,锐捷网络发布三擎云办公解决方案 3.0

桌面虚拟化作为云时代的主流和热门技术&#xff0c;已经取得了广泛应用。随着生成式 AI 爆炸式发展&#xff0c;CSDN 看到&#xff0c;人工智能正在引发计算、开发、交互三大范式的全面升级&#xff0c;技术开发或将迎来一次全新的科技变革周期&#xff0c;因此 VDI 云桌面随之…

亚马逊自发货erp,虚拟自动化发货功能以及1688订单采购

亚马逊自发货erp自动化功能&#xff0c;自动同步订单&#xff0c;1688订单同步。 大家好&#xff0c;今天分享一个非常实用并且节省时间的功能&#xff1a;自动化发货以及1688同步订单。 首先来看下自动化发货功能怎么操作。 →要在商品信息里面添加商品信息&#xff0c;上传…

C#语法基础详解(万字总结)

文章目录 **参考书籍&#xff1a;C#7.0 核心技术指南**类型类字段解构器对象初始化器属性表达式属性(只读属性才可以)自动属性属性初始化器 索引器静态构造器nameof运算符 继承类型转换和引用转换as运算符is运算符is与模式变量 虚函数成员抽象类和抽象成员new和重写base关键字构…

JavaDS —— 二叉树

树的基本概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 树形结构中&#xff0c;子树之间不能有…

网易滑块逆向

版本 2.27.2 混淆难度挺大 没反混淆 直接硬着直接干 参数还是那些 滑块&#xff08;其他类型也一样&#xff09;成功率 100%

= null 和 is null;SQL中关于NULL处理的4个陷阱;三值逻辑

一、概述 1、NULL参与的所有的比较和算术运算符(>,,<,<>,<,>,,-,*,/) 结果为unknown&#xff1b; 2、unknown的逻辑运算(AND、OR、NOT&#xff09;遵循三值运算的真值表&#xff1b; 3、如果运算结果直接返回用户&#xff0c;使用NULL来标识unknown 4、如…

CSS技巧专栏:一日一例 8 - 纯CSS利用mask属性实现按钮边框对称包围特效

CSS技巧专栏:一日一例 8 - 纯CSS利用mask属性实现按钮边框对称包围特效 上篇作业解题 在前一篇文章的最后,给各位看官留了一个作业,如上图所示。本篇文章,我们来公布一下它的源码。 主要实现的思路 四个渐变色的线段,沿着四个方向的依次运动,(运动在加载前执行)使用 …

物联网实训室的核心功能有哪些?

随着物联网技术的迅猛发展和广泛应用&#xff0c;唯众凭借其深厚的技术积累和丰富的行业经验&#xff0c;为职业院校提供了全面的物联网实训室解决方案。这些实训室不仅为学生提供了真实、实用、创新的实践环境&#xff0c;还促进了产学研用的深度融合&#xff0c;推动了物联网…