赞
踩
hello,我是毛豆。
上次毛豆以涨停双响炮为例,介绍了如何通过python对股票进行分钟级别的监控:
后面收到小伙伴的私信,说最近人工智能很火,问毛豆有没有可能用人工智能来炒股呢?
其实,用AI模型炒股这件事情早已广泛存在,大量的量化机构都在研究和使用,这里面主要涉及到机器学习、深度学习技术,想要深入研究并不是一件容易的事情。为了满足大家的好奇心,今天毛豆就以时序分析中常用的LSTM模型为例,来和大家分享一下机器学习技术是如何应用于股价预测的。
首先说一下为什么要使用LSTM模型来预测股价。一方面,股价预测是高度非线性的,这就要求模型能够处理非线性问题;另一方面,股价具有时间序列的特性,适合使用循环神经网络。因此相比于众多ML和DL模型,LSTM在这个问题上有着天然的优势。
然后介绍一下今天的主角,LSTM模型。LSTM的全称是Long Short Term Memory,是循环神经网络(RNN)的一种,顾名思义,它具有记忆长短期信息的能力。长期困扰传统神经网络结构的一个基本问题是解释“信息”和“上下文”相互依赖的输入序列,在这个问题上RNN能起到一定的作用,但是当输入序列过长时RNN的权重矩阵要循环相乘,所以会产生梯度消失和梯度爆炸的问题,因此RNN不能解决长期依赖问题,这时候LSTM就可以派上用场了。
LSTM模型的1个神经元包含了1个细胞状态(cell)和3个门(gate)机制,三个门分别是输入门、遗忘门和输出门。其中输入门决定将哪些新信息添加到细胞状态,遗忘门负责单元状态的权重和激活函数,输出门决定输出什么,它决定了后面隐藏状态的值。LSTM的核心是细胞状态,它贯穿整个细胞却只有很少的分支,这样能保证信息不变的流过整个RNN。下面是 LSTM 神经元的典型内部工作图:
其中C(t-1)为上一时刻的细胞状态值,C(t)为这一时刻的细胞状态值;h(t-1)为上一时刻的输出,h(t)为这一时刻的输出。参数更新方法主要是反向传播和链式求导,具体公式在这里不做阐述。由于存储单元中编码的值不会重复更新,因此在使用反向传播训练时梯度不会消失,从而使LSTM能够克服梯度消失问题。
总的来说,信息按照一套规则进入LSTM网络,只有经过LSTM验证的信息才会被保留,否则它将被遗忘门删除。这种单元状态是保持网络和输入的长期记忆和上下文的原因。
LSTM模型就介绍到这里,接下来介绍如何通过LSTM模型实现股价预测。
导入数据分析常用的包:
- #基础数据分析包
- import os
- import pandas as pd
- import numpy as np
- import pickle
- import jqdatasdk
- from jqdatasdk import *
- import mpl_finance as mpf
- from matplotlib.dates import date2num
- import matplotlib.pyplot as plt
- import matplotlib.ticker as ticker
导入深度学习keras框架。多年前毛豆做深度学习模型的时候,keras还是独立的包,其后端(底层框架)是可以选择tensorflow或Theano的,但现在keras已经集成到tensorflow中了,因此直接用tf.keras就好了:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。