返回列表

11th place code and solution

498. Foursquare - Location Matching | foursquare-location-matching

开始: 2022-04-14 结束: 2022-07-07 商品理解 数据算法赛
第11名代码与解决方案

第11名代码与解决方案

作者:sakusaku (Master) | 比赛:Foursquare - Location Matching | 排名:11th Place

首先,我要感谢团队成员、参赛者以及 Foursquare。
除了数据泄露问题外,问题的设计非常有趣,这是一场允许多种解决途径的精彩比赛。

我们的团队可能太“单纯”了,以至于没有怀疑数据泄露(因为主办方明确声明没有重叠数据)。

注意:这些笔记是在数据泄露被发现之前写的,现在看来有些观点可能显得很傻,但我们还是决定分享出来。

链接

摘要

  • 度量学习多输入(拼接文本 -> BERT + 经纬度)神经网络模型。
  • 通过 NN 模型嵌入和空间最近邻生成候选集。
  • 针对每个候选排名创建第二阶段的二分类 XGB 模型。

验证策略

  • 起初,我们将训练数据分为 4 折,并训练 BERT(训练:验证 = 3:1)。然后我们取出一折(验证集),并将其进一步分为 4 折用于第二阶段 XGB 模型的训练。
  • 过了一段时间,我们发现如果使用所有数据训练 BERT,效果会好得多。在这种情况下,我们用包含泄露的数据训练 XGB,这可能导致在测试数据上表现不佳。也许嵌入的质量比训练一个无泄露的 XGB 模型更重要。

预处理

  • 对于 BERT 模型,使用经纬度最近的 5 个点填充 NaN 文本。

第一阶段:创建候选集

  • BERT 嵌入候选
    • 架构 (BERT + lat/lon)
      • 将 BERT 模型输出与归一化的经纬度值拼接,并连接到全连接 (FC) 层 (320)。
      • FC 层 (320) 的嵌入用于计算相似度。
      • 损失函数:ArcMarginProduct
      • 训练
        • 训练过程中逐渐增加 Margin(从 0.2 到 0.8)。
        • 训练 40 个 epoch(耗时 24-48 小时)。
    • 集成
      • 拼接多个 BERT 模型的嵌入:
        • xlm-roBERTa-large, sentence-transformers/LaBSE, sentence-transformers/paraphrase-multilingual-mpnet-base-v2, remBERT
    • DBA/QE
      • 加权 DBA/QE 以获得更好的嵌入。
    • 创建候选
      • 对于每个 ID,使用余弦相似度 创建 50 个候选。
  • 空间候选
    • 使用 sklearn.neighbors.BallTree 根据经纬度添加候选。
    • 希望能补充被 BERT 嵌入遗漏的候选。

第二阶段:针对每个候选排名的 GBDT 模型

  • 许多公共内核在通过 Bert 嵌入从每个点取 N(例如 20)个邻居后训练 GDBT
同比赛其他方案