[第一名方案] - 我们的博弈策略
[第一名方案] - 我们的博弈策略
作者: yuuniee (Master), Karbitrage (Expert), Dora-ironman (Expert)
发布时间: 2022-07-19
比赛: Ubiquant Market Prediction
感谢 Ubiquant 和所有参与举办比赛的人。
感谢所有在这六个月的旅程中与我们并肩作战、辛勤付出的参赛者。
特别是 Ubiquant 提供的 Alphas 在瞬息万变的金融市场中表现出与目标相对稳定且较高的相关性。
能够利用如此高质量的数据是一次宝贵且愉快的经历。再次感谢。
虽然我们是获胜者,但这归功于许多 Kaggle 参赛者的讨论和公开笔记本。
此外,我认为我们很幸运,市场环境让我们的模型“笑”了。

尽管如此,我们想分享我们为增加获得这份运气的机会所经历的过程。
一、摘要
A. 使用模型:LGBM, TABNET
B. 特征工程:300 + 100
C. 数据采样:(train.csv + supplemental_train.csv)[2400000:]
D. 用于特征工程和参数调整的交叉验证:PurgedGroupTimeSeries, TimeSerieseSplit
E. 用于训练的交叉验证:KFold
二、详细说明
A. 使用模型:LGBM, TABNET
- 如果您期待的是特殊的模型,那很抱歉,这次是 LGBM 和 TABNET。:D
- LGBM 是一个在许多比赛中性能已被证明的强大模型。在比赛数据的实验中,它也是最稳定(尤其是 CV 和 LB 的一致性)且表现优异的。(至少对我来说)
- 此外,我们还寻找并测试了在 LGBM 中进行集成的候选模型。其中,TABNET 被选中,因为它具有最佳的集成效果且相对稳定。
- 一些自定义 MLP 模型也是候选者,有些模型甚至在 LB 基础上也有显著的集成效果,但结果它们因为 CV 不稳定而被排除。
- 对于 loss_fn,分别使用了 rmse 和 mse,Pearson Corr. 通常用作 eval_metric。
- 集成方法:(LGBM x 5 Folds) + (TABNET x 5 Folds) 的平均值
B. 特征工程:300 + 100

- 首先,为了减少或消除不必要特征的影响,我们调查了每个特征的重要性和相关性,但没有发现任何有意义的数值证据,然后反过来,我们思考了要添加的特征。
- 上面的 300 指的是内置特征,添加的 100 个特征在 CV 和 LB 分数上显示出一致且显著的改善(基于 LGBM 单模型,CV: 0.141 -> 0.154, LB: 0.141 -> 0.149)。
- 虽然我们只使用了 100 个额外特征,但这是在内核资源(特别是 RAM)允许范围内的最大妥协,我想如果包含更多有用的特征,分数会有额外的提高。
- 添加的 100 个特征是通过以下方式计算的。
[ 通过获取 300 个特征与每个目标的相关性并排序,取前 100 个特征在每个 time_id 的平均值 ]
[ 代码 ]
features = [f'f_{i}' for i in range(300)]
corr = train_df[features[:]