432. Shopee - Price Match Guarantee | shopee-product-matching
非常感谢主办方组织了这样一场精彩的比赛。我非常喜欢这类资源需求较低的比赛(因为我只有 Kaggle Kernels 和 Colab😄),而且可以应用很多技巧。
同时祝贺所有获胜者、参与者和贡献者。我读过的所有方案都非常精妙,以至于我在犹豫是否要发布我的方案。
这场比赛非常独特,既可以应用图像处理也可以应用文本处理,此外还有一些后处理技巧。同时也需要建立良好的验证机制。
以下是我简单的方案:
使用 GroupKFold,每个组的计数是分层抽样的,因此标签的计数分布在训练集和验证集之间几乎相似。共分配了五个折,其中四个折用于训练,一个折用于验证(80%-20%)。
Efficientnet - B1 : 640x640 - 仅 1 个折
尝试了另一个使用 Efficientnet B5 : 512x512 的折,但 LB 仅增加了 0.001(非常微不足道),而且是在 Private LB 上,Public LB 是一样的。
使用自定义回调函数进行检查点保存,该回调在每个 epoch 后进行阈值搜索(余弦)并计算验证集上的 F1 分数。
Tfidf 向量化
阈值部分有点棘手,因为必须在图像和文本结合时确定。如果我分别计算图像和文本的最佳阈值然后合并结果,效果并不是最优的。在我的情况下,在验证集中将阈值保持在 0.45(余弦)对两者来说都是最优的。在提交时,它仅比验证阈值低 0.2(即 0.25)。这需要在几次提交后确定,并且之后与验证集正确关联。
拼接图像预测和文本预测。
基于 UOM 移除误报。
如果匹配项只有 1 个,则根据距离拼接最接近的产品(同时考虑图像和文本,取距离较小者)。
还计划应用更多想法,如 BERT、降低阈值和增加传递关系等,但由于其他优先事项,没有时间实施。
还要特别感谢(我认为这还不够)@cdeotte 的贡献,每当我参加任何比赛时,他的贡献都对我产生了巨大的影响。