百天计划之第30天,关于“AI量化投资,财富自由与个人成长”。 30天是第一个小里程碑,不知不觉日更30天,而且扎实在进步。 那天有朋友问我,为何为自己搞一个量化框架,使用别人的东西,总觉得有各种限制。 这种感觉我之前也有用,而且试图把qlib给拆了,就使用它的部分。 仔细想来,之前其实是我们没有沉下心来去了解它,其实qlib毕竟经过这么多高手,这么长时间的努力,我们自己造轮子很难超越——而且也没有必要。 如果对一个东西没有深度理解,自然会感觉诸多限制,打好基础,正所谓——磨刀不误砍柴功。 01 集成树模型之lightGBM 这是微软开源的“轻量级梯度提升树”。 项目在https://github.com/microsoft/LightGBM开源。 文档地址:https://lightgbm./en/v3.3.2/ 最新版本3.3.2。 python安装比较简单: pip install lightgbm 它的介绍里强调它: 训练速度快,低内存使用,更高的精度。 平行与分布式训练,支持GPU,能处理大规模数据。 lightGBM支持csv格式,numpy/pandas的ndarray,dataframe格式,还有lightGBM自有格式。其实支持csv和datafram已经满足我们大部分场景的使用。 官方给出了如下的数据集,并以xgboost作为benchmark: Kaggle上的比赛有一半以上的冠军方案都是基于GBDT,LightGBM提出的主要原因就是为了解决GBDT在海量数据遇到的问题,让GBDT可以更好更快地用于工业实践。 02 实战一下 sklearn内置了一些数据集,最简单的当数iris。 from sklearn import datasets iris是一个dict, 有data和label两个numpy的ndarray。 使用train_test_split可以把 iris.data按7:3比例分成两份。 qlib提供的gbdt的版本使用的是LGB原生接口(LGB也提供了兼容sklearn的格式)。 # 转换为Dataset数据格式 树模型同sklearn类似,使用都比较简单。 这里有几个重要问题: 怎么评价现在模型好还是不好? 如何优化?——包括数据预处理,特征工程,超参数。 03 kaggle信用卡忠诚度分析 还是得用打比赛的思路来学习,我们看一个真实的案例——kaggle信用卡忠诚度分析。 比赛地址如下: Elo Merchant Category Recommendation | Kaggle 数据的背景信息: Elo是巴西最大的支付品牌,它用大量的用户信用卡信息,并与商家达成很多合作。通过机器学习算法,为用户推荐个性化的商品,以期达到商家,用户利益最大化。 登录kaggle后,下载数据,解压后得到8个文件: train.csv, test.csv分别是训练集和测试集。 数据比较简单,card_id就是信用卡号,用三个特征,首次激活的日期。 test的数据格式是一样的。 historical_transactions是信用卡近三个月的交易清单。 merchants是所有商家的附加信息。 最终PK就是使用对test.csv里的信用卡号打出忠诚度的分数。 非常真实的业务表格数据! 这与过去直接load一个iris data,fit一下的感受不一样了吧。 04 数据探索 训练集没有空值。 测试集有一个首次激活月份数据为空。 明天继续。 小结: 1、集成树模型由于良好的性能,精度,可解释性,为kaggle比赛首选,也是AI量化交易的首选。 2、集成树的基础使用非常简洁。 3、难在特征工程,选择,数据处理以及参数调优。 最近文章: 入门机器学习落地AI量化的最佳路径:类kaggle的算法竞赛 |
|