APP下载

基于改进的随机森林算法股票收益率预测研究

2020-04-09陈玲玲曹海燕

关键词:适应度粒子股票

方 昕,陈玲玲,曹海燕

(杭州电子科技大学通信工程学院,浙江 杭州 310018)

0 引 言

在股票市场研究中,股价的涨跌一直是人们关注的热点。国内外学者对股票价格预测进行了深入研究,提出多种预测方法。时间序列分析法最先应用于股票价格预测,建立ARIMA-SVM模型对股票开盘价进行短期预测[1],机器学习法是一种有别于传统股票市场预测的新方法[2]。文献[3]将股票市场的Cnx Nifty和Bombay Stock Exchange(BSE)股票数据作为历史数据,分别使用朴素贝叶斯(Naive Bayes,NB)、支持向量机(Support Vector Machine,SVM)、人工神经网络(Artificial Neural Networks,ANN)和随机森林(Random Forest,RF)这4种算法来预测股票市场的趋势,结果表明RF模型预测的准确率最高。文献[4]采用了网格搜索算法优化随机森林参数,对决策树的个数以及分裂属性进行了参数优化,解决了随机森林参数寻优问题。当股票特征过多时,存在输入数据维度过大、计算量过高问题,文献[5]采用粒子群算法进行特征选择,剔除冗余特征来降低输入数据维度。但RF进行股票预测研究时,即存在随着特征种类的增加,股票趋势预测精度下降,耗时增加问题,又存在参数较多,其预测准确率对参数依赖程度高的问题。为此,本文在文献[3]的随机森林算法预测基础上进行改进,结合文献[4]和文献[5]改进随机森林算法,将粒子群算法(Particle Swarm Optimization,PSO)和网格搜索算法(Grid Search,GRID)相结合,提出一种改进的随机森林算法——粒子群参数网格搜索的随机森林算法 (Particle Swarm Optimization Grid Search Random Forest,PSO-GRID-RF)。先利用PSO筛选最优特征输入RF中,再利用GRID同步搜索最优参数,防止算法陷入局部最优,获得更优的分类性能和趋势预测精度。

1 理论基础

1.1 随机森林算法

随机森林算法的过程如下:选择股票代码,输入股票的日交易数据,对交易数据进行大量特征提取,并对输入特征进行筛选,将筛选的特征参数作为输入变量输入到随机森林中,股票价格的涨跌情况作为随机森林的输出变量。

对一组决策树h1(x),h2(x),…,hk(x),其边缘函数公式如下:

(1)

式中,marg(·)表示边缘函数,avk(·)表示取平均值,I(·)表示示性函数,j表示分类中表示错误类的向量,X表示输入向量,Y表示分类中表示正确类的向量,k表示树的个数。

式(1)表示输入向量X被分类器分为Y比被分为j的最大平均票数的多的程度。

根据大数定理可知,泛化误差为:

(2)

式中,E*(·)表示泛化误差,PX,Y(·)表示边缘函数小于0的概率,泛化误差一般小于某个固定的值。

在随机森林中,第k个决策树hk(X)表示为h(X,θk),其中X表示输入向量,θk表示用于训练第k个树自举(Bootstrapped)数据集。对于从原始数据集θ生成的一系列自举样本集θ1,θ2,θ3,…,θk,发现E*收敛于:

(3)

为了证明关于数据集的定理,袋外数据(Out of Bag,OOB)用来评估随机森林的泛化性能好坏,其得分记为Oscore,误差记为Oerror。

1.2 PSO的特征选择算法

PSO算法用于股票特征的选择,是一种基于群体智能的随机优化算法,速度向量为Vi=[vi1,vi2,…,vin],同时每个粒子位置向量为Xi=[xi1,xi2,…,xin],每次迭代粒子更新到新位置,每次的位置速度随机分配,通过适应值函数计算出其在当前位置下最优适应度的一种进化技术[6]。粒子当前速度Vi更新如下:

Vi=wVi+c1r1(Pbesti-Xi)+c2r2(Gbesti-Xi)

(4)

式中,Xi表示第i个粒子位置,Vi表示第i个粒子的速度,Pbesti表示第i个粒子迭代过程时粒子的局部最优位置,Gbesti表示第i个粒子迭代过程时粒子的全局最优位置,w表示惯性因子,c1,c2表示学习因子,本文中,w=1,c1=c2=2;r1,r2∈[0,1],随机均匀分布。

粒子的位置Xi更新如下:

(5)

(6)

式中,r3∈[0,1]的随机数,S(·)表示sigmoid函数,以速度作为sigmoid函数的变量,调整空间位置,式(5)与随机数比较,更新粒子的位置状态,最终粒子的位置由0和1组成。

1.3 网格搜索算法

在随机森林分类过程中,树棵数、最大特征数、最大树的深度和最小样本数过大或过小都会引起过拟合或欠拟合的现象,从而影响分类精度。网格搜索算法是指定参数值的一种穷举搜索方法,将随机森林的参数通过交叉验证的方法来进行优化,以获得最优参数的学习算法[7]。

2 算法流程设计

基于PSO-GRID-RF的股票交易信号预测算法流程如图1所示,主要步骤为。

(1)获取数据:通过网站获取股票数据;

(2)输入数据:提取股票数据的特征参数,作为输入数据,并将数据归一化;

(3)优化特征子集F:采用PSO算法进行特征选择,选中的特征用于随机森林的输入向量进行趋势预测,根据粒子的位置更新,用1表示选中,用0表示未选中,选中的特征形成特征子集F,F的个数即为优化选取的特征数;

(4)设定判定条件:若迭代次数超过最大迭代次数,则跳出循环,并根据群体历史最优位置输出优化的特征子集以及优化的参数;

(5)输出最优特征:若最大迭代次数满足步骤4设定的条件,则输出粒子群选择的最优特征,否则返回上一步;

(6)构建数据矩阵:根据步骤5选出的最优特征构建随机森林输入数据矩阵;

(7)训练样本内数据:训练集和测试集交叉验证优化随机森林参数,其参数包括树棵数n,最大特征数m,最大树的深度d和最小样本数l。将训练集采用交叉验证进行调参,70%用于训练模型,30%用于验证模型,利用网格搜索算法对随机森林进行参数寻优,得到预测模型,使得模型对数据有较好的适应度以及预测的精确度;

(8)测试样本外数据:确定最优参数后,再用测试数据来测试训练的随机森林算法模型,得到分类结果,以测试集所有预处理后的样本特征作为模型的输入,得到每个样本未来1 d预测趋势,并与实际股票趋势进行比较,得出股票预测的精确度以及一些评价指标。

3 实验数据处理

3.1 股票交易信号数据

选择股票日数据最高价(High,Hi)及最低价(Low,Li)、收盘价(Close,Ci)构建交易信号Yi={y1,y2,…,yn},其中,i=1,2,…,n为样本编号[8]。

交易信号的具体构建步骤如下:

3.2 股票数据预处理

股票数据是使用沪深300,中证500股票数据,选取2012-02-14至2015-05-29的数据作为样本内训练数据,共800个数据,2015-06-01至2016-03-24的数据作为样本外第一组测试数据,2016-03-25至2017-03-24的数据作为样本外第二组测试数据,每个测试集200个数据。本文用到的技术指标为RSI,KDJ,A/D,ATR,MOM,MFI,ROC,OBV,CCI,EOM,TRIX,VI,EMA,MACD,除MACD有3个时间跨度,其余每1个技术指标都由4个不同时间跨度构成1组特征向量Xi={Xi1,Xi2,Xi3,…,Xi13,Xi14}(i=1,2,3,4),为了方便计算,进行归一化处理[9]:

(7)

3.3 评价指标

表1 混淆矩阵

随机森林算法分类过程中,分类预测用混淆矩阵表示,如表1所示。

表1中,TP为正类分为+1,FZ1为正类分为0,FN1为正类分为-1;FP1为零类分为+1,TZ为零类分为0,FN2为零类分为-1;FP2为负类分为+1,FZ2为负类分为0,TN为负类分为-1;FP=FP1+FP2,FN=FN1+FN2,FZ=FZ1+FZ2。N表示样本总量,NTP,NFN,NFP,NTN,NTZ分别表示每种情况的样本个数,N=NTP+NFN+NFP+NTN+NTZ。

准确率(PAccuracy)表示被预测正确的概率,召回率(PRecall)表示正类的样本预测为正的概率,查准率(PPresion)表示被预测为正类的样本中正确的概率[7],其计算公式如下:

PAccuracy=(NTP+NTN)/N

(8)

PRecall=NTP/(NTP+NFN1+NFZ1)

(9)

PPresion=NTP/(NTP+NFP)

(10)

综合评价指标由Recall和Precision的加权平均值组成的综合性能指标,记为F,计算公式如下:

(11)

适应度值(Fitness)由F与特征数Nf组成,值越大越好,计算公式如下:

(12)

式中,ωa和ωf分别是上述综合性能指标F与特征数Nf这两个因素的权重,满足ωa+ωf=1。

4 实验结果与分析

设定随机森林分类参数树棵数n,最大特征数m,最大树的深度d,最小样本数l,随机状态r,采用网格搜索算法对随机森林参数寻优过程如下。

(1)设定随机森林的参数变量(n,m,d,l,r)的范围以及搜索的步长,根据实际情况由大到小,层层递进搜索,其中n的初始范围为[0,1000],步距选为100,m根据输入特征的维度来确定,d的初始范围为[10,100],步距选为10,l的初始范围为[0,10],步距选为1,r的初始范围为[0,100],步距选为10。

(2)采用k-CV(k维交叉验证)的方法对训练数据集进行训练[6],其中k=2,训练得到分类准确率最高的局部最优参数,其结果n为600,m为55,d为30,l为2,r为50。

(3)根据局部最优参数,在其附近选择不同的区间进行二次寻优,n的范围为[600,700],步距选为10,d的初始范围为[30,40],步距选为1,r的初始范围为[40,60],步距选为1,直到选择出最佳的分类参数作为随机森林的参数。

网格搜索算法搜索得出最佳参数如表2所示。

表2 不同算法对应随机森林参数对比

通过表2可以看出:当只使用RF时,参数随机确定,沪深300、中证500预测精确度分别为0.679,0.736,Oscore分别为0.641,0.704,适应度分别为0.479,0.522;使用GRID-RF算法时,对于沪深300、中证500寻得参数树棵数分别为620,650,最大特征数均为55,最大树的深度均为30和叶子节点最小样本数分别为2,3,其精确度分别为0.757,0.857,Oscore分别为0.803,0.860,适应度分别为0.538,0.604,通过对比发现:其值相对于RF算法都得到大幅度提升,改进算法有利于预测精确度的提升;当使用PSO-GRID-RF时,对于沪深300、中证500寻得树棵数均为630,最大特征数分别为30,29,最大树的深度均为30,叶子节点最小样本数分别为3,2,其精确度分别为0.863,0.876,Oscore分别为0.865,0.860,适应度分别为0.616,0.626,其值相对于GRID-RF算法得到一定提升。

对股票采用粒子群优化适应度曲线,由适应度计算公式(12)可以看出:当特征数量减小时,算法性能得到提高,适应度值增大。沪深300、中证500使用粒子群算法进行特征选择时迭代的最优适应度值和适应度均值变化过程曲线如图2所示。

图2 使用粒子群特征优化适应度变化曲线

由图2可以看出:随着迭代次数的增加,特征数量减小,算法性能提高,适应度值增大。适应度值变大说明此算法的泛化能力随着迭代次数逐渐变好。

不同算法对比结果如表3所示。

表3 不同算法结果对比

通过表3的数据对比可知:本文提出PSO-GRID-RF的股票交易信号识模型性能要优于GRID-RF模型,GRID-RF模型要优于RF模型,因此采用PSO-GRID-RF模型综合算法的优点,即进行了特征提取,又进行了参数寻优,使得组合模型预测更加精确稳定。

5 结束语

本文使用随机森林算法对股票收益率进行研究,提出PSO-GRID-RF算法。利用PSO算法计算收敛速度快、设置参数少等特点进行输入特征的筛选,并使用GRID算法进行全局参数的寻优,两者组合成一种新的股票趋势预测算法模型,预测未来股票价格涨跌趋势时,其预测准确度有较大提高。但是,在实验过程中发现:股票数据是一种具有时序性的时间序列,其前后数据之间有一定的联系,普通交叉验证并不完全适合对时间序列进行研究,在一定程度上对股票预测准确度有一定的影响,因此对股票时序性分析将是今后研究的重点。

猜你喜欢

适应度粒子股票
改进的自适应复制、交叉和突变遗传算法
碘-125粒子调控微小RNA-193b-5p抑制胃癌的增殖和侵袭
基于膜计算粒子群优化的FastSLAM算法改进
Conduit necrosis following esophagectomy:An up-to-date literature review
启发式搜索算法进行乐曲编辑的基本原理分析
本周创出今年以来新高的股票
本周创出今年以来新高的股票
本周连续上涨3天以上的股票
近期连续涨、跌3天以上的股票
问:超对称是什么?