返回列表

1st place solution

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

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

第一名解决方案

作者: Takoi (Team: waiwai)
发布时间: 2022-07-09

首先,感谢主办方举办这场有趣的比赛,并祝贺所有的获奖者!

虽然我们在这次比赛中学到了很多东西,但令人遗憾的是比赛中存在数据泄露。非常遗憾的是,我们在最后几天不得不花费大量时间寻找泄露点。

摘要

Pipeline

我们将候选对的生成以及判断它们是否属于同一个POI(兴趣点)的过程分为四个独立的阶段。

  • 第1阶段:创建候选对
  • 第2阶段:特征工程和 LightGBM
  • 第3阶段:xlm-roberta-large、mdeberta-v3-base 和 Catboost
  • 第4阶段:后处理,并使用 xlm-roberta-large 预测新出现的候选对

接下来,由于训练集和测试集中存在相同的数据,我们尝试将它们关联起来,并删除那些可能错误的配对。

交叉验证策略

  • 本地评估采用2折交叉验证(2 fold cross validation)。在提交前的训练中,我们使用了全部2折的数据。

第1阶段

  • 对于每个ID,我们通过以下两种方法各选出100个候选者:
    • 经纬度的欧几里得距离
    • 名称嵌入的余弦相似度
      • 模型:bert-base-multilingual-uncased
      • knn:cuml
    • 为候选对生成特征。为了节省内存,这里只生成了少量特征,例如名称的 Jaro 距离和类别的 Jaro 距离。
    • 使用 LightGBM 对上述两种模式分别进行预测,各保留前20个候选者,总共约40个候选者。为了减少推理时间,我们使用了 Forestinference。
    • 最大 IOU:0.979

第2阶段

  • 我们基于以下 notebook 创建了约120个特征:
    • https://www.kaggle.com/code/ryotayoshinobu/foursquare-lightgbm-baseline
    • 字符相似度特征,如 Levenshtein 距离和 Jaro-winkler 距离。
    • 以 ID 为键的字符相似度统计量(最大值、最小值、平均值),以及这些统计量的比率。
    • 使用经纬度的欧几里得距离
    • 使用 SVD 对名称嵌入进行降维
      • 模型:bert-base-multilingual-uncased
  • LightGBM(推理:Forestinference)
    • CV:0.875
  • 阈值:0.01
    • 候选数量减少到约10%。

第3阶段

  • 我们曾怀疑训练集和测试集之间存在重叠,但没有直接证据,因此我们创建了过拟合训练集的模型以提高 LB(Public Leaderboard),同时也创建提高 CV 的模型。在发现训练集和测试集重叠的证据后,我们只需要集中精力提高仅存在于测试集中的数据的准确性,因此我们最终使用了 CV 最高且不过拟合训练数据的模型(例如,不增加 epoch 数,使用 FGM 等)。
    • catboost
      • 使用了与第2阶段相同的特征
      • CV:0.878
    • xlm-roberta-large
      • 文本:name + categories + address + city + state
      • 结合第2阶段的一些特征(约70个)
      • 3个 epochs
    • mdeberta-v3-base
      • 文本:name + categories + address + city + state
      • 结合第2阶段的一些特征和新特征(约90个)
        • 曼哈顿距离、哈维辛距离等
同比赛其他方案