返回列表

#1 Solution Description: Advanced Linear Model

474. Tabular Playground Series - Jan 2022 | tabular-playground-series-jan-2022

开始: 2022-01-01 结束: 2022-01-31 销量与需求预测 数据算法赛
#1 解决方案描述:高级线性模型

#1 解决方案描述:高级线性模型

作者:AmbrosM (Grandmaster) | 发布时间:2022-02-01

以下内容描述了我针对本次竞赛最终提交方案的开发过程。

交叉验证的重要性

在一月份的 TPS 竞赛中,大家可以练习如何忽略公共排行榜。公共排行榜是基于 2019 年第一季度的数据,但所有重要的节假日都发生在 2019 年 4 月或之后。这意味着公共排行榜完全无法反映模型节假日特征的质量。你可以高估或低估复活节、仲夏节、国庆节、圣诞节等的影响——这对公共排行榜来说无关紧要。公共排行榜只能用来验证模型是否正确处理了年度 GDP。

出于这个原因,我专注于交叉验证(以年份为分组的 GroupKFold),并在交叉验证结果中,将 1 月至 3 月的 SMAPE 与一年中其余时间的 SMAPE 分开评估。然后,我持续针对后者优化我的模型。在最终评估中,我提交了交叉验证效果最好的两个 notebook。获胜的 notebook 的公共 LB 分数仅为 4.11991,这在公共排行榜上只能排到第 306 名。将其标记为最终提交确实需要相当大的勇气……

特征工程

我的最终 notebook 仍然使用岭回归和对数转换后的目标值,但特征与我早期的线性模型有所不同:

  • 傅里叶系数的选择发生了变化;贴纸产品完全没有傅里叶系数(这意味着对贴纸的预测在全年都是恒定的)。
  • 节假日的长度有一些小的调整。
  • 挪威的复活节假期与其他两个国家不同。
  • 我添加了经合组织(OECD)的消费者信心指数作为外部数据,正如讨论区所建议的那样。

所有这些特征都是通过对残差的详细分析发现的。

为什么不使用梯度提升?

为什么我没有使用梯度提升?在本次竞赛中,梯度提升的主要优势在于它减少了特征工程的负担:决策树会自动确定节假日影响哪些国家和产品;而线性回归需要手工制作特征。

缺点在于:如果你使用梯度提升并且不自己设计特征,你就放弃了控制权。使用线性回归,你可以分析残差并创建一个正好从耶稣受难日开始、持续十天的复活节假期;而使用梯度提升,你调整一些超参数,然后接受决策树可能发现假期持续九天或十一天的结果。如果你调整超参数使假期正好是十天,模型就会在其他地方过拟合。

其他事项

  • 岭回归的正则化由单个参数 alpha 控制。可以通过不同的特征缩放使正则化强度依赖于特征:我没有简单地使用 StandardScaler,而是使用了带有多个 MinMaxScalerColumnTransformer
  • KaggleRama 和 KaggleMart 销售额之间的比率始终相同,且不依赖于任何其他特征。直接计算比线性回归更准确。
同比赛其他方案