返回列表

6th place solution

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

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

第6名解决方案

作者: tomo20180402 (Grandmaster) | 比赛排名: 第6名

首先,感谢所有组织这次比赛的人。
比赛在一个多月前就结束了,我现在分享我的解决方案。
这次比赛的任务和数据很有趣,但我对数据泄露问题感到遗憾。

1. 预处理


  • 去除看起来像噪音的符号。
    • 关于邮编和电话,只保留数字。
  • 对日语(JP)应用 pykakasi,对所有数据应用 unidecode。

2. 候选生成


  • 每个 id 生成 28 个候选,IoU=0.978。
  • 数据集创建过程
    • 按 poi(兴趣点)将数据分为两部分。
    • 为每部分数据创建候选和特征。
    • 更改种子并多次拆分数据。
    • 将它们合并以形成数据集。

第一阶段

  • 使用 kdtree 根据坐标为每个点提取 6500 个点。

第二阶段

  • 计算与每个点的相似度,并通过以下加权和选择前 28 个作为候选。
    • 坐标距离的平方根
    • 1 - jarowinkler:名称、类别
    • 归一化 levenshtein:名称、类别
    • 1 - simpson:按 ' ' 分割的名称、按 ', ' 分割的类别

3. 匹配预测


特征

  • kdtree 的坐标距离排名
  • 从名称识别语言
    • 使用前 3 个标签和概率
  • 坐标距离
    • haversine(半正矢)、chebyshev(切比雪夫)、euclidean(欧几里得)、manhattan(曼哈顿)
  • 类别特征的相似度
    • LCS(子序列/子串)、levenshtein、jarowinkler
    • 关于按 ', ' 分割的类别,使用基于暴力计算的相似度、平均值、最小值和最大值。
  • 类别特征的字符串长度
  • 基于字符串和单词的集合特征
    • jaccard、dice、simpson
  • 计数编码
    • 坐标、名称、地址、url、电话
  • tf-idf
  • 关于出现频率的排名特征
    • 国家、类别、按 ', ' 分割的类别、按 ' ' 分割的类别(词)
    • 除国家外,按升序和降序进行标记。
    • 少于 1% 的标签将被移除。
  • 每个候选的排名特征
    • 为每个特征的每个 id 在 28 个候选之间创建排名。

模型

  • catboost,单模型
  • 移除早停并增加迭代次数(过拟合)
  • 在所有数据上训练

4. 后处理


  • 图概率卷积 Graph Probability Convolution
    • 例如)更新从 A 到 B 的连接概率(红线)。
      • 提取 A 的候选中那些以 B 为候选的点。
      • 限制为与 A 的连接概率大于等于 0.5 的连接。
      • 计算与 B 连接概率的加权平均值,使用与 A 连接的概率作为权重。
      • AB’
        = (AC * CB + AD * DB + AA * AB) / (AC + AD + AA)
        = (0.7 * 0.7 + 0.9 * 0.1 + 1 * 0.6
同比赛其他方案