问答交流

在BigQuant上用AI挑战虚拟股票预测竞赛 (附代码)

由ypyu创建,最终由ypyu 被浏览 68 用户

【更新2017/10/31】增加自动提交结果到challenger .ai,请查看文档后面的代码

创新工场、搜狗、今日头条联合发起一场世界级AI竞赛,BigQuant作为一家专业的机器学习平台,提供竞赛数据和AI算法,助你轻松参赛,勇夺丰厚现金大奖、斩获主办方提供的工作实习机会。

AI Challenger 全球AI挑战赛

创新工场、搜狗和今日头条联合宣布三方携手发起 AI Challenger全球AI挑战赛。本次竞赛三方联合旨在打造中国最大的科研数据集与世界级AI竞赛平台,推动中国人工智能领域科研创新。

image|690x460

BigQuant

BigQuant 助你用AI做量化投资。我们新上线的 BigStudio 可视化策略开发,能够帮助大家更快速更简单地开发机器学习、深度学习试验,快速实现试验迭代,帮助大家轻松参加全球AI挑战赛!

BigStudio 提供了所见即所得的策略开发环境,集合了众多模块,包括数据输入、输出、数据变换、模型训练、预测和量化交易等。你只需要拖动数据和模块,连连线,配置参数,就可以开发AI策略,从而将更多的创造力放在自己擅长的地方。

image|690x317

开始挑战吧

0. 先创建一个空白可视化策略

新建 > 可视化策略 - 空白策略

image|445x255

1. 数据

BigQuant是一个开放的平台,我们可以快速地接入任何公开的和私有的数据。这次竞赛的数据我们已经接入。我们先把数据拖进来。

静态数据集 > 公共数据 > challenger.ai > 虚拟股票趋势预测

image|690x224

2. 格式转换

原数据是CSV格式的,在BigQuant平台上,我们推荐并默认使用的是更高性能的 HDF 格式。我们先做一个格式转换,并运行。

数据处理 > 添加两个 转换CSV为HDF > 连线如下图 > 运行全部

image|690x178

3. 查看代码

BigQuant将简单的可视化模式和灵活的编码模式做了完美融合。切换到代码模式,你可以查看可视化后面生成和执行的代码,你也可以添加更多代码单元。

image|690x262

切换到代码界面,如下所示:

image|690x218

4. 查看数据描述

模块上的m1和m2表示了对应的变量名,我们可以直接引用。

在下方插入两个代码单元(cell)(可以使用快捷键 b) > 添加代码如下 > 运行

image|690x443

当然,你可以并且很可能也需要对数据做更多分析和研究,这都可以在代码单元里完成。

5. 特征选择和抽取

按如下方式添加 “输入特征列表” 和 “衍生特征抽取” (输入要用的基础特征,然后做衍生特征抽取)。配置特征如下:

image|690x289

如果觉得右侧输入特征数据的代码编辑器太小,可以点击右侧按钮,弹出代码编辑器窗口,如下:

image|689x154

6. 数据集划分

为了评估效果,需要划分数据集和验证集。对于时间序列数据,不建议随机划分。竞赛方建议用era列做,这个era列应该表示的时间相关的。

> 对于交叉验证,建议按照训练数据era列随机抽取一个或若干个era进行交叉验证,而不是在全部训练样本上进行随机采样进行交叉验证,因为后者会导致严重的过拟合问题,这也是我们加入了era列的主要目的。

看看 era 数据分布:

image|263x470

我们尝试用 era 1-15的做训练,15-20的做验证。

添加两个 “数据过滤模块” > 配置条件分别为  era <= 15 和 era > 15

image|690x219

这里,主要是以教学目的,特征构造特别简单。数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已,因此特征(或因子)是机器学习试验非常重要的一环,值得深入思考和研究。

6. 训练:模型选择和参数

BigQuant提供了很多优化后的机器学习算法。这里选用GBDT来演示。

image|690x267

GBDT的全称为Gradient Boosted Decision Tree,中文可以叫梯度提升决策树,近年来,在数据科学竞赛网站Kaggle上赢得比赛的绝大部分方案都采用了XGBoost包中类似GBDT的算法,因此我们也建议大家多多尝试GBDT算法参与本次竞赛。

[details=点击查看GBDT算法 ]

GBDT是一个应用很广泛的算法,可以用来做分类、回归。在很多的数据上都有不错的效果。GBDT这个算法还有一些其他的名字,比如说MART(Multiple Additive Regression Tree),GBRT(Gradient Boost Regression Tree),Tree Net等。

GBDT的核心思想是,每一次的计算是为了减少上一次的残差(residual),而为了消除残差,我们可以在残差减少的梯度(Gradient)方向上建立一个新的模型。所以说,在GBDT中,每个新的模型是为了使得之前模型的残差往梯度方向减少。

GBDT算法如下:

image|690x319 [/details]

7. 评估模型效果

当我们在训练集上将模型训练出来以后,可以通过在验证集上使用该模型进行预测,然后通过预测数据与真实数据的差异,进而评估出模型效果。

[details=点击查看评价标准 ] image|592x221 [/details]

模型评估具体分为两步:

  • 模型在验证集上预测,因此需要m11模块,实现GBDT算法在验证集预测
  • 计算模型评估指标,因此需要m8和m9模块

image|689x256

通过策略运行日志,可以看出模型在验证集上的准确率和logloss.

8. 预测测试集

如果模型评估通过,就可以采用该模型在测试集上进行预测。本例中,需要读取测试集数据,提取衍生特征,然后结合训练出的模型就可以得到该模型在测试集上的预测结果。

image|690x264

9. 下载数据并提交

  • 保存数据到用户目录

通过自定义的模块m13将测试集预测结果保存至用户目录

image|689x197

你可以在左侧目录界面,找到保存的数据集,格式为csv.

  • 下载到本地并提交

      选中该csv文件 > 右键 > 下载
    

image|352x386

10. 如何改进

  • 更多的数据分析和研究:通过代码单元引用任何可视化里的模块并获取数据 image|690x303
  • 更多模型和参数调优
  • 特征工程:特征提取、特征选择、特征构造
  • 交叉验证:避免过拟合
  • 其他

相关链接

  1. 虚拟股票趋势预测 竞赛主页
  2. 为什么Kaggle数据分析竞赛者偏爱XGBoost
  3. XGBoost 入门系列第一讲
  4. AI“股神”在哪里?创新工场任性撒钱办竞赛,就要找到你

完整示例代码

https://i.bigquant.com/user/iquant/lab/share/虚拟股票预测.ipynb?v=8

标签

股票预测