339. Recursion Cellular Image Classification | recursion-cellular-image-classification
各位 Kagglers 好啊!比赛办得不错,恭喜所有获胜者以及所有学到了新东西的人。感谢并祝贺我的队友 Andriy ( @ayaroshevskiy ),Sasha ( @pajari ),Vitaliy ( @ladler0320 )。这是我们非常简单直接的方案的简短总结。
我不想在定义上争论。但实际上,那只是目标类别的共现,我建议在每个多分类挑战的 EDA(探索性数据分析)中都要检查这一点,就像检查类别不平衡一样。EDA 是必须的。
例如:
df.groupby(["experiment", "plate"]).sirna.apply(lambda x: x.sort_values().unique())
那么它们为什么会以这种方式共现?为什么实验只在板内进行混洗?我想这是设计上的原因,对于 1100 多个类别来说,很难对每一个实验都进行混洗,但无论如何,这些知识显著降低了误差。
正如大家所知,关键在于利用神经网络的原始/softmax 预测结果来解决分配问题。所以我们也使用了匈牙利算法。
预训练的 EfficientNets b0、b1、b2 取得了几乎相同的分数,但混合它们的原始预测然后解决分配问题很好地提升了分数。平均这 3 个模型的分数为 0.744/0.750(3 种细胞,U2OS-04 已剔除)Public LB 和 0.990 Private LB(第 13 名)。
我看到了几种如何拆分测试实验进行伪标签的策略。实际上我尝试了大约 6 种策略,进行了一两次 PL 迭代。最后我采用了非常谨慎的策略——软标签和在折之间平衡拆分实验:
pl_all_folds = ["HEPG2-10", "HUVEC-19", "RPE-10", "U2OS-05"]
pl_folds = [["HEPG2-08", "HUVEC-17", "HUVEC-23", "RPE-08"],
["HEPG2-09", "HUVEC-20", "HUVEC-21", "RPE-09"],
["