返回列表

9 Public, 11 Private (Single Model) - Solution Writeup (Public LB 0.04605, Private LB 0.04766)

637. Playground Series - Season 5, Episode 1 | playground-series-s5e1

开始: 2025-01-01 结束: 2025-01-31 销量与需求预测 数据算法赛
9 公开榜,11 私榜(单模型)- 解决方案总结
作者: Geremie Yeo (特级大师)
发布日期: 2025-02-01
竞赛排名: 第 11 名

9 公开榜,11 私榜(单模型)- 解决方案总结(公开榜 0.04605, 私榜 0.04766)

首先,感谢 Kaggle 在 16 个月后组织了这场 playground 预测竞赛!(终于)。这是我第一次单独获得竞赛前 1%,而且是没有复制或集成公共 Notebook,而是使用我自己对这个竞赛什么有效的直觉完成的。

我将在此简要概述我的解决方案,同时详细阐述公共 Notebook/讨论中未见过的部分。解决方案代码在 这里 - 今天晚些时候将添加一些注释。

(A) 基线

正如 @siukeitin这个讨论 中分享的,销售额的“分布”遵循某种模式,可以按国家(GDP 比率)、产品和商店进行分解。

商店
跨年份未观察到明显趋势 -> 为每个商店分配一个恒定值
产品
观察到季节性,频率取决于产品为 1 或 2 年。因此为每个产品拟合频率=2 年的傅里叶级数
产品季节性图表
国家
使用每年国家 GDP / 每年 GDP 总和的值
星期几
周日 > 周六 > 周五 > 其他任何天的销售量

注意:计算这些比率时应排除肯尼亚和加拿大的销售额,因为它们的空值 (NULLs) 可能会引入偏差。

(B) 节假日

通过探索性数据分析 (EDA),我们可以发现节假日的影响持续到实际节假日之后,大多直到节假日后 7-9 天。

  1. 节假日首先按日期排序,以便最近的节假日被优先考虑(在节假日效应重叠的情况下)
  2. 按国家和节假日名称分组
  3. 对于 1-9 天计算个体乘数
    3a. 假设 T 日 是受节假日影响的日子之一,计算 T 日销售额 / T-7 日销售额,如果 T-7 日 是节假日,则向后传播比率直到找到非节假日
    3b. 将最小值裁剪为 1

(C) 估算总销售额和乘数

既然我们对销售额的“分解”有了大致了解,剩下的就是估算 2010 年至 2019 年每个日历年的总销售额。

最简单的方法是拟合线性最小二乘法来根据总 GDP 估算年销售额(由于 R^2 高达 0.997)- 但这带来了一些挑战。

  1. 正如 (A) 部分讨论所示 - 世界银行提供的肯尼亚 GDP 过高。因此我从肯尼亚的 GDP 中减去了 200 的常数值
  2. 线性模型不是销售额与 GDP 的良好拟合,因为它违反了误差独立的假设
线性拟合图 1 线性拟合图 2

虽然最小二乘线估计斜率(或总销售额 / GDP)为 84.54,但我们注意到残差遵循周期性趋势!
令 R(T) 为年份 T 的总销售额/GDP 比率:
残差趋势图

因此,需要乘数,并且应该预期乘数为:

  • 2017 > 2016 (1.04)
  • 2018 < 2017
  • 2019 > 2018

通过 LB 探测发现 2017 年的最佳乘数是 1.08。不幸的是,我没有找到任何启发式方法来准确估计乘数,不得不猜测它。如果有人找到了,欢迎在评论中留言。

对于一次提交,我选择了:

  • 2017: 1.08, 2018: 1.07, 2019: 1.11

对于另一次提交,我选择了:

  • 三年均为 1.08

第二次提交在私榜上得分更高,这表明将 2019 年的乘数估计为 1.11 是不准确的。

笔记

我想向 @cdeotte 表示诚挚的感谢,感谢多年来分享适合初学者的教程!回想当初我第一次参加 LLM Science Exam 竞赛时,你的 入门 Notebook 在指导我们改进解决方案方面起到了不可思议的帮助,尤其是在我和可能许多其他人都在挣扎的时候。你慷慨地分享知识是无价的,我真的很感激它对我的成长产生的影响。谢谢你!

同比赛其他方案