返回列表

3rd place solution | NCAAM 2021

430. March Machine Learning Mania 2021 - NCAAM | ncaam-march-mania-2021

开始: 2021-02-25 结束: 2021-04-06 赛事预测 数据算法赛
第三名解决方案 | NCAAM 2021

第三名解决方案 | NCAAM 2021

作者:Tim Sereno | 排名:第3名 | 投票数:18

感谢 Kaggle 举办了这场疯狂三月 2021 比赛!我在 Kaggle 上获得了我的第一个奖项,在这场比赛中获得了个人金牌 🥇,最终排名第3。

我已经在这个 Kaggle Notebook 中公开了我的解决方案。

输入

我从一个公开的 Notebook 代码开始,该数据集包含的特征仅从 Kaggle 为比赛提供的最少数据文件中提取。这不包括 Massey Ordinals 数据。我的目标是将注意力集中在模型调优上,而不是数据整理。

过程

我使用 PyCaret 库创建了一个分类模型。尝试了各种参数以在模型训练期间改善 LogLoss。最终,我启用了 PyCaret 的特征工程、缺失数据插补和 Boruta 特征选择参数。所有这些设置的组合在减少模型训练期间的 LogLoss 指标方面产生了显著效果。

利用 PyCaret 的功能,我进行了 10 折交叉验证,并使用 Extra Trees、LDA 和 NB 线性回归算法混合(集成)了三个模型。我使用 PyCaret 内置的网格搜索设置对模型进行了 10 次迭代调优,但专门针对 LogLoss 进行了优化。最后,我使用 PyCaret 的函数完成了模型定型,在所有数据上进行训练,而不仅仅是训练/测试数据,这有助于模型的泛化。

即使使用 GPU 加速,Catboost 和 LightGBM 训练模型的速度也非常慢,而且指标没有改善,所以我决定使用更快的经典算法。

请查看 Notebook 了解在训练期间提供最低 LogLoss 指标的设置。不过,我相信集成其他各种算法并进行更多次迭代调优,可能会在模型训练期间进一步降低 LogLoss。

输出

请注意,我没有手动覆盖最终模型提交的任何预测结果。我想看看一个泛化模型在总共 707 名参与者中的表现如何。

如果您有任何困惑或问题,请告诉我。很高兴为您解答!

同比赛其他方案