返回列表

[7th Solution] Ensemble of Tree + NN

631. UM - Game-Playing Strength of MCTS Variants | um-game-playing-strength-of-mcts-variants

开始: 2024-09-05 结束: 2024-12-02 游戏AI 数据算法赛
[第 7 名解决方案] 树模型 + 神经网络集成

[第 7 名解决方案] 树模型 + 神经网络集成

作者: gezi (GRANDMASTER)
发布时间: 2024-12-03
竞赛排名: 7
  • 交叉验证 (CV)
    嗯,因为对我来说,有时使用 Game 进行 GKF 交叉验证与 LB 更一致,有时使用 GamerulesetName 更好。我有点困惑,在最后几天我坚持使用 GKF + Game + 标签分层 (stratify with label),因为我认为测试集中新游戏占主导 (new Game dominate),但这可能是一个错误的决定,因为 PB 显示我使用此 CV 的最终集成权重完全不起作用。
  • 数据增强 (Data aug)
    像其他团队一样,我最初也使用了翻转增强 (flip aug)(交换 agent1 agent2, advantageP1, label),结果显示 LB 提高了约 0.01。
    我还通过使用组合翻转数据进行了测试时增强 (TTA)。
  • 树模型 (Tree models)
    对我来说,树模型比神经网络效果更好,且树模型结果在 LB 上稳定得多。
    树模型表现良好的关键在于使用:
    1. 数值特征的手动交叉特征 (manual cross feats of numerical feats),如前 20 个数值特征的 * / 运算。
      这极大地改善了 CV 和 LB,使用前 5、10、15 直到 20 个特征持续改善,但更多的交叉如前 25 * 25 会损害 LB。
      Feature Cross Performance Chart
    2. 目标编码 (Target encode) 帮助 LB 提高 0.001
    3. 让树更深,对于 LGB 我用了 16,对于 CBT 我用了 10。
    4. 为避免过拟合,将 reg lambda 设高,如 10,将 CBT 的 random strength 设高,如 10。
    5. LGB 的 Dart 模式改善了 CV 但损害了 LB,我的 CV GKF + Game 在这里可能不正确。嗯,相信 LB...
    6. 树模型结果:
      LGB 单模型 10 折 LB 419 PB 425
      CBT 单模型 5 折 LB 422 PB 428。上周我付出了很多努力改进 CBT 模型,但它对最终 PB 没有贡献。
      嗯,简单的 LGB + CBT 集成仅将 LB 提高了不到 0.001,但未改善 PB。
  • 神经网络模型 (NN models)
    参考了这个伟大的 notebook:https://www.kaggle.com/code/yekenot/mcts-deeptables-nn
    我使用 PyTorch 实现了 NN 模型,将顶部数值特征转为分箱 (bins),并添加了 LGB 树叶子特征 (depth 5, 200 trees)。
    还在 pooling 层使用了 CIN + FM,并对 NN 模型使用了标签增强 (label aug, multinomal)。
    然而 NN 模型在 LB 上不稳定,且在 CV (GKF + Game) 上表现更差。
    幸运地是我有一个 5 折 NN 模型,LB 419 PB 427。注意由于随机性,NN 模型通常 LB 约为 423,但由于 LB 和 PB 一致,你只需使用最好的 LB NN 模型。
  • 后处理 (Post deal)
    优化 OOF a * x + b 以最小化整体 RMSE
  • 集成 (Ensemble)
    我最好的 LB 416 PB 423 模型是 LGB(10 折) + NN (5 折) 的简单混合 (blend),权重为 1, 0.75。

如果有更多时间,我会尝试切换回使用 GKF + Gamerulesetname 的 CV,测试 CV + LB,并尝试使用 OOF 方法进行 stacking。

同比赛其他方案