APP下载

机器学习在股价预测上的应用

2022-07-22钱琦淼王映艨蔡飞君

中国市场 2022年21期
关键词:样本数决策树森林

钱琦淼,张 朵,王映艨,刘 睿,蔡飞君

(无锡太湖学院 会计学院,江苏 无锡 214064)

1 引言

近年来,机器学习在股票价格预测的应用中越来越广泛,量化投资的形式也迅速占据着金融市场。徐浩然等人(2020)针对股票预测研究的CNN和LSTM两种深度学习算法做了优缺点的阐述分析。CNN的特征选择具有更好的表现,而LSTM则更加关注时间序列的相关性,并且提出将两种模型融合,各自发挥优势,得到最优的预测效果。由于股票的复杂以及不确定性,所以到现在为止国内针对单只股票的走势预测研究较少,大多基于海外市场,而另一部分集中于对算法进行优化。文章学习前人对个股的研究思路,尝试并选用随机森林和GBDT两种机器学习的算法对宁德时代的收益率进行预测,通过不断的对参数调整,使得模型预测效果达到最优。探索两种机器学习的算法在预测未来股票的收益情况上的优劣比较和优化,这是文章研究的目的。

2 机器学习及算法理论介绍

2.1 机器学习介绍

机器学习现有的主要研究是在对数据的初步了解和学习目的分析的基础上,选择合适的学习算法进行训练,最后利用训练后的模型对数据进行分析和预测。文章中运用到的机器学习算法有随机森林和GBDT。

2.2 随机森林

何裕(2014)通过决策树、Logistic回归模型、神经网络模型挖掘研究公司财务比率指标的变化和股价变化趋势的内在联系,最后组合模型构建,证实了技术对于股价预测的可行性与合理性。随机森林是对决策树算法的一种改进,将多个决策树组合,每棵树都通过独立提取的样本建立,采用自上而下的递归方法,对未知数据进行分类,按照决策树上生成时所采用的分割性逐层往下,直到一个叶子节点,到叶子节点处的熵值为零。在股市的应用中,首先需要找到合适的分类器来阐述各因子与下期收益的关系,要利用历史数据,训练分类器。获得参数后,再代入各股因子数据并分类,从而选取优秀股。

2.3 GBDT

胡谦(2016)结合机器学习、技术分析研究量化选股策略,首次将GBDT和GB Rank用于量化选股领域,自动学习出能对股票未来表现进行排序的模型,证明使用GBDT算法的两个策略有较强盈利性。GBDT(Gradient Boosting + Dicision Tree)算法是Boosting迭代融合算法,在传统机器学习算法中GBDT是最适合真实分布拟合的几种算法之一。使用当前模型中损失函数负梯度方向的值作为残差的近似值,拟合CART回归树。GBDT将累积所有回归树的结果,并不断减小训练过程中产生的残差,以实现将数据分类或回归的算法。

3 数据预处理

3.1 实验平台

文章在建模分析部分采用 Python语言,本次实验选取的数据分析环境是Anaconda,采用Web应用程序Jupyter Notebook进行建模。

3.2 数据来源

由于Tushare返回的绝大部分数据格式都是pandas DataFrame类型,非常便于数据分析和可视化,减轻工作量,所以本次实验选取的数据来源于Tushare。

3.3 数据预处理

宁德时代(300750.SZ)作为新能源板块中表现比较突出的股票,文章截取了其2016年1月1日到2021年2月4日的交易数据,分别是交易日期、开盘价、最高价、最低价、收盘价、昨收价、涨跌额、涨跌幅、成交量和成交额,一共649期。

图1 部分数据集描述

文章还对数据宁德时代的收盘价计算了100天的移动平均值,并取每个滑窗的移动平均值。从图2中,可以看出2019年11月开始,宁德时代股票价格呈现明显上升趋势。

图2 移动平滑价格线

由于非平稳型的趋势线,实验决定预测宁德时代的收益情况。由于时间序列存在滞后性,于是在实验中设计了一些股票的滞后项——return-1,return-2,return-3。

4 实验研究分析

文章收集数据的周期为2016年1月1日到2021年2月4日,选择了开盘价、最高价、最低价等11个影响收益率的因子。文章将2016年1月1日到2020年10月1日之前的数据作为训练集,一共561期数据。2020年10月1日到2021年2月4日之间的数据作为测试集,一共83期数据。

4.1 随机森林

实验过程中,文章首先引入决策树,在随机状态为10,最大迭代次数为100,叶子节点最少样本数为70的条件下建立模型,在拟合数据后进行预测,训练集的平均绝对误差是0.00748,测试集则是0.00752。从随机森林这一模型中,它的随机性难以对模型进行解释,因此猜测模型容易在噪声过多的分类和回归问题中过拟合。为了验证猜想,实验尝试通过调参来提高模型的泛化能力。

在整个随机森林调参过程中,要选择一个适中的最大迭代次数,故得到了实验中最佳的弱学习器迭代次数为5。在此基础上,得到决策树最大深度范围为5,内部节点再划分所需最小样本数为100。由于内部节点再划分所需最小样本数还和决策树其他的参数存在关联,实验还需要对内部节点再划分所需最小样本数和叶子节点最少样本数一起调参,得到叶子节点最少样本数30,内部节点再划分所需最小样本数50。

图3 部分数据集描述

基于上述结果,再对最大特征数做调参,搜索得到最大特征数为5。经过一系列调参,用搜索到的最佳参数,得到最终的模型拟合训练集的平均绝对误差值为0.005543,测试集是0.00920,结果发现无显著变化。

4.2 GBDT

GBDT和传统的Adaboost有很大的不同,传统的Adaboost会使用上一次迭代弱学习器的错误率来更新训练集的权重,使迭代继续进行,而GBDT算法的弱学习器(基模型)是CART,故拟合出一棵CART回归树,对实验过程中构成一个强学习器来说至关重要。在整体的迭代思维上,GBDT的迭代通常使用前向分布算法,损失函数的负梯度在当前模型的值作为回归提升树残差的近似值,在持续拟合的过程中,拟合值和目标值之间的残差会越来越小,每一棵树的预测值加起来就是模型最终的预测结果。所以在本次实验中一共建立了学习器644个,步长为0.1。最大的弱学习器的个数为默认值100。

最终得到训练集的绝对误差为0.000153,测试集为0.0137。预测收益率的标准差为0.03217,绝对误差值过小,模型过拟合。笔者认为应当通过调参来优化模型的泛化能力。为了验证猜想,笔者开始进行调参。首先调参需要选择一个较小的步长来网格搜索最好的迭代次数,得到最佳弱学习器的个数为80,树的最大深度为9,最小样本划分树为5,叶子节点最少样本数为10,最大特征数目为5,而随机状态为10。修改成最优参数后,得到测试集的绝对误差为0.004412,训练集为0.001657。

5 结论与展望

从本次实验来看,能观察到随机森林这一模型训练速度更快,因为特征子集是随机选取的,就不用做特征选择。由于待选特征也是随机选取,所以对特征缺失不敏感,调参后发现结果无显著变化甚至比原来误差更大,猜测存在过拟合现象,从而发现了随机森林的缺点,容易在噪声过多的分类和回归问题中过拟合;与单个决策树相比,它的随机性让模型难以进行解释。

相较于随机森林模型,GBDT具有以下两个优点:其一,适用面广,离散的或是连续的数据都可以处理;其二,GBDT模型的调参过程比较简单,在相对小的调参过程下,GBDT的预测结果更为准确。GBDT就最终的输出结果而言,提升树即是整个迭代过程生成的回归树的累加或加权累加,是基于权值的弱分类器集成,通过减少模型偏差提高性能。此外该模型对异常值也比随机森林更敏感。

因此,从本次实验中发现GBDT精度略高于随机森林模型,且在一些调整后,GBDT模型获得了较好的预测效果。

图4 训练集比较

图5 测试集比较

猜你喜欢

样本数决策树森林
勘 误 声 明
一种针对不均衡数据集的SVM决策树算法
决策树和随机森林方法在管理决策中的应用
哈Q森林
哈Q森林
哈Q森林
Fisher线性判别式阈值优化方法研究
基于决策树的出租车乘客出行目的识别
哈Q森林
三时间间隔圆锥补偿姿态更新算法性能分析