Artem777 在三井物产商品预测挑战赛中的解决方案
Artem777 在三井物产商品预测挑战赛 (MITSUI&CO. Commodity Prediction Challenge)
副标题:第 6 名解决方案:递归 LSTM 特征预测与滞后校正
A1. 关于你/你的团队的背景
- 比赛名称:三井物产商品预测挑战赛 (MITSUI & CO. Commodity Prediction Challenge)
- 团队名称:Poidenko Artem
- 私有排行榜得分:0.514
- 私有排行榜名次:第 6 名
团队成员:
A2. 关于你/你的团队的详细背景
你的学术/职业背景是什么?
我叫 Artem Poidenko。我是乌克兰国立技术大学“伊戈尔·西科斯基基辅理工学院”应用系统分析研究所的四年级学生。
你是否有过有助于你在此次比赛中取得成功的先前经验?
我没有 prior 经验;这是我第一次参加 Kaggle 比赛。
是什么让你决定参加这次比赛?
在我四年级的第一学期,我选修了一门名为“冲突控制系统”的课程。教授向班级介绍了 Kaggle 和这次比赛。他向我们挑战:任何能匹配他的表现并 defend 他们的代码的人将获得课程的高分。在 50 名学生中,我是唯一接受挑战的人。此外,教授用自己的故事激励了我——他以前曾在比赛中获得名次,这直接帮助他找到了 IT 行业的第一份工作。
你在比赛上花了多少时间?
我把这次比赛当作一个大学研究项目来对待。我每周独立工作大约 1-2 天。此外,我在周六与教授进行在线检查,以审查我的结果并获得反馈。我在 9 月 20 日进行了第一次提交。
A3. 总结
我们的解决方案采用了一种使用长短期记忆 (LSTM) 网络的递归特征预测方法。我们没有直接预测目标收益,而是训练模型来预测未来 5 天的底层 424 个商品特征。这些特征预测随后被数学转换为目标对(对数收益和价差)。为了处理概念漂移和短期市场波动,我们实施了一个后处理滞后校正步骤,将模型的输出与 API 提供的 label_lags 中观察到的近期趋势进行混合。
A4. 特征选择 / 工程
- 特征选择:我们利用了数据集中提供的所有 424 个连续数值特征,没有进行手动选择,依靠 LSTM 提取相关时间模式的能力。
- 预处理:
- 插补:缺失值使用训练集的全局均值填充。
- 缩放:所有特征均使用 StandardScaler(Z-score 标准化)进行标准化,以确保训练稳定。
- 窗口化:数据被转换为 50 天的滚动窗口,以捕捉中期时间依赖性。
- 重要交互:模型通过同时训练所有特征的联合历史,隐式地学习“配对”组件(例如,商品 A 与商品 B)之间的交互。
A5. 训练方法
- 架构:我们使用了特征预测 LSTM(多对一),包含:
- 输入维度:424
- 隐藏维度:256
- 输出维度:424(预测下一天的特征状态)
- 训练策略:
- 损失函数:特征值的均方误差 (MSE)。
- 优化器:Adam (lr=1e-3)。
- Epochs:25 个 epoch,基于时间划分的验证集(最后 15%)进行早停。
- 推理:使用递归推理(用预测值向前滚动窗口)来生成目标计算所需的 5 天预测范围。
A6. 有趣发现
- 关键“技巧”(滞后校正):最大的性能提升来自标签滞后校正。我们注意到纯模型预测有时会偏离 immediate 市场制度。通过计算 label_lags 的均值(来自近期过去批次的 ground truth)并将其与我们的模型预测混合($\\alpha=0.7$),我们显著减少了波动期间的误差。
- 递归与直接:先预测特征然后推导数学目标,被证明比直接预测噪声较大的对数收益更稳定。
A7. 简单特征与方法
- 简化模型:一个简单的“持久性”模型,预测第二天的收益将是最后一个已知 label_lags 的平均值(本质上将我们的混合 alpha 设置为 0.0),捕捉了大部分性能基线。
- 特征子集:仅关注涉及目标定义的列(特定商品对),而不是所有 424 个特征,将保留约 90% 的性能,但忽略了跨商品相关性。
A8. 模型执行时间
- 训练时间:在标准 CPU 上约 2-3 分钟,或在 GPU P100 上少于 1 分钟。
- 预测时间:每批 < 500ms(由于简单的 LSTM 矩阵操作,非常快)。
A9. 参考文献
主要参考和资源:
- 比赛资源:
- 官方 Kaggle 比赛文档(数据描述,API 使用)。
- Kaggle 讨论板,用于故障排除和提交格式澄清。
- 用于代码生成、调试和文档协助的大型语言模型 (LLMs):
- Google Gemini Pro
- ChatGPT
- DeepSeek
- 学术指导:
- 乌克兰国立技术大学“伊戈尔·西科斯基基辅理工学院”“冲突控制系统”课程教授的指导和反馈。
- 社区与研究:
- 分析公共 Kaggle Notebooks (Kernels) 以了解基线方法和特征工程技术。
- 官方文档: