返回列表

#5 Solution | 🚀 AutoGluon submission 1 on day 1

624. Playground Series - Season 4, Episode 9 | playground-series-s4e9

开始: 2024-09-01 结束: 2024-09-30 定价与促销 数据算法赛
#5 解决方案 | 🚀 第 1 天提交的 AutoGluon 方案 1

#5 解决方案 | 🚀 第 1 天提交的 AutoGluon 方案 1

作者: Nick Erickson (协同作者:Lennart Purucker)
发布日期: 2024 年 10 月 1 日
竞赛排名: 第 5 名

我们获得第 5 名的最终方案是我们参加比赛后的第一次提交,大约在比赛第 1 天启动后 8 小时左右。我们选择了这个提交,尽管它不是我们在公共排行榜上得分最高的提交之一,因为我们有充分的理由相信它在私有排行榜上会表现出色,毕竟我们进行了广泛的交叉验证测试。

不幸的是,它的公共 LB 分数并不高(72221.55,即公共排行榜第 626 名),这最终导致我们在本次竞赛的 Grand Prix 排名中位列第 6,因为它是基于公共 LB 而不是私有 LB 评分的,这最终导致我们以一分之差获得 Grand Prix 总排名第 2 😂。好吧,这就是规则 🤷‍♂️。

解决方案截图

我们使用了预发布版的 AutoGluon,并开启了一些实验性功能:

  1. 我们在 L2 堆叠器中丢弃了原始特征,仅使用堆叠特征来训练模型,这在交叉验证(CV)中表现更好:ag_args_ensemble = {"use_orig_features": False}
  2. 我们通过将数值标签列视为分层列,黑客式地实现了分层交叉验证分割。这之所以有效,是因为数据中每个标签都有多个实例。若要正确实现,你应该对其进行分箱,我们将在未来的 AutoGluon 功能中添加此功能。这有助于避免由于异常值导致的折叠间重大分布偏移。
  3. 我们使用了实验性的 2024 版 AutoGluon zeroshot-HPO 组合,其性能稍强。
  4. 我们没有使用任何额外数据。它在交叉验证中似乎没有帮助,我们觉得风险太大。
  5. 我们禁用了 AutoGluon 的 ngram 特征生成和文本特殊特征生成,因为我们不确信它能带来改进(它在噪声范围内,但移除它们加快了模型拟合速度):
_feature_generator_kwargs = {
    "enable_text_special_features": False,
    "enable_text_ngram_features": False,
}

你可以查看我们的完整撰写文章 此处

附言:在 Grand Prix 期间,我们快要被逼疯了,试图弄清楚为什么尽管我们基于内部交叉验证如此自信,但我们的公共 LB 分数却如此之差,甚至让我们深入检查代码是否存在任何可能的错误。我们很高兴事实证明我们信任交叉验证是正确的,正如 @tilii7 在其他帖子中所说,过拟合公共排行榜往往适得其反。我猜测公共和私有排行榜相关性低的主要原因是公共与私有测试分割中异常值的密度不同。

致敬,
Nick 和 Lennart ( @lennartpuruckerisg ) 代表 "AutoML 大师队"

同比赛其他方案