第9名解决方案
第9名解决方案
作者:taksai (Grandmaster) | 比赛排名:第9名
设置
通过 2折交叉验证 (2fold CV) 进行本地评估
按 POI (兴趣点) 进行 GroupKFold 分组
第一步:候选选择
- 为每个 ID 选择 400 个候选
- 基于经纬度的 KNN:350 个候选
- 基于经纬度 + 名称 TFIDF 的 KNN:50 个候选
- 最大 IoU:0.994,共 4.2 亿个候选对
第二步:轻量级模型建模
- 使用 CatBoost 配合 TFIDF 相似度特征
- 特征 (40个特征)
- 基于 TFIDF 的文本相似度
- 文本的原始值 & 差分整数值
- 经纬度的原始值 & 差分值
- 阈值为 0.005
- 最大 IoU:0.987,300 万个候选对
第三步:完整建模
- CatBoost 和 LightGBM
- CatBoost 对每段文本进行文本编码
- 特征 (第二步的 40 个 + 100 个特征)
- 文本相似度计算使用了 gesh, LCS, leven, jaccard 等 12 种方法
- ID 计数,匹配 ID 数
- 对 ['name', 'name_match'], ['categories', 'categories_match'] 每对进行目标编码 (Target Encoding) (2折)
第四步:后处理
分数
- 最终 CV:0.905 (2折 CV)
- 线上得分 (LB):
- CatBoost (cb): 0.925
- cb + 后处理 (pp): 0.930
- cb + lgb + pp: 0.933
- cb + lgb + pp + 训练所有数据 (1折): 0.943
- cb + lgb + pp + 所有数据 + 5个模型集成: 0.945
- cb + lgb + pp + 所有数据 + 集成 + 增加迭代次数 (过拟合): 0.948