在BigQuant上用AI挑战虚拟股票预测竞赛 (附代码)
由ypyu创建,最终由ypyu 被浏览 76 用户
【更新2017/10/31】增加自动提交结果到challenger .ai,请查看文档后面的代码
创新工场、搜狗、今日头条联合发起一场世界级AI竞赛,BigQuant作为一家专业的机器学习平台,提供竞赛数据和AI算法,助你轻松参赛,勇夺丰厚现金大奖、斩获主办方提供的工作实习机会。
AI Challenger 全球AI挑战赛
创新工场、搜狗和今日头条联合宣布三方携手发起 AI Challenger全球AI挑战赛。本次竞赛三方联合旨在打造中国最大的科研数据集与世界级AI竞赛平台,推动中国人工智能领域科研创新。
BigQuant
BigQuant 助你用AI做量化投资。我们新上线的 BigStudio 可视化策略开发,能够帮助大家更快速更简单地开发机器学习、深度学习试验,快速实现试验迭代,帮助大家轻松参加全球AI挑战赛!
BigStudio 提供了所见即所得的策略开发环境,集合了众多模块,包括数据输入、输出、数据变换、模型训练、预测和量化交易等。你只需要拖动数据和模块,连连线,配置参数,就可以开发AI策略,从而将更多的创造力放在自己擅长的地方。
开始挑战吧
0. 先创建一个空白可视化策略
新建 > 可视化策略 - 空白策略
1. 数据
BigQuant是一个开放的平台,我们可以快速地接入任何公开的和私有的数据。这次竞赛的数据我们已经接入。我们先把数据拖进来。
静态数据集 > 公共数据 > challenger.ai > 虚拟股票趋势预测
2. 格式转换
原数据是CSV格式的,在BigQuant平台上,我们推荐并默认使用的是更高性能的 HDF 格式。我们先做一个格式转换,并运行。
数据处理 > 添加两个 转换CSV为HDF > 连线如下图 > 运行全部
3. 查看代码
BigQuant将简单的可视化模式和灵活的编码模式做了完美融合。切换到代码模式,你可以查看可视化后面生成和执行的代码,你也可以添加更多代码单元。
切换到代码界面,如下所示:
4. 查看数据描述
模块上的m1和m2表示了对应的变量名,我们可以直接引用。
在下方插入两个代码单元(cell)(可以使用快捷键 b) > 添加代码如下 > 运行
当然,你可以并且很可能也需要对数据做更多分析和研究,这都可以在代码单元里完成。
5. 特征选择和抽取
按如下方式添加 “输入特征列表” 和 “衍生特征抽取” (输入要用的基础特征,然后做衍生特征抽取)。配置特征如下:
如果觉得右侧输入特征数据的代码编辑器太小,可以点击右侧按钮,弹出代码编辑器窗口,如下:
6. 数据集划分
为了评估效果,需要划分数据集和验证集。对于时间序列数据,不建议随机划分。竞赛方建议用era列做,这个era列应该表示的时间相关的。
> 对于交叉验证,建议按照训练数据era列随机抽取一个或若干个era进行交叉验证,而不是在全部训练样本上进行随机采样进行交叉验证,因为后者会导致严重的过拟合问题,这也是我们加入了era列的主要目的。
看看 era 数据分布:
我们尝试用 era 1-15的做训练,15-20的做验证。
添加两个 “数据过滤模块” > 配置条件分别为 era <= 15 和 era > 15
这里,主要是以教学目的,特征构造特别简单。数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已,因此特征(或因子)是机器学习试验非常重要的一环,值得深入思考和研究。
6. 训练:模型选择和参数
BigQuant提供了很多优化后的机器学习算法。这里选用GBDT来演示。
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算法如下:
[/details]
7. 评估模型效果
当我们在训练集上将模型训练出来以后,可以通过在验证集上使用该模型进行预测,然后通过预测数据与真实数据的差异,进而评估出模型效果。
[details=点击查看评价标准 ] [/details]
模型评估具体分为两步:
- 模型在验证集上预测,因此需要m11模块,实现GBDT算法在验证集预测
- 计算模型评估指标,因此需要m8和m9模块
通过策略运行日志,可以看出模型在验证集上的准确率和logloss.
8. 预测测试集
如果模型评估通过,就可以采用该模型在测试集上进行预测。本例中,需要读取测试集数据,提取衍生特征,然后结合训练出的模型就可以得到该模型在测试集上的预测结果。
9. 下载数据并提交
- 保存数据到用户目录
通过自定义的模块m13将测试集预测结果保存至用户目录
你可以在左侧目录界面,找到保存的数据集,格式为csv.
-
下载到本地并提交
选中该csv文件 > 右键 > 下载
10. 如何改进
- 更多的数据分析和研究:通过代码单元引用任何可视化里的模块并获取数据
- 更多模型和参数调优
- 特征工程:特征提取、特征选择、特征构造
- 交叉验证:避免过拟合
- 其他
相关链接
完整示例代码
https://i.bigquant.com/user/iquant/lab/share/虚拟股票预测.ipynb?v=8