基于随机森林算法的股价预测


在股价预测领域,基于决策树、随机森林、支持向量机、神经网络等机器学习算法的量化投资策略层出不穷。本文主要介绍随机森林模型在股价预测领域的应用及拓展。


1

决策树

随机森林算法是一种集成学习方法,随机森林的基分类器是决策树,决策树是一种最基本的分类与回归模型,由节点和有向边组成,因其外观看起来像一棵树,所以叫做决策树。其中,节点又分为根节点、内部节点、叶子节点。根节点就是决策树开始时位于最上层的那一个节点;叶子节点相反,是位于决策树最末端的底层节点;除叶子节点和根节点以外的节点统称内部节点。根据功能的不同,又可以分为分类树和回归树,决策树的优点是可读性强,分类速度快。使用决策树进行预测时,只需要将测试的样本从根节点开始一步一步比对各个节点的关键特征值、分类就可以得到该测试样本对应的叶子节点。叶子节点的标记为叶子节点内部所有训练集样本投票得到的结果,叶子节点的标记就被视为这个测试样本的分类结果。决策树是通过把样本从根节点排列到某个叶子节点来分类样本数据主要过程包括特征选择、决策树的生成与决策树的剪枝。

①.特征选择与决策树的生成

从根节点开始,在每一个分叉节点处选择对于训练数据集分类能力最强的特征即特征选择。分类能力通常用信息增益、信息增益比或基尼指数来衡量。以应用最广泛的CART分类树算法为例,其决策树的生成生过程就是根据训练集搜索能使分类后基尼指数最小的特征和该特征的切分点,进而将训练集切分产生两个子节点,将当前节点上的全部实例依据这一特征的大小分到下层的两个节点中去,不断递归生成新的子节点,直到满足停止条件才不再搜索和分类。停止条件一般为决策树达到最大深度或者节点中的样本数小于叶子节点最大样本数。决策树生成背后的逻辑是不断找出当前区分度最大的特征,以此特征来对全部样本做区分。

②.决策树的剪枝

当数据中噪声或特征过多时,决策树容易出现过拟合现象、模型泛化能力差。学习时过多的考虑如何提高对训练数据集的分类准确率,导致构建出的决策树过于复杂。一般通过降低决策树的复杂度来解决泛化误差高的问题,也就是通常所说的决策树剪枝。具体步骤就是先从原始的决策树T0底端开始不断剪枝,直到T0的根节点,形成一个子树序列{T1,T2,...Tn};再通过交叉验证法在从这个序列中选择最优子树。

2


随机森林模型

最新的研究表明,构造多个分类器或回归器的集成算法可以提高分类或预测的准确率。随机森林算法是一种利用多个决策树分类器进行分类和预测的方法,可以用于处理回归、分类、聚类以及生存分析等问题,当随机森林应用于分类或回归问题时,就是由多个分类树或回归树集成的分类器,主要利用多个子样本的不同特征组建多个决策树,然后对每个样本进行预测得出最终类标签。

假设给定训练集D={(x1,y1),(x2,y2)....,(xN,yN)},

matlab随机森林代码 matlab随机森林算法_matlab随机森林代码

xi为第i个样本的特征向量,n为样本特征的个数,

matlab随机森林代码 matlab随机森林算法_基于python的随机森林回归实现_02

yi∈{1,2....,K}为标签向量或类别向量,i=1,2,...N,N为样本容量。当y是包含在某一区间内的数量值时,称为回归树,y为样本得分;当y是离散值时,称为分类树,此时y为样本类别。算法步骤如下:

1)从总体训练数据集D中有放回地重复随机抽取2N/3个子样本数据集,之后随机选取n个特征进行自助采样作为候选特征。

2)再利用子样本数据分别训练,根据决策树信息增益的原则从候选特征中选择每棵树的每个节点,直到所有训练数据子集出现以下三种情形:a.当前节点的样本数据为同一类;b.当前特征是空集,或全部样本数据在所有特征上取值相同;c.节点的样本数据为空。

3)重复步骤1)和步骤2)多次,从而建立k颗决策树构建随机森林。

4)模型建立好后,利用各决策树对测试集进行测试,对于分类问题来说,最终对分类结果投票最多的那一类作为最终类标签;对于回归问题,则对得分取平均数。决策公式为:

matlab随机森林代码 matlab随机森林算法_基于python的随机森林回归实现_03

其中hi(x)代表第i棵决策树,I为指示性函数,H(x)为随机森林最终决策模型。

3


随机森林的主要参数

①. 子模型数

随机森林的本质是将多个弱分类器集成为一个强分类器。子模型数就是单个的弱分类器的个数,对随机森林模型来说,子模型数就是单个决策树的数量。随机森林的分类结果是根据各个决策树的分类结果进行多数投票产生的,因此决策树的棵树越多得到的结果越稳定,但随之牺牲的是运算速度。子模型数的选择是稳定性和预算速度的权衡。

②. 叶节点最小样本数

叶子节点越小,模型对训练集的拟合就越,但也越容易导致泛化能力降低。而较大的叶子节点,则会导致对训练集的拟合程度较差。叶节点最小样本数是模型的方差与偏差的权衡。

③. 最大特征数

对于单个子模型而言,分裂时参与判断的最大特征数越大,每个节点上就有越多的分裂选择可以考虑。但另一方面,增加最大特征数也降低了单个弱分类器的多样性,同时也降低了运算速度,而这正是随机森林的特点。因此,需要适当的平衡和选择最佳最大特征数。

优化参数是提高模型泛化能力的有效方式,而随机森林是从原始数据中随机选取训练集和特征,使得算法具有很好抗噪能力,同时也给算法带来了很多参数,以上这些参数的选取对算法的性能有很大的干预作用。

主笔︱陈伟