【人工智能选股系列】Stacking集成学习
发布时间:2019-9-26 09:28阅读:506
数据获取以及预处理
采用的数据指标为社区的多因子系列之一的因子库的因子,包括估值因子,规模因子,杠杆因子,技术因子,动量因子,成长因子,市值因子,因变量为下个月的涨跌幅情况。具体因子和含义可看下面解释:
部分因子展示
在训练集的股票选择上,选择为当月的全部A股,剔除ST,上市不足三个月以及下月月末停止交易的股票,具体代码可查看如下:
部分代码展示(完整查看文末)
部分代码展示(完整查看文末)
回测期间为2014年至2016年共计三年的时间段的每月月末的数据,每做一次预测,根据训练周期前推月份获取数据,然后对数据进行异常值处理,缺失值处理,市值中性化,行业标准化,标准化处理。在这里为起到到对照作用选用的训练周期有6个月和72个月。在进行滚动预测,选用的预测方法包括朴素贝叶斯,随机森林,支持向量机(SVM)全连接神经网络,极端梯度提升树(XGBOOST),旨在对各种方法进行比较故这里各模型均不考虑调参因素。
将每个时间段的训练集数据进行滚动处理,然后存起来:
部分代码展示(完整查看文末)
模型建立以及滚动回测
这部分参考研报的方法的方法将训练集分为6个月的训练周期和72个月的训练周期于204年一月至2016年的十二月进行滚动预测,每月根据预测结果进行调仓,每月第一个交易日卖出当前持有所有股票,根据预测结果在当日购买预测概率前100支股票,各股购买比例为预测概率的加权平均和。
部分代码展示(完整查看文末)
2.1 以六个月为训练周期
2.2 以72个月为训练周期
Stacking集成学习
通常情况下,Stacking 中第一层的模型会使用拟合度高的模型,以追求对训练数据的充分学习(如XGBoost、神经网络、SVM 等)。由于不同的模型在原理上和训练集上有所差别,第一层模型可以认为是从原始数据中自动提取有效特征的过程。第一层模型中,由于使用了复杂的非线性变化提取特征,Stacking 更易产生过拟合的情况。为了降低过拟合的风险,第二层模型倾向于使用简单的模型,例如逻辑回归、Lasso 回归等广义线性模型。从以上分析可以看出,Stacking 能够成功的关键在于第一层模型能针对原始训练数据得出有差异性(相关性低)且预测能力好的输出值,这样通过第二层模型进一步学习后,能够在多个第一层模型中取长补短,提升预测的准确度和稳定性。在传统的stacking集成学习中,第一层都使用相同的训练集数据,它们从不同的角度对相同的训练数据进行学习,得到具有差异性的输出值,再通过第二层的逻辑回归得到输出值。该框架主要应用于一些训练和预测数据同分布的传统领域,如图像分类。
根据研报的想法,采用的是一种改进的集成学习框架,框架的第一层不仅使用不同的模型,还使用有差异的训练数据,这进一步增大了模型输出值之间的差异性(相关性低),这样的差异性往往适合于训练数据和预测数据是不同分布的领域,可以增强预测的稳定性,如金融数据的预测。如下图:
出于时间考虑,就不对各种模型进行尝试,根据研报最后得出的结论,将6个月为训练集的logistics和72个月的训练集的XGB在第一层进行训练,然后第二层选用logistic模型进行stacking集成。
部分代码展示(完整查看文末)


温馨提示:投资有风险,选择需谨慎。



-
华为海思概念股逆势涨停!这把科技火苗,散户该不该追?
2025-03-19 15:54
-
从“网游第一股”到 ST 中青宝:1470 万罚单背后的信任崩塌
2025-03-19 15:54
-
315 黑天鹅突袭!这些股票开盘跌停,你的持仓中招了吗?
2025-03-19 15:54