623. ISIC 2024 - Skin Cancer Detection with 3D-TBP | isic-2024-challenge
我很荣幸有机会与大家分享我的解决方案。在深入探讨之前,我想说几句。我在大学一年级时第一次接触 Kaggle。现在,我已经工作两年了,距离那时已近九年。在此期间,我一直渴望获得金牌,但从未认真投入过比赛。主要原因是我认为自己没有足够的时间。现在,随着我开始工作,闲暇时间变得更加稀缺。然而,我意识到除非我投入足够的时间学习优秀的解决方案并进行实验,否则我永远无法实现获得金牌的目标。
因此,在过去的两个月里,我有时早起一小时来研究竞赛,试图挤出一个小时的午休时间来做同样的事,偶尔还会在晚上工作后再花两个小时。我很幸运,这是我第一次全身心投入竞赛,并取得了好成绩。我也非常感谢 Kaggle 平台上优秀的参与者。正是因为有你们,Kaggle 才如此迷人。
现在,以下是我的解决方案。
像大多数参与者一样,我首先训练了一个图像模型。整体框架与 2020 年第一名获胜者 的代码相同。感谢 Haqishen 和他的队友,我几乎没有更改代码逻辑,继续使用图像 + 元特征的方法训练模型。
关于数据和交叉验证方法,我使用了 Cdeotte 之前分享的 三重分层无泄露 KFold 交叉验证数据。这些数据混合了 2020、2019、2018 和 2017 年的记录,我在此基础上添加了 2024 年的数据。我注意到某些患者 ID 同时出现在 2020 和 2024 数据集中,所以我重新划分了数据,确保它们被分配到同一个折中。如果您有兴趣了解 2024 数据集是如何划分进行交叉验证的,可以查看这个 Kernel。
在实验过程中,我发现由于 2024 图像尺寸较小,使用 128 和 192 的图像尺寸效果最好。我比较了 EfficientNet 系列的几个模型,发现 128 尺寸的 EB1 和 192 尺寸的 EB3 表现最好,所以我最终使用了这些模型。EB1+128 的 CV 分数为 0.165,LB 为 0.165;而 EB3+192 的 CV 为 0.168,LB 为 0.158。
另一个关键点是,受 Haqishen 解决方案的启发,我将二分类改为九分类。通过数据分析,我发现通过修改 iddx_3 可以实现这一目标。
您可以参考这个 Kernel 了解上述修改。再次感谢 Haqishen 和 Cdeotte。
通过引入图像模型的预测结果作为特征,我没有过多挖掘元特征,因为我发现了这个优秀的 Kernel。这个 Kernel 中的特征构建非常符合逻辑。感谢 greysky 的分享。您可以参考这个 Kernel 查看我的代码。
我的模型的 CV 和 LB 之间的相关性一直很高,这让我非常高兴。我合并了两个种子,每个种子包含一个 LGB 和一个 CBT 模型,并根据 CV 结果进行加权。您可以参考这个 Kernel。此外,由于 EB3+192 模型的预测时间特别长,在另一个解决方案中,我使用该模型对 LGB 模型预测概率最高的前 70,000 个样本重新预测并进行加权平均。您可以参考这个 Kernel。
我的最好结果是 0.173(此 Kernel),使用 EB3+192 图像模型,但该模型当时给我的 LB 为 0.158,这与 CV 结果不一致。所以我犹豫是否使用该模型。然而,结果表明它并没有过拟合,EB3+192 确实在 PB 上表现更好。所以,相信你的 CV;这真的非常难做到。
最后,我想向在比赛期间不断分享和帮助解决问题的 Kagglers 致敬。正是因为有你们,Kaggle 才如此吸引人,我也学到了很多知识。谢谢。