基于LSTM模型的股票预测研究_第1页
基于LSTM模型的股票预测研究_第2页
基于LSTM模型的股票预测研究_第3页
基于LSTM模型的股票预测研究_第4页
基于LSTM模型的股票预测研究_第5页
已阅读5页,还剩24页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XXVI第1章引言1.1研究背景与研究意义1.1.1研究背景(1)国内外现状近年来,国际上逐渐有研究发现长短期记忆网络LSTM模型在股票市场预测方面具有良好的表现(Chen,Nelson,Fischer和Krauss,Kim和Won)。国内也有许多学者对此有了很多新的发现,LSTM模型的股票预测在国内掀起了一股研究热风。杨青和王晨蔚将LSTM模型与其他几个模型进行对比,发现其在股票预测研究中更具有准确性和稳定性,我们可以看出,LSTM模型在股票预测研究中占据重要的地位。此外,唐晓彬等学者还构建了一种LSTM&US预测模型,该模型表现出色,进一步丰富了机器学习方法在宏观经济指标预测领域的理论研究。欧阳红兵等则以道琼斯工业指数为例进行实证研究,结果表明LSTM神经网络在预测金融时间序列数据方面具有较高的精度,能够有效地捕捉其长短期动态变化趋势,这进一步证明了LSTM神经网络在金融时间序列数据预测中的适用性和有效性。国内外把人工智能的研究和发展一直放在前列,不断有新的发展方向被提出来,人工智能已经被大量的应用在金融领域,而现在所面临的问题依旧有很多。首先是数据的问题,由于现在的技术不够完备,所以充斥着大量的不完整数据,市场的随时变动也在给数据的处理带来巨大的挑战,随着经济体越来越大,数据的获取难度就越来越大。其次是模型适应的问题,市场干扰因素太多,模型需要不断的优化和调整。此外,市场的预测不全是合理性,也存在一些人类情绪和认知的影响,这些因素给数据分析带来了巨大的困扰。(2)发展趋势在人工智能的发展过程中,我们现在对深度学习的学习和应用已经有了一定的进展,我们应当进一步去探索人工智能未来的发展。人工智能发展的方向应该是全方面的,它应该包含以下几个方面,知识驱动、类脑思维、可解释人工智能。知识驱动实际上是为人工智能建立专门的知识库,提高人工智能的逻辑推理能力和决策能力,包含各个领域的问题,通过让人工智能学习知识库,保证了人工智能在遇到问题时能够有效的解决。深度学习有待于挖掘和探索,数据驱动不能让人工智能在图片识别过程中具有推理能力,所以数据驱动和知识驱动的结合必定是未来的发展趋势。尽管现在的人工智能技术能够模仿人类的行为,和人下围棋,与人沟通,自行取送餐,甚至玩电子游戏,可是这些技术仍旧是信息处理,并不能与人类的大脑一样自主学习和自主思考。人类脑的思维并不是机械固化的,而是带有自主意识的,我们现在所实现的人工智能尽管有很多方面取得了很多的突破,但是如果想要真正实现类脑智能还有很长的一段路要走。现如今可解释人工智能的发展和研究在人工智能领域的重要程度越来越高,而可解释人工智能在建立的模型和复杂算法中缺乏透明度,不能对处理过的数据有足够的解释,但是对于金融领域或其他领域的应用,数据的准确性至关重要。1.1.2研究意义(1)现实意义股票市场作为国内重大的投资市场,从开始到如今一直都吸引着投资者们的目光。然而,股票价格波动的影响因素是极其不稳定的,所以分析股票的影响因素就成为了许多金融领域学者的研究课题。人们以前学习如何去选择股票需要4到6年才能成为一个专业的股票交易员,而人工智能只需要几分钟的时间就能够预测股票并且具有一定的准确性,大大降低了人们的时间成本以及投资风险所以对于运用人工智能技术对股票的预测是具有重大意义的。(2)理论意义本研究将选取港股中十只非常具有影响力的股票来验证LSTM模型在股票预测研究中的准确性和可靠性。这次研究将进一步证明运用LSTM模型捕捉时间序列的长期依赖关系所解决了梯度消失或爆炸问题。LSTM模型的股票预测研究将进一步推动深度学习在金融领域的应用和发展,我们希望将利用人工智能技术在金融领域开疆扩土,科技改变世界这句话绝不是凭空出现,这需要我们每一代人去推动金融科技的前进和发展,科技与金融相辅相成,共同为国家经济的发展做出贡献。股票价格预测从股票诞生的那一刻开始就有无数的投资者想要提前掌握更多的信息来获取巨大的意义,所以股票价格预测是一个所有投资者都看重的问题,如今信息是无价的,所以在获得信息这条道路上肯定是困难且富有挑战性的。此研究具有一定的学术价值,对投资理论进行了丰富和完善,为后续的股票预测研究提供了新的思路和想法。1.2文献综述本文研究参考了近几年利用LSTM模型对股票预测研究的中外文献,其都解释了LSTM模型的优点,即有效处理序列数据的长期依赖问题和避免梯度消失或爆炸问题,并且被广泛的应用在各种股票预测研究中。例如,Bao等人(2017)在综述文章中详细分析了深度学习在股票市场预测中的应用,并提出了一种基于堆叠自编码器和LSTM的金融时间序列深度学习框架,用于股票价格预测,取得了良好的预测效果。Fischer和Krauss(2018)利用LSTM网络对股票市场进行了预测,证明了LSTM模型在股票市场应用的巨大优势。在中国也有一些学者研究了LSTM模型与其他方法结合用于股票预测的研究。例如,李丽萍等人(2023)基于LSTM神经网络构建了股票价格预测模型,并与BP和Elman神经网络进行了对比,结果显示LSTM模型在预测精度上具有显著优势。杨青和王晨蔚(2019)则结合深度学习LSTM神经网络对全球股票指数进行了预测研究,并且与SVR、MLP两种非线性模型和ARIMA一种线性模型进行了对比,进一步验证了LSTM模型在股票价格预测中的有效性。除了对LSTM神经网络在股票价格预测中的应用进行研究外,一些学者还关注了与其他机器学习算法的结合。唐晓彬等构建了一种LSTM和US预测模型,具有较高性能,丰富了机器学习方法在宏观经济指标预测领域的理论研究。张琳(2023)从人工智能的角度出发,选取了上证50指数的8只股票探讨了中国股票价格的预测与异质性,为后续的深入研究提供了理论框架。马敏(2023)则进一步讨论了人工智能的发展及应用,强调了深度学习在股票价格预测中的潜力。1.3研究内容与研究目的1.3.1研究内容本文将基于深度学习LSTM神经网络架构来预测股票,将选取10个港股中非常具有价值和影响力的个股来进行研究,分别是阿里巴巴、腾讯控股、长城汽车、李宁、BC科技集团、青岛啤酒、中国电信、中国海洋石油、周大福、华润电力,然后详细描述了模型的构建过程、特征选择、模型训练和参数调优等方面。接着,利用实际股票市场的历史数据对LSTM模型进行了实证分析。对于LSTM模型如何预测股票的价格,本文利用了其能够很好地学习长时间序列依赖关系的能力,并且将日期、股票收盘价作为指标代表纳入研究。1.3.2研究目的本文研究目的将利用在港股所选取的10只具有影响力的股票进一步论证LSTM模型对股票研究的准确性和可靠性。具体来说,研究目的包括以下几个方面:(1)分析股票预测的准确度,验证LSTM模型在股票市场处理从2023年1月1日至今的长时间序列收盘价是否能够有效地预测股票未来的收盘价。(2)分析LSTM模型的预测效率,与其他模型不同的是,LSTM模型通过三个门处理长时间序列数据,而三个门中有很多个cell,每个cell中又有4个全连接层,如此就造成了计算空间和时间复杂度增大,那么我们所研究的就是预测2023年1月1日至今的股票收盘价所耗费的时间是多少。(3)分析不同的股票之间的预测精确度,本文选择了10只股票用来分析相互之间的股票预测精确度,有多大的差距,预测精确度差异在哪里。1.4研究思路与研究方法1.4.1研究思路首先,本文通过查阅大量的参考文献和理论知识研究LSTM模型的现实和理论意义以及产生的背景并且对LSTM模型的神经网络结构图进行了研究,了解了LSTM模型的原理和结构。随后,通过LSTM模型的原理去设计模型,在设计模型时需要提前收集数据并对数据做一个预处理,这些数据需要进行清洗和预处理,以消除噪声和异常值,并转化为适合LSTM模型处理的时间序列数据。从预处理后的数据中提取出对股票预测有价值的特征。通过精心选择,本文选择了股票的收盘价和设计其特征。接下来,需要分割训练集和测试集,并将数据放在两个列表里。最后,本文开始模型的构建和训练并对LSTM模型进行性能评估和验证。构建LSTM模型需要将数据NumPy数组转换为PyTorch张量,设置输入维度、隐藏层维度、层数、输出维度、训练轮数5个维度。本文按照训练集的百分比随机选取历史数据的样本,对LSTM模型进行训练,通过调整模型的参数来预测LSTM模型的性能。本文对训练好的LSTM模型进行性能评估,包括计算预测的准确率等指标。同时,使用独立的测试数据集对模型进行验证,以确保模型的泛化能力。1.4.2研究方法本文通过文献研究法搜集、阅读和分析关于LSTM模型预测股票价格的研究的文献资料,了解到了中外各研究领域学者的研究成果和结论,这不仅会开拓我的思路,还会为我提供更多的研究经验。本文通过案例分析法分析使用LSTM模型预测股票的案例,发现预测结果都有一定的准确性,确实为投资者提供了更多的参考价值。本文通过对比研究法选取了10只不同领域的股票来进行比较分析它们各自之间的预测差异,以此来验证LSTM模型的预测准确性和鲁棒性。

第2章LSTM模型相关理论研究2.1LSTM模型原理长短期记忆神经网络,我们常简称为LSTM模型,这一神经网络是RNN(循环神经网络)的重要发展和完善。RNN在处理长序列数据时,常面临梯度消失和爆炸的难题,导致训练效果不佳。然而,LSTM模型通过其独特的设计,有效地解决了这些问题,使得它能够更好地学习长期依赖关系。LSTM模型的核心在于其通过三个门结构来精细控制信息的处理:遗忘门、输出门和输入门。这三个门协同工作,使得神经网络在处理长时间序列信息时能够保持高效的依赖关系处理能力。首先,本研究先探讨遗忘门的机制。遗忘门负责决定哪些信息应当从细胞状态中丢弃,哪些应当保留。这一过程通过Sigmoid函数实现,该函数将输入映射到[0,1]区间,输出值代表了信息的保留程度。遗忘门实际上是在筛选信息,保留对预测有用的重要信息,同时丢弃无关或过时的信息。接下来是输入门,它负责控制新输入信息的记忆状态。首先,通过一个Sigmoid层判断哪些信息需要更新;然后,利用tanh层创建一个新的候选值向量。这两个步骤的结合决定了细胞状态的新增内容。输入门的作用在于确保只有对模型有益的新信息才能被加入到细胞状态中。最后是输出门,它负责控制信息的输出。与输入门类似,输出门也依赖于Sigmoid层来决定输出哪部分细胞状态信息。随后,通过tanh函数处理这部分细胞状态,并与Sigmoid门的输出相乘,从而得到最终的输出值。输出门确保了模型输出的准确性,避免了不必要的信息泄露。2.2LSTM模型神经网络的产生背景在图片描述、自然语言处理以及机器翻译等领域,神经网络发挥着重要作用,其中RNN尤为突出。然而,传统的RNN在应对长时间序列信息时显得力不从心。这主要是因为其常用的激活函数,如tanh或ReLU,存在局限性。每个RNN的基本单元不仅接收当前输入,还会结合上一个时间步的隐藏状态,从而产生当前时间步的隐藏状态。这种逐步计算的方式在处理长时间序列时,效率并不理想。RNN所计算的过程都是一步一步进行的,在计算长时间序列的信息时,导致了计算量庞大。RNN只能保留有限时间步骤的传递信息,导致了历史信息缺失,影响了预测的准确性。为了解决RNN在处理长时间序列时遇到的梯度消失和爆炸问题,Hochreiter和Schmidhuber在1997年提出了其他结构的RNNs,即LSTM模型。这种特殊的RNN在处理顺序序列时表现出色。近期,AlexGraves对LSTM模型进行了优化和推广。LSTM的设计初衷就是为了解决RNN在处理长期依赖关系时的不足。通过改进RNN的结构,LSTM成功地克服了原始循环神经网络的缺陷,因此迅速成为当前最受欢迎的RNN类型。2.3LSTM模型神经网络结构图LSTM神经网络的结构图如图1所示:图1LSTM模型神经网络结构图根据LSTM的结构,每个LSTM单元工作的公式描述如下:(1)判定为无用或不相关的那些历史信息将被遗忘门抛弃,如式(1)所示遗忘门抛弃,如式(1)所示ft(2)上一时刻保留的信息与此刻的输入信息共同作为输入门的更新状态,如式(2)(3)所示itCt(3)由输出门输出当前时刻的状态信息,如式(4)(5)atℎt式中,Wi,Wc,Wf和W0为相应的连接权值,bi,bc,bf和b0为相应的偏置,f

第3章数据收集、预处理和数据集的制作3.1数据的收集easyquotation是一个完全免费、开源的python财经数据接口包。可通过网络爬虫将股票数据转化为数字字典格式,避免金融从业重复造轮子,对数据分析过程成本优化。提供了对新浪、腾讯财经、分时股票数据获取,对港股的分时、日线股票数据获取,对集思路的分级基金数据。通过easyquotation包,本研究选取了十支股票,包括阿里巴巴、腾讯、长城汽车、周大福、李宁、华润电力、中国电信、青岛啤酒,中国海洋石油、BC科技集团,提取上市至今的所有股票日线数据。我将选取2023年1月3日至今的所有股票收盘价格。3.2数据预处理easyquotation日线接口提供腾讯财经港股股票的日期、开盘价、收盘价、最高价、最低价、成交量、成交额八个维度特征。根据实验需求每只股票只采用日期、收盘价为特征变量。其中解释变量为日期,被解释变量为收盘价与股票种类。图2数据预处理流程3.2.1时间变量处理收集的每只股票数据包含该股票自上市以来的所有数据,而由于每只股票的上市时间不一致,故需要对时间变量统一进行处理。使用pandas工具统计每只股票的上市时间可得,如下表1:表1各支股票上市日期股票名称上市日期长城汽车2016年04月14日阿里巴巴2019年11月26日腾讯控股2018年02月12日周大福2016年04月20日BC科技集团2015年09月08日李宁2016年04月20日华润电力2016年04月19日中国电信2016年04月20日青岛啤酒2016年04月20日中国海洋石油2016年04月20日3.2.2收盘价处理由于所选股票均为港股,港股突发情况会经常临时休市故交易日较少,平均下来一年225个交易日。所有需要对日期中的缺失值进行处理,日期中收盘价缺失情况如下表:表2各支股票收盘价缺失情况股票名称存在交易日数目长城汽车296周大福296BC科技集团294李宁296华润电力296中国电信296青岛啤酒296阿里巴巴296腾讯控股296中国海洋石油296故对于所有股票没有产生交易日期的进行剔除,而有的交易日存在某几只股票在该天停牌(即没有成交量)的情况,用后一天的收盘价填补空值。流程如下图3收盘价处理思路3.2.3数据集成将各个股票的收盘价时序数据转化为面板数据,即将十只股票的收盘价数据合并放到一个数据存储中,便于下一步处理。合并结果如下表3:表3十只股票收盘面板数据(部分)日期长城汽车周大福BC科技集团李宁华润电力中国电信青岛啤酒中国海洋石油阿里巴巴腾讯控股2023/1/39.93215.213.0768.44815.3762.94876.128.7687.674324.672023/1/49.85215.753.1670.19816.1763.01876.028.795.424340.472023/1/510.05216.033.0871.39815.9762.96878.428.6398.624345.42023/1/69.85216.133.0271.09816.4562.97877.028.66100.6243472023/1/99.97215.633.171.39815.7762.99878.928.61109.424359.63.2.4股票收盘价可视化将各个股票的收盘价用Python的pandas库绘制出来,如下图4:图4十只股票从2023年1月至今的收盘价3.3数据提取和分析3.3.1数据处理与分析工具的导入在本文中,采用了numpy和pandas库作为数据处理与分析的主要工具。其中,numpy库以其丰富的数学函数库而著称,它能够高效地处理大型多维数组和矩阵,为复杂的数据分析提供了强大的支持。pandas库用于数据分析,它能对数据的结构做出详细的分析并且性能较好,本文将用pandas的DataFrame和Series数据结构来存储和操作股票收盘价数据。matplotlib是一个用于绘制图形的Python库,我们通过它来绘制可视化图来显示我们的收盘价数据。numpy库和pandas库将为本文研究提供强大的数据处理与分析支持,这为我们后续的研究的准确率和效率提供了保障。3.3.2数据集的导入与预处理由上文得知,本研究所使用的数据已经收集完成,然后需要利用pandas库中的read_csv函数读取这些数据并以DataFrame的形式进行存储。虽然本文收集上来的数据就是按照时间序列来排序的,但是我们为了进一步保证数据的时间序列一致性,需要对数据进行再一次排序,所以使用了DataFrame的sort_values方法。最后,本文为了对读取和排序以后的数据进行检查,使用了head方法,方法返回了数据的前几行。这有助于快速了解数据的结构、变量的范围以及是否存在明显的异常值。验证过后的数据没有问题,以确保本研究下一步的进行。3.3.3数据集规模的检查本文通过shape属性了解到了DataFrame中的数据集data的具体规模,然后得到了一个元组,其中第一个数字是’Close’列中的行数,第二个数字始终是1,最后结果显示样本中有296行。3.4特征工程3.4.1收盘价数据的基本信息检查本文通过调用info()函数对股票收盘价进行初步的检查,它提供了price的详细摘要,包括行数、列数、每列的数据类型以及非空值的数量,行数为296,列数为1,数据类型为数值形式,非空值也是296。3.4.2数据归一化处理数据归一化的原理是对数据的进一步处理,将数据转换为统一的尺度,将数据的特征值放在一个固定的范围内,统一量纲。在本研究中,采用了最小-最大归一化方法(Min-Maxscaling),通过sklearn.preprocessing库中的MinMaxScaler实现,将数据线性映射到[-1,1]的范围内。具体计算公式如下:x'首先,利用MinMaxScaler创建了一个归一化器对象,并且指定了[-1,1]目标范围,继续使用fit_transform方法,输入‘Close’列的值,就得到了一个归一化后的数组,并且重新塑形并并赋值给‘Close’列。归一化处理后的股票价格数据具有更好的数值特性,使得模型在训练过程中能够更快地收敛,并有可能提高模型的预测精度。此外,归一化还有助于提高模型的稳定性,使其在不同数据集上的表现更加一致。进行归一化的公式如(7)式所示xi3.5数据集的制作本研究采用的数据集来源于港股市场10只股票的历史收盘价,需要构建一个用于预测股票收盘价的时序数据集。首先,对已得到的数据做了归一化处理,并且需要将其转换成Numpy数组格式。随后,通过调用split_data函数对数据进行预处理和分割,并且在split_data函数中设定了一个lookback参数来表示预测未来收盘价变动的历史数据长度,设定lookback参数为20,代表了每个数据样本将包含过去20个交易日的股票收盘价信息。遍历原始数据,将连续lookback个时间点的数据作为一个样本,构建成一个新的数据集。这样,每个样本都包含了过去一段时间内的股票收盘价信息,以及紧随其后的一个时间点的价格信息,用于作为监督学习的目标值。在本次数据探究中,对数据集进行了划分,将其拆分为训练集与测试集两部分。具体而言,测试集占据了样本总数的两成,而训练集则占据了八成。这种划分策略旨在确保模型评估的准确性与模型调优的有效性。在数据集的结构上,将每个样本的前lookback-1个时间点的数据作为输入特征(x),最后一个时间点的数据作为目标值(y)。这样,训练集和测试集都包含了相应的输入特征和目标值,便于后续模型的训练和测试。经过一系列数据处理工作,本研究成功地获得了包含输入特征和目标值的训练集和测试集。在数据集划分后设定了x_train和x_test两个变量,分别用于标识训练集和测试集的输入特征。这两个变量的维度清晰地揭示了每个样本包含了20个连续交易日的股票价格数据。同时设置了y_train和y_test两个变量,它们分别代表训练集和测试集的目标值,即模型能够准确预测的未来一天的股票价格。以下是数据集的具体维度信息:图5数据集形状这些信息将用于后续的模型构建和性能评估。这一数据集的构建过程确保了数据的完整性、一致性和可用性。

第4章LSTM模型的构建、验证和分析4.1LSTM模型的构建4.1.1NumPy数组到PyTorch张量的转换首先,为了使数据集与PyTorch深度学习框架实现无缝对接,本模型安装了PyTorch库。在此过程中,一个关键步骤是将NumPy数组转换为PyTorch张量。NumPy库,正如之前所述,是一个功能强大的数学计算工具库。而PyTorch张量,作为PyTorch框架的核心数据结构,用于高效处理多维数组和矩阵运算。在PyTorch中,无论是构建神经网络模型还是执行各种操作,都离不开张量的支持。因此,这一转换步骤对于确保数据在PyTorch框架中的正确处理和高效运算至关重要。本模型使用torch.from_numpy()函数将x_train、x_test、y_train和y_test这些NumPy数组转换为PyTorch张量中最基本的数据类型torch.Tensor。对于LSTM(长短期记忆)和GRU(门控循环单元)模型,本模型分别创建了对应的标签张量y_train_lstm、y_test_lstm和y_train_gru、y_test_gru。这些标签张量将用于监督学习过程中的损失计算和模型优化。通过这一数据预处理步骤,确保了输入数据和标签都与PyTorch框架兼容,为后续的模型训练和评估做好了准备。这种兼容性确保了数据可以在PyTorch中进行高效的计算和操作,从而支持本研究进行深度学习模型的训练和推断。4.1.2LSTM模型参数设置在LSTM模型参数设置中本模型设置了五个参数,分别是输入维度、隐藏层维度、层数、输出维度和训练轮数。首先,设定输入维度(input_dim)为1,因为所选取的只有股票收盘价一个特征,所以我们要设置每个输入样本都只包含一个特征。隐藏层维度(hidden_dim)设置为32,这是表示每个隐藏层包含32个神经元,这一设置能够捕获输入数据的复杂模式,并在不同层之间传递有用的信息。通过调整隐藏层维度,本模型可以控制模型的复杂性和学习能力。设置层数(num_layers)为2,两层隐藏层,多层结构使得模型能够学习更高级别的特征表示,提高了模型的表达能力和泛化能力。设置输出维度(output_dim)为1,因为模型的输入维度为1,而且所需要的结果和输入的特征是一样的,所需要预测的目标变量也是1,所预测的也是下一时间的股票价格。设置训练轮数(num_epochs)为100,这意味着整个数据集将被用于训练模型100次,多次训练以确保模型能够充分学习数据的内在规律和模式。4.1.3LSTM模型结构描述LSTM模型由两部分组成:LSTM层和全连接层,它们共同负责从输入序列中提取特征并生成预测结果。在LSTM层中,将输入维度(input_dim)、隐藏层维度(hidden_dim)和层数(num_layers)作为参数。通过设置batch_first=True,指定输入张量的形状应为(batch_size,sequence_length,input_dim),这有助于高效地处理批量数据。LSTM层负责在序列中捕获时间上的依赖关系,并通过其内部的门控机制来记忆和遗忘信息。本模型初始化了零值的隐藏状态(h0)和细胞状态(c0),它们对于LSTM层的初始化和迭代计算至关重要。这些状态变量在模型的前向传播过程中不断更新,以反映输入序列的动态变化。经过LSTM层处理后,获得了包含序列信息的输出张量(out)。为了生成最终的预测结果,将输出张量的最后一个时间步长的隐藏状态作为全连接层的输入。全连接层(fc)将LSTM层的输出映射到目标维度(output_dim),从而得到模型的最终输出。通过整合LSTM层的记忆能力和全连接层的特征转换能力,本模型能够有效地处理序列数据,并生成准确的预测结果。这种结构使得模型能够捕获输入序列中的长期依赖关系,并适应不同的序列长度和变化模式。4.1.4模型实例化、损失函数与优化器配置为了进行模型的训练和评估,首先实例化了之前定义的LSTM网络模型。通过指定输入维度(input_dim)、隐藏层维度(hidden_dim)、输出维度(output_dim)和层数(num_layers),我创建了一个具有特定结构的LSTM模型。这个模型将作为我后续训练和预测任务的基础。本研究选择了均方误差MSE作为我们的损失函数,去判断LSTM模型的准确性。MSE损失函数的主要作用是用于计算两个值之间平方差均值,在当前阶段,需要计算的一个重要指标是模型预测值与实际值之间的平方差均值。这一指标能够精准地反映模型的预测误差,可以有效地评估模型的性能。通过最小化MSE损失,可以优化模型的参数,使其更好地拟合训练数据。MSE公式如下:MSE=1本研究选择了Adam作为优化器算法。Adam优化器结合了梯度的一阶矩估计和二阶矩估计来动态调整每个参数的学习率,能够快速、准确地最小化损失函数,提高深度神经网络的训练效果和泛化能力。设置学习率为0.01,控制了模型参数更新的步长,以确保模型在训练过程中能够稳定收敛。本研究需要将模型实例化、选择合适的损失函数以及配置优化器,这些组件的配合将能够为后续的模型训练提供更准确的预测结果。4.2LSTM模型的训练4.2.1模型训练与性能评估为了优化模型的参数并使其适应训练数据,本研究执行了一个迭代训练过程,共包含num_epochs轮次。在每一轮迭代中,首先将模型应用于训练数据x_train,得到预测值y_train_pred。接着,使用均方误差(MSE)损失函数计算预测值与实际值y_train_lstm之间的差异,从而得到当前轮次的损失值。在训练过程中,实时打印出每一轮迭代的损失值,以便观察模型的收敛情况。同时,将损失值存储在hist数组中,以便后续进行性能分析和可视化。为了更新模型的参数,首先使用优化器的zero_grad方法清除之前计算得到的梯度。然后,通过调用损失值的backward方法计算模型参数相对于损失函数的梯度。最后,使用优化器的step方法,根据计算得到的梯度更新模型的参数。在训练完成后,测量整个训练过程所消耗的时间,即training_time。这个时间指标反映了模型训练的效率,对于评估模型的性能至关重要。通过上述迭代训练过程,LSTM模型逐渐学习了训练数据的内在规律,并通过优化器不断调整其参数以最小化损失函数。这种训练方法使得模型能够在后续的任务中生成准确的预测结果,并具备较好的泛化能力。4.2.2预测值与实际值的逆变换与整理为了将模型预测的结果和实际值转换回原始数据的尺度,需要应用了与训练数据预处理阶段相同的逆变换操作。这是因为在训练模型之前,通常会对数据进行标准化或归一化处理,以便模型能够更好地学习和泛化。因此,在评估模型性能或进行预测时,需要将模型的输出转换回原始数据的尺度,以便更直观地理解结果。在本研究中,使用scaler.inverse_transform方法来实现这一逆变换过程。该方法根据训练阶段使用的归一化参数,将模型的预测值y_train_pred和实际值y_train_lstm从归一化的尺度转换回原始数据的尺度。通过调用detach().numpy()方法,确保了从模型中获取的预测值和实际值是脱离计算图的NumPy数组,从而可以方便地进行后续的数据处理和分析。接下来,将逆变换后的预测值和实际值分别转换为PandasDataFrame格式。PandasDataFrame是一个灵活且功能强大的数据结构,它允许以表格的形式存储和处理数据。通过将数据存储在DataFrame中,可以方便地进行数据筛选、排序、聚合等操作,以及进行可视化分析。最终,得到了两个DataFrame对象:predict存储了逆变换后的模型预测值,而original存储了逆变换后的实际值。这两个DataFrame将用于后续的性能评估、可视化分析或与其他数据集进行集成。通过执行上述逆变换和整理过程,确保了模型预测结果与实际值之间的比较是在同一尺度下进行的,从而能够更准确地评估模型的性能。4.2.3数据可视化与模型性能分析为了直观地展示原始数据、模型预测结果以及训练过程中的损失变化,可以采用数据可视化的方法。通过生成图表,能够更加清晰地理解模型的性能以及数据的特点。首先,创建一个包含两个子图的图表。在第一个子图中,绘制原始数据与模型在训练集上的预测结果。通过sns.lineplot函数,分别绘制原始数据序列(标签为“Data”,颜色为皇家蓝)和模型预测序列(标签为“TrainingPrediction(LSTM)”,颜色为番茄红)。两条线在同一坐标轴上展示,使得我可以直接比较预测值与实际值之间的差异。该子图的X轴表示时间(天数),Y轴表示股票价格(以港元为单位)。通过设置合适的标题、轴标签和刻度标签大小,确保了图表的清晰度和可读性。在第二个子图中,展示了模型在训练过程中的损失变化。通过绘制损失值随时间(以轮次为单位)变化的折线图,该子图的X轴表示训练轮次(Epoch),Y轴表示损失值。通过可视化图表能够清晰地观察到模型的收敛情况,它随着训练的进行,损失值越来越小,表明模型在逐渐学习并适应数据。图6预测图与损失图通过这两个子图能够看到预测数据与实际数据的差异和模型在训练过程中的学习速度和稳定性,可视化地为我们提供了模型的性能数据,可以全面地评估LSTM模型的性能。4.3LSTM模型的验证4.3.1测试数据集的最后一个样本在LSTM模型评估性能时,需要先测试一个样本,选择测试数据集的最后一个样本x_test[-1]。这个样本与其他样本并没有什么不同,都会遇到各种特征和变量,可以以小见大,可以进一步了解测试数据集的特点,包括数据的分布、范围以及潜在的异常值等。4.3.2模型性能评估与误差分析为了全面评估所构建的LSTM模型的预测性能,在训练集和测试集上分别进行预测,并计算相应的均方根误差(RMSE)。首先,使用训练好的模型对测试集x_test进行预测,得到预测值y_test_pred。RMSE的公式如下:RMSE=1为了将模型的预测输出和真实标签转换回原始数据空间,使用训练期间相同的标准化器scaler对预测值和真实值进行了反标准化处理。具体来说,分别对训练集的预测值y_train_pred和真实值y_train,以及测试集的预测值y_test_pred和真实值y_test进行了反标准化。随后,使用均方误差(MSE)作为性能度量,计算了训练集和测试集上预测值与真实值之间的MSE。为了更直观地比较不同模型或不同数据集的误差大小,将MSE的开方转换为了RMSE。通过计算,得到了训练集上的RMSE(trainScore)和测试集上的RMSE(testScore)。最后,将训练集和测试集上的RMSE,以及模型的训练时间(training_time)记录到了lstm列表中,以便后续进行性能分析和模型比较。这些评估指标不仅可以帮助了解模型在训练数据上的拟合程度,还可以反映模型在未见数据上的泛化能力。通过对比训练集和测试集上的RMSE,可以初步判断模型是否存在过拟合或欠拟合的问题,进而指导后续的模型优化工作。4.3.3数据可视化前的预测结果调整为了将模型的预测结果可视化并与原始价格数据进行对比,首先需要对预测数据进行适当的调整。由于预测是在时间序列上进行的,并且通常使用历史数据来预测未来的值,因此预测结果需要按照时间顺序进行对齐。对于训练集的预测结果y_train_pred,创建一个与原始价格数据price相同形状的空数组trainPredictPlot,并将其初始化为nan值。随后,将预测值填充到trainPredictPlot中从lookback(即模型用于预测的历史数据长度)开始到y_train_pred结束的位置。这样,trainPredictPlot的前lookback个位置为nan,代表在这些时间点没有预测值,而后续位置则包含了训练集的预测结果。类似地,对于测试集的预测结果y_test_pred,创建一个与price相同形状的空数组testPredictPlot,并进行了相同的NaN初始化和预测值填充操作。但是,由于测试集的预测是在训练集之后进行的,因此y_test_pred的开始位置是len(y_train_pred)+lookback-1,确保预测值在正确的时间点上对齐。接下来,使用标准化器scaler对原始价格数据price[‘Close’]进行了反标准化处理,将其转换回原始的价格空间,得到original。最后,为了将训练集和测试集的预测结果以及原始价格数据整合在一起,沿着第二个维度(列方向)将trainPredictPlot、testPredictPlot和original拼接起来,形成一个新的二维数组predictions。这样,predictions的每一列分别代表训练集预测结果、测试集预测结果和原始价格数据。通过这些步骤,得到了一个包含预测结果和原始数据的完整数据集,为后续的数据可视化提供了便利。这样的调整确保了预测结果在时间序列上的正确对齐,使得可以直观地比较模型预测与实际情况之间的差异。4.3.4数据的可视化为了直观地展示LSTM模型在训练和测试数据集上的预测性能,使用Plotly库来创建交互式图表。通过添加不同的迹线(traces),能够在同一张图上同时展示训练集预测、测试集预测以及实际的价格数据。图7长城汽车测试集与训练集与实际收盘价的对比图图8阿里巴巴测试集与训练集与实际收盘价的对比图图9BC科技集团测试集与训练集与实际收盘价的对比图图10中国电信测试集与训练集与实际收盘价的对比图图SEQ图\*ARABIC11中国海洋石油测试集与训练集与实际收盘价的对比图图SEQ图\*ARABIC12华润电力测试集与训练集与实际收盘价的对比图图SEQ图\*ARABIC13李宁测试集与训练集与实际收盘价的对比图图SEQ图\*ARABIC14青岛啤酒测试集与训练集与实际收盘

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论