返回列表

#16 Deep Magic

497. Tabular Playground Series - Jun 2022 | tabular-playground-series-jun-2022

开始: 2022-06-01 结束: 2022-06-30 数据算法赛
#16 Deep Magic

#16 Deep Magic

作者:What | 排名:第16名

6月18日是个美好的早晨,我通过了所有的考试,想从世界上发生的无尽事件中抽出点时间休息一下。我注意到了另一个表格游乐场(Tabular Playground)比赛,心想:“为什么不呢?试一试吧。”

因此,在思考了一段时间的任务后,我决定使用 Catboost 循环处理所有的 NaN 值。我获得了 0.89131 的 Public 分数(Private 为 0.88957)。如果有人对 Catboost 的解决方案感兴趣,我使用的参数为 lr = 0.6222, depth = 4, n_estimators = 12000, leaf_estimation_method = "Newton", leaf_estimation_iterations = 10, posterior_sampling = True, l2_leaf_reg=7, random_strength = 3,评估指标为 RMSE。还不错,既快速又相当准确。但我仍然对结果不满意,所以我决定尝试神经网络。

起初,我使用了 PyTorch 和重型架构(256-128-64... 等)以及层上的 Batch Normalization。我在 Public 上得到了 0.83784 的分数(Private 为 0.83593)。我很高兴,但这个解决方案因为执行时间限制无法在 Kaggle 上运行。我不得不运行一个 nan count = 1 的笔记本,然后再运行另一个 nan count = 2 的笔记本,依此类推,因为执行时间太长了——我为此花了两周时间。所以我决定实现一个深度神经网络,但这次使用 Keras,权重更少。

模型架构图

在除输出 Dense 层外的所有层上,我使用了 swish 激活函数(顺便说一句,在这个任务中 mish 要差得多)。作为优化器,我使用了带有以下参数的 AdamW:lr = 0.012, amsgrad=True, weight_decay=4e-7, beta_1=0.95。我没有使用任何回调函数,因为它会降低性能,而时间在这个任务中很重要。Epochs 数量为 70,batch size = 16384。

实际上 RAdam 显示出了更好的准确性,但我根本无法使用它,因为它慢得多,无法让解决方案在 36000 秒内完成。使用 300 个 epochs 和 RAdam 本来会产生惊人的结果,但我个人的 AMD GPU 告诉我“不!😐 去买支持 CUDA 的 NVIDIA 吧”。

顺便说一句,我甚至没来得及上传我使用 lecun_uniform 作为 kernel_initializer 的最后一个解决方案。你可以试试,它也能提高准确性。我 90% 的时间都花在了训练模型和在运行时/精度范围内优化它们。当然,我绝没有责怪 Kaggle 的意思,但我认为许多参与者因为这个任务的笔记本时间限制而感到困难。

而且……当然,祝贺所有的获胜者,并感谢 Kaggle 提供新的有趣挑战,让我变得更好。

祝好运!😊

同比赛其他方案