返回列表

[17th] 🔥 PERFECT cv 🔥 & improve step by step [中英]

435. Indoor Location & Navigation | indoor-location-navigation

开始: 2021-01-28 结束: 2021-05-17 共享出行与停车 数据算法赛
[第17名] 🔥 完美的CV 🔥 & 逐步改进
作者: Max2020 (Grandmaster) | 比赛排名: 第17名 | 发布时间: 2021-05-18

[第17名] 🔥 完美的CV 🔥 & 逐步改进

大家好,

这个比赛非常棒,感谢十域科技,感谢kaggle主办方,我太爱kaggle了。完成这个比赛我觉得是对我个人的一次非常好的成长,我学到了(复习了)非常多的东西,包括:tensorfloor、pytorch、多线程技巧、代码规范、规范的实验记录、cv的重要性。我没有在算法和特征上有什么突破,唯一有一点我没有看到有人讨论的是我cv的构建方法。后面我将会分享到它。

逐步改进 (Step by step)

现在先看一下我这一个月来的主要提升点:

主线方案 Public 成绩
使用了 lstm public kernel,进行简单调参,使用cost min+snap2grid 4.72
模拟test data 的特点构造了一个 fake test -
对训练集wifi时间戳进行插值,测试集还是路径点的时间戳 4.45
过滤掉间隔大于5秒的wifi log 4.20
寻找时间非常接近的点,修复开始结束点 4.18
训练集不变,测试集也是wifi时间戳,再反插值得到路径点 4.16
做wifi时间戳级别的cost min,插值得到wp,snap,修复开始结束点,最后再嵌套一次cost+snap 4.0x-390
引入4折 fake test 策略 3.82
更小心的修复开始和结束点 3.67
对wifi时间戳粒度的delta建模提高wifi cost min的结果 3.46
对wp时间戳粒度误差建模提高cost min 3.36
做wifi时间戳级别的cost min,插值得到wp,snap,修复开始结束点,嵌套两次cost+snap+fix 3.23
做wifi时间戳级别的cost min,插值得到wp,snap,修复开始结束点,嵌套三次cost+snap+fix 3.19

Fake Test (伪测试集)

第一次做Nfold的时候没有提升,我意识到训练集和测试集的分布不一致,我进行了一系列的探测,发现测试集有一些特点应该是人为限定的。测试集的txt大小>=2M(linux下看),时间跨度>=60s,路径点个数>=5。在前半个月的时候,这个限制同样抽出了626个路径作为fake test,无论是否进行后处理,我的fake test得分和线上的得分都保持一致。在最后1周我使用4折交叉验证,作为valid的那一份数据我同样做了上述限制,使得我的cv更加一致。后面我检查了private的分数情况,也符合相同的趋势。

失败的尝试

  • 直接使用png图像特征作为端到端的输入
  • 使用pytorch复现网络结构和lb分数
  • 使用MLP替换并不是时间序列的lstm
  • 使用所有site的数据
  • 尝试序列RNN,但是它效果不好且难以收敛

我有一个问题

我这一个月始终都没有想明白,为什么序列长度为1的lstm模型工作的这么好,mlp为什么无法替代它。。。

如果您对此发表任何看法。我将非常感激。

同比赛其他方案