您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[华西证券]:机器学习因子系列:时序模型+回归模型因子策略 - 发现报告

机器学习因子系列:时序模型+回归模型因子策略

2023-05-06王祥宇、杨兆熙、杨国平华西证券甜***
机器学习因子系列:时序模型+回归模型因子策略

投资要点:► 量化交易策略 机器学习量化交易策略的制定,是从海量历史数据中使用计算机强大的处理能力,挖掘并分析出那些能够为投资者带来收益的各种大概率可行的投资方式来实现的。通过数学模型对这些策略进行分析并加以验证,以期望让投资者获得更稳定的预期收益。 ► 时序模型和机器学习回归算法结合使用有利于提高预测准确性 时序模型可以用于处理具有时间序列的数据,并从中获取相关的信息,为机器学习回归算法提供更精确的输入。 与此同时,机器学习回归算法可以进一步加强时间序列数据的分析能力。二者结合使用可以带来更好的数据预测准确性, 带来更好的决策结果。 ► lstm和线性支持向量回归算法结合使用对提升平均皮尔逊系数效果最佳 Lstm模型具有记忆单元和门控机制,可以有效处理长期依赖关系,因此在时序数据建模方面表现出色。回归算法不胜枚举,各回归算法胜任的问题领域不同。但在本问题上 ,经实验验证,线性支持向量回归算法优于其他常见的回归方法。 风险提示 模型基于对历史数据统计,仅作为投资参考。 1.LSTM模型基本理论 长期以来,隐变量模型存在着长期信息保存和短期输入缺失的问题,解决这一问题的最早也是最经典的方法是长短期存储器(Long Short-Term Memory,LSTM),他与门控循环单元(GRU)有很多相似之处,有意思的是,虽然LSTM比GRU要复杂一些,但LSTM却早提出近20年。 引入自循环的巧妙构思,以产生梯度长时间持续流动的路径是LSTM模型的核心贡献。其中一个关键扩展是使自循环的权重视上下文而定,而不是固定的。门控此自循环的权重,累积的时间尺度可以动态地改变。在这种情况下,即使是具固定参数的LSTM,累积的时间尺度也可以因输入序列而改变,因为时间常数是模型本身的输出。 LSTM已经在很多应用中取得重大成功。 长短期记忆网络的设计灵感来自于计算机的逻辑门。长短期记忆网络引入了记忆元(memory cell),或简称为单元(cell)。有些文献认为记忆元是隐状态的一种特殊类型,它们与隐状态具有相同的形状,其设计目的是用于记录附加的信息。为了控制记忆元,我们需要许多门。其中一个门用来从单元中输出条目,我们将其称为输出门(output gate)。另外一个门用来决定何时将数据读入单元,我们将其称为输入门(input gate)。我们还需要一种机制来重置单元的内容,由遗忘门(forget gate)来管理,这种设计的动机与门控循环单元相同,能够通过专用机制决定什么时候记忆或忽略隐状态中的输入。 1.1.输入门、遗忘门和输出门 当前时间步的输入和前一个时间步的隐状态作为数据送入LSTM的门中,如图所示。它们由三个具有sigmoid激活函数的全连接层处理,以计算输入门、遗忘门和输出门的值。因此,这三个门的值都在(0,1)的范围内。 LSTM的数学表达如下:假设有ℎ个隐藏单元,批量大小为𝑛,输入数为𝑑。因此,输入为𝑿∈ℝ,前一时间步的隐状态为𝑯∈ℝ。相应地,时间步𝑡的门被定 𝑛×𝑑 𝑛×ℎ 𝒕 𝒕−𝟏 ̃ 候选记忆元𝑪的计算方法与上面相似,但是使用的tanh函数作为激活,计算方法如下: 𝒕 1.3.记忆元和隐状态 在LSTM中,有一种机制来控制输入和遗忘:输入门控制采用多少来自记忆元的内容,而遗忘门控制保留多少上一个记忆元的内容。 输出门发挥作用的地方就是隐状态,在长短期记忆网络中,它仅仅是记忆元的tanh的门控版本。只要输出门接近1,我们就能够有效地将所有记忆信息传递给预测部分,而对于输出门接近0,我们只保留记忆元内的所有信息,而不需要更新隐状态。 2.LSTM模型建模 2.1.模型合理性的讨论 理论上,股票价格是可以预测的,但是影响股票价格的因素有很多,而且目前为止,它们对股票的影响还不能清晰定义。这是因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络,对股票进行预测。 虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困难。Hochreiter和Schmidhuber提出的长短期记忆(Long Short-Term Memory,LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。 综上所述,深度学习中的LSTM模型能够很好地刻画时间序列的长记忆性。 2.2.模型优缺点的讨论 LSTM模型优点如下: 1.改善了RNN中存在的长期依赖问题;LSTM的表现通常比时间递归神经网络及隐马尔科夫模型(HMM)更好。 2.LSTM通过各种门函数来将重要特征保留下来,能够有效减缓长序列问题中可能出现的梯度消失或爆炸,虽然并不能杜绝这种现象,但在更长的序列问题上表现优于传统RNN。 LSTM模型缺点如下: 1.并行处理上存在劣势,只能从前到后,与一些最新的网络相对效果一般; 2.RNN的梯度问题在LSTM及其变种里面得到了一定程度的解决,但还是不够。 它可以处理100个量级的序列,而对于1000个量级,或者更长的序列则依然会显得很棘手。 3、计算费时。如果LSTM的时间跨度大且网络深,计算量大且耗时。 input1包含了一天股票数据的信息,input2包含了一周股票数据的信息,他们的维度均为c*40*6(c为通道数)。将input1和input2分别通过LSTM层,这两个LSTM的权重不共享,得到c*60*1维的矩阵,经过归一化处理之后拼接为一个c*120*1维的矩阵,此矩阵包含了两个输入的全局状态信息。最后,将结果经过一个全连接层输出一个c*1维的矩阵,即得到预测结果。 2.3.2.数据及参数选择 LSTM模型的重要参数如下: 2.4.策略具体过程 对于上述模型在数据上训练的结果如下图所示,横坐标是每次数据所运行的批次,纵坐标是每一个批次的平均准确率。 该模型的测试集的结果如下。 以下的方法,我们将在原模型(lstm)的基础上,增加回归模型尝试优化和提高。 3.集成学习理论 和传统学习方法训练一个学习器不同,集成学习方法训练多个学习器并结合它们来解决一个问题。一个集成由多个基学习器构成,而基学习器由基学习算法在训练数据上获得,它们可以是决策树、神经网络或其他学习算法。大多数集成学习方法使用同一种基学习算法产生同质的基学习器,即相同种类的学习器,生成同质集成(homogeneous ensemble) ;同时,也有一些方法使用多种学习算法训练不同种类的学习器,构建异质集成(heterogeneous ensemble)。通常,集成具有比基学习器更强的泛化能力 , 很大程度上是因为它们能够把比随机猜测稍好的弱学习器( weaklearner )变成可以精确预测的强学习器( strong learner)。 根据基分类器的生成方式,集成学习方法有两种范式:并行生成基分类器的“并行集成方法”Bagging,以及串行生成基分类器的“串行集成方法”Boosting。 3.1.Bagging算法 由于聚合独立的基分类器可以显著降低误差,所以我们希望得到的基分类器越独立越好。给定训练集,一种可能的实现是采样得到若干相互没有重合祥本的子集,每个子集各自训练基分类器。然而,由于训练数据是有限的,这样得到的子集样本少,不具代表性,使得基分类器的性能受限。 Bagging采用自助采样生成不同的基分类器。它引人自助采样得到训练子集用于训练基分类器。具体来讲,给定一个样本数为𝑚的训练集合,它通过有放回采样得到有𝑚个训练样本的采样集。原始样本有的被选中多次,有的未被选中。重复过程𝑇次,得到𝑇个样本数目为𝑚的样本集。对每个采样出来的训练集,使用基学习算法可以得到一个基学习器。Bagging采用最常用的方法来聚合基分类器,即在分类任务上投票,在回归问题上平均。Bagging算法如下所示。 {( 𝑥1 )( 𝑥2 ,𝑦1, ) ( )} ,𝑦2,…𝑥𝑚,𝑦𝑚; 输入:数据集𝐷=基学习算法ℒ; 基学习器数𝑇. 步骤: end 𝑇𝑡=1 ∑ () 𝕝(ℎ𝑥=𝑦). 输出:𝐻(𝑥)=argmax 𝑡 𝑦∈𝒴 值得一提的是,自助采样赋予了Bagging一个额外优势:给定𝑚个训练样本,第𝑖个样本被选中0,1,2...次的概率近似为𝜆=1的泊松分布,所以第𝑖个样本至少出现一次的概率为1−(1/𝑒)≈0.632。即对Bagging的任一基分类器,训练时原始训练集中约有36.8%的样本未被使用。此时,这个基分类器的好坏可以通过这些out-of-bag,OOB样本估算,继而对Bagging算法的泛化误差进行估算。 3.1.1.随机森林算法 随机森林(Random Forest,RF)是Bagging的升级,它在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机特征选择。具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假设有𝑑个属性)中选择一个最优属性;而在随机森林中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含𝑘个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的𝑘控制了随机性的引入程度,如果𝑘=𝑑,则基决策树的构建与传统决策树相同;若𝑘=1,则是随机选择一个属性用于划分。 随机森林算法生成过程如下: 1、从原始数据集中每次随机有放回抽样选取与原始数据集相同数量的样本数据,构造数据子集; 2、每个数据子集从所有待选择的特征中随机选取一定数量的最优特征作为决策树的输入特征; 3、根据每个数据子集分别得到每棵决策树,由多棵决策树共同组成随机森林; 4、最后如果是分类问题,则按照投票的方式选取票数最多的类作为结果返回,如果是回归问题,则按照平均法选取所有决策树预测的平均值作为结果返回。 3.2.Boosting算法 Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器数达到事先指定的数目𝑇,最终将这𝑇个弱学习器通过集合策略进行整合,得到最终的强学习器。简单来说,Boosting就是串行地训练一系列弱分类器,使得被先前弱分类器分类错误地样本在后续地到更多关注,最后将这些分类器组合成最优强分类器的过程。Boosting算法的一般过程如下。常见的Boosting算法有Adaboost、GBDT、XGBoost等。 输入:样本分布𝒟; 基学习算法ℒ; 基学习器数𝑇. 3.2.1.GBDT GBDT是boosting算法的一种,它是一种迭代的决策树算法。GBDT的核心原理是先用初始值预测一颗决策树,得到本轮的残差(即真实值减预测值),然后用残差作为下一轮决策树的预测对象,这时会再产生一个残差,再用这个残差作为下一轮的预测对象,以此循环迭代直到最后一轮的预测残差为0或非常小的时候就停止迭代,然后把所有轮的模型预测结果相加得到最终预测结果,GBDT核心原理如下图所示。 3.2.2.XGBoost XGBoost(extreme gradientboosting)是GBDT的一种工业实现,也是通过不断增加新树,拟合伪残差去降低损失函数。 XGBoost本质上仍然属于GBDT算法,但在算法精度、速度和泛化能力上均要优于传统的GBDT算法。从算法精度上来看,XGBoost通过将损失函数展开到二阶导数,使得其更能逼近真实损失;从算法速度上来看,XGBoost使用了加权分位树sketc