返回列表

2nd place solution - dae + embeddings

426. Tabular Playground Series - Mar 2021 | tabular-playground-series-mar-2021

开始: 2021-03-01 结束: 2021-03-31 保险科技 数据算法赛

第二名解决方案 - DAE + Embeddings

作者: danzel | 发布时间: 2021-04-01

我们又见面了 😄 …

起初我只是想测试一些想法,所以我结合了 @ryanzhang 和我在之前比赛中的获胜方案的最佳部分 + 为分类变量添加了嵌入输入。
架构图

我的主要想法是在表示学习阶段将学习到的嵌入表示同时用于数据 和目标。因为我不喜欢噪声 + 独热编码 结合在一起的方式。
噪声与编码对比

  1. 展示了独热编码的基本思想。
  2. 展示了在独热编码之前添加噪声会发生什么。
  3. 展示了在独热编码之后添加噪声的部分。我不喜欢将这种类型的数据输入到 DAE 中,因为在这种情况下,一个观测值可能同时属于所有类型的级别。

所以我将噪声添加到标签编码的分类变量中,通过嵌入层传递它们,并即时重建目标/干净部分。
嵌入层处理流程

噪声数据被用作输入,嵌入正在被训练,ytrain 被创建,就这样。我也将这个想法应用到了 masking 部分。
Masking机制

初始/默认 mask 必须进行调整以匹配嵌入表示。
我没有做太多的调优/训练。

  • 所有分类变量都通过维度为 5 的嵌入层(即使是二进制变量)。增加或针对每个分类变量调整此参数可能会改进第一阶段的模型。
  • 固定噪声为 0.25 随机分布。我没有尝试增加/减少噪声。
  • DAE 训练了 1000 个 epoch。
  • 非常简单的两层第二阶段 MLP (1000r-1000r-s)。

因为效果很好,我还训练了一个 lightgbm 模型,并通过 xgblinear 将 lgbm + 三次 dae 运行的结果进行了堆叠。

模型得分

1x lgbm = 0.89743 (cv) | 0.89304 (public lb) | 0.89769 (private lb)
3x dae mlp = 0.90042 (cv) | 0.89560 (public lb) | 0.90012(private lb)
* 并没有上传每一次 dae - mlp 的运行结果,所以这里只有一个分数。

最终 xgblinear 堆叠模型 = 0.9008564 (cv) | 0.89599 (public lb) | 0.90053 (private lb)

同比赛其他方案