第4名解决方案
作者:monsaraida (Master) | 排名:第4名 | 发布时间:2020-07-01
第4名解决方案
首先,非常感谢比赛的参与者和组织者。我从这次比赛中学到了很多。我的解决方案可能看起来没有太大的价值,但我从社区中获得了很多见解,所以我觉得有义务与大家分享这个解决方案。(我特别从 @kyakovlev 的内核中学到了很多,谢谢。)
[解决方案]
- 模型
- LightGBM(单模型)
- 目标函数 = tweedie
- 验证
- 5折留出验证 (d1578-d1605, d1830-d1857, d1858-d1885, d1886-d1913, d1914-d1941)
- 无早停
- 模型拆分
- 针对每个商店
- 针对每周
- 模型 w1 预测 F01, F02, ..., F07
- 模型 w2 预测 F08, F09, ..., F14
- 模型 w3 预测 F15, F16, ..., F21
- 模型 w4 预测 F22, F23, ..., F28
- 特征
- 通用时间序列特征
- 通用价格特征
- 通用日历特征
- 无递归特征
比赛开始时,我首先了解了数据和评估指标,并创建了一个基线模型。然后我意识到验证分数在不同时间段内差异很大。(我无法建立一个合适的验证。)我深信这场比赛将非常困难,而且不可能建立一个高精度的模型。
所以我决定放弃在比赛中获得高排名的努力。取而代之的是,我决定尝试建立一个“实用”的解决方案。我的策略如下:
- 不使用后处理、乘数和数据泄露
- 在实践中,不可能利用这些信息,所以我决定不应该使用它们。
- 信任交叉验证(CV),但不关心官方评估指标(WRMSSE)
- WRMSSE 是比赛组织者的评估指标,但在实践中,我认为 WRMSSE 并不总是合理的。因此,我没有制作自定义损失函数,以避免过拟合于这个比赛任务本身。
- 不使用复杂和递归的特征
- 只使用可应用于任何实际任务的通用特征。
- 递归特征会导致误差累积。
- 不过度使用计算资源
- 单模型(仅 LightGBM,无堆叠/融合)
- 内存效率(针对每个商店和每周建立模型)
正如我之前提到的,我并没有以高排名为目标,所以我对这个结果(第4名)感到非常惊讶。从上面的解决方案可以看出,我没有做任何特别的事情。对我来说有价值的是学到了很多关于构建简单解决方案的知识,这些方案可以在实践中广泛应用。排名本身对我来说毫无意义。(然而,我对那些付出巨大努力想要登顶的人感到非常抱歉……)
无论如何,我从这次比赛和社区中学到了很多。感谢所有的 Kaggle 社区成员。