第一名解决方案
第一名解决方案
作者: Takoi (Team: waiwai)
发布时间: 2022-07-09
首先,感谢主办方举办这场有趣的比赛,并祝贺所有的获奖者!
虽然我们在这次比赛中学到了很多东西,但令人遗憾的是比赛中存在数据泄露。非常遗憾的是,我们在最后几天不得不花费大量时间寻找泄露点。
摘要

我们将候选对的生成以及判断它们是否属于同一个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个特征:
- LightGBM(推理:Forestinference)
- 阈值:0.01
第3阶段
- 我们曾怀疑训练集和测试集之间存在重叠,但没有直接证据,因此我们创建了过拟合训练集的模型以提高 LB(Public Leaderboard),同时也创建提高 CV 的模型。在发现训练集和测试集重叠的证据后,我们只需要集中精力提高仅存在于测试集中的数据的准确性,因此我们最终使用了 CV 最高且不过拟合训练数据的模型(例如,不增加 epoch 数,使用 FGM 等)。
- catboost
- xlm-roberta-large
- 文本:name + categories + address + city + state
- 结合第2阶段的一些特征(约70个)
- 3个 epochs
- mdeberta-v3-base
- 文本:name + categories + address + city + state
- 结合第2阶段的一些特征和新特征(约90个)