547. Playground Series - Season 3, Episode 13 | playground-series-s3e13
首先,我要感谢 Kaggle 组织了 Playground Series 系列比赛。对于像我这样的新参赛者来说,这是一次非常棒的体验。
说实话,我参加本次比赛的主要目的是学习如何在集成模型中使用自编码器。实际上,这一想法极大地受到了这篇传奇帖子的启发。第二个目标则是为了获得比赛周边商品 :D。
因此,我明白自己在数据预处理方面并没有投入太多精力,可以说我在本次比赛中非常幸运。
我加入比赛的时间较晚,因此只构建了四种类型的模型。没有进行特征工程,所有特征均使用标准化缩放器进行了缩放。
| 模型名称 | 公开榜 | 私有榜 | 备注 |
|---|---|---|---|
| LightGBM | 0.31677 | 0.41337 | 没有特别之处,只是一个使用默认参数的简单 LightGBM 模型。 |
| 神经网络 | 0.33995 | 0.44078 | 简单的神经网络,结构为 64-64relu-32relu-11softmax。其中第一层的 64 对应输入层,数值等于数据集中的特征数量。 |
| 自编码器 | 0.37196 | 0.46052 | 该自编码器采用瓶颈结构设计:64-64relu-32relu-16relu-32relu-64linear。取编码器部分(直至 16relu),将其冻结,并在顶部添加 16relu-11softmax 层。 |
| 集成模型 | 0.35871 | 0.53179 | 这是对前三个模型进行简单加权平均得到的集成模型。具体解释如下。 |
每个模型都会输出每个类别的概率。我曾思考,或许可以通过对每个模型的各类别概率取平均值(例如,计算 LightGBM、神经网络和自编码器对“疟疾”类别的预测概率的平均值),从而做出一个有根据的推测。
我假设,如果某个结果在大多数模型中都表现出很高的置信度(例如,神经网络和自编码器都确信预测结果为疟疾),但另一个模型却不太确定(可能 LightGBM 认为是登革热),那么我仍然会选择多数模型所支持的结果。
因此,我的做法是将所有模型的概率取平均值,然后选择平均概率最高的前三个类别。
我的代码笔记本非常混乱,且明显缺乏必要的说明,因此很抱歉我无法将其公开发布。
我曾考虑过使用模型堆叠(stacking)的方法,但一直未能使代码正常运行,因此我最终放弃了这一尝试。
我非常欢迎与大家进行讨论,并期待听到各位的想法。祝大家接下来的一周一切顺利!
此外,我要感谢 @belati 和 @mpwolke。你们在比赛中表现出的积极参与精神,不断激励着我继续努力尝试!