返回列表

23rd Place Solution: You don't need heuristics or expensive GPU

434. Human Protein Atlas - Single Cell Classification | hpa-single-cell-image-classification

开始: 2021-01-26 结束: 2021-05-11 生命科学 数据算法赛
第23名方案:你不需要启发式方法或昂贵的GPU
作者:Raman | 排名:第23名 | 发布时间:2021-05-12

第23名方案:你不需要启发式方法或昂贵的GPU

[更新]
关于解决方案文章的最新版本,请查看 GitHub 仓库 README。那里应该包含所有的图表,但我不再维护当前帖子中图表的外部托管链接。如果有任何问题,请随时通过 Kaggle 给我发私信或在 GitHub 上提出 Issue。谢谢!


大家好!

首先,我要祝贺获奖者!能向你们的解决方案学习是一种荣幸!

其次,我要感谢比赛的组织者!感谢你们在论坛上亲切、细心和负责任的态度!
还要感谢我所有的 HPA 竞赛伙伴们!😊 多亏了你们,感觉就像是一个由志同道合、热情洋溢的同事组成的超棒团队。正如 Darek @thedrcat 所说,真希望我们能见面庆祝一下。希望这能在未来的某个线下 KaggleDays 黑客马拉松上实现 😉

解决方案

简介

与 Paweł @narsil帖子类似,我的方法是非常以数据为中心理论上严谨的。

我解决方案的核心是去噪,包括基于图拉普拉斯正则化理论的去噪。去噪本身使我能够在没有计算密集型大型模型没有启发式方法(如排名、预测值相乘等)的情况下获得具有竞争力的位置。

去噪

图片
去噪示意图

我设法实现了这篇论文中的计算高效图信号去噪算法。我的 Python 实现可以在这里找到。论文中的算法强制执行标签稀疏性,以便每个对象在去噪后都有一个单一的置信标签。因此,去噪的输出没有被直接使用。我关注的是在去噪软标签中具有最高众数的一组细胞。例如,我从最高的去噪标签中添加了大约 500 个细胞:
图片:
去噪标签示例

负标签

我假设标签具有独立性,估计了负标签概率:
$$ P_{neg} = \prod_{c\ in\ patterns} (1 - P_{c}) $$。

用这种方式估计 P_{neg} 而不是试图预测负标签,将我的公共 LB 分数从 0.517 提高到了 0.523。

更新:我注意到我错误地没有将基于独立性的估计包含在最终提交中。在与我的私有 LB 排名对应的提交中,我估计负标签概率为:
$$ P_{neg} = \min_{c\ in\ patterns} (1 - P_{c}) $$。

这种估计 P_{neg} 的方式在公共 LB 上比基于独立性的估计差了 0.0007。但幸运的是,结果证明它在私有 LB 上好了 0.0003。

分割

我实现了边界细胞的移除。我还修改了小细胞核的移除方式,基于中等细胞核大小而不是硬编码的阈值来进行。这些修改将我的公共 LB 分数从 0.523 提升到了 0.527。

简单模型

5 折交叉验证,使用由 Shubin @bestfitting 提供的 DenseNet121,在《Nature》论文论坛中均有引用。感谢你的出色工作,Shubin

同比赛其他方案