420. Cassava Leaf Disease Classification | cassava-leaf-disease-classification
这是我第一次参加 Kaggle 比赛,我的目标是进入前 200 名并获得银牌,但幸运的是我最终获得了金牌,我对这个结果非常满意。另一方面,我明白这其中有运气的成分,许多参赛者拥有更好的模型,但他们没有选择提交。我决定选择我最好的公榜分数(0.9079,第23名)和一个具有高公榜分数的最佳交叉验证模型(公榜 0.9066,前70名)。正如我所料,后者让我在私榜中获得了第 10 名。有趣的是,这是我在比赛中的最后一次提交,我甚至把它命名为 "good_luck" :)
无论如何,看起来第一名的家伙们(可能还有其他人)构建了一些特别的东西,而在 0.899-0.903 范围内的许多其他解决方案非常接近。同样令人遗憾的是,一些分享了好想法和笔记本的人没有得到预期的名次。我要感谢 @piantic (Heroseo) 提供的优秀笔记本,以及 @hengck23 分享的众多想法。
下面你可以找到我解决方案的关键点。我的解决方案非常简单,我想许多参赛者使用了类似的方法,但可能有人会觉得它有用。
| # | 模型 | 数据集 | CV | 公榜 | 私榜 |
|---|---|---|---|---|---|
| model-1 | DeiT-base-384 | 2020 + 2019 data | 0.901 | 0.9043 | 0.8950 |
| model-2 | EffNet-B4 | 2020 data | 0.901 | 0.9048 | 0.8975 |
| model-3 | EffNet-B4 | 2020 + 2019 data | 0.906 | 0.9025 | 0.9010 |
注意:“2020 + 2019 data”是指使用 2019 年数据集对小类进行上采样(移除重复项,仅使用 2020 年数据进行测试),model-3 之所以更好,不仅是因为 2019 年的数据,更因为 mixup/cutmix。是的,正如其他人已经提到的,对于我没有选择的模型,私榜上有很多意想不到的分数,例如 model-1 的某一折有 0.899 的私榜分数(而 5 折集成是 0.895)。
| (仅平均) | 公榜 | 私榜 |
|---|---|---|
| model-1 + model-2 + model-3 | 0.9066 | 0.9017 |
| model-1 + model-2 | 0.9079 | 0.8998 |
| model-1 + model-3 (未选择, CV=0.907) | 0.9066 | 0.9013 |
由于我在度假,在最后两周,我没有训练新模型(但在改进第三个模型方面有一些潜力),只是尝试从我已有的模型中进行集成。