435. Indoor Location & Navigation | indoor-location-navigation
祝贺所有的获胜者。尽管我在该领域没有经验,但我发现这次比赛非常有趣,并决定尽早参加。这让我有机会尝试不同的想法。让我介绍一下我在最终提交中使用的方案。
我只使用了WiFi信号进行位置预测。信标或磁力数据并没有起到帮助作用。
我按数据块对所有的WiFi行进行了分组,但我根据“最后看到的时间戳”,将WiFi行重新分配给了在时间戳上最接近的WiFi块。
在第一步中,我使用LGBM模型进行楼层预测(每栋建筑一个模型),并使用简单的两层前馈神经网络(NN)预测位置,表现还可以。
然后,我转向了一种相当激进的方法,结果证明效果更好:
对于每个测试点,我计算了其WiFi指纹与每个训练点之间的余弦值。即:标量积除以两个向量的范数。
使用余弦值而不是实际的标量积很重要,因为WiFi信号的强度在不同位置差异很大。
结果是,完美匹配将返回余弦值1,随着最近训练点“匹配”距离变远,该值会减小(实际上,还需要一些后处理来剔除异常值)。
对于每个测试点,针对每一层计算最佳训练点“匹配”。
然后通过检查余弦值沿路径的演变来进行楼层预测:选择余弦值最频繁最高的楼层作为预测楼层。
使用这种方法(这是一种k-NN),没有模型(没有参数需要训练),也没有交叉验证(CV)……
实际上,按照帖子中提出的简单想法:Indoor Post-processing by Cost Minimization,我提交了我的最终方案之一的编辑版本,很高兴看到我的楼层预测在公共和私有数据上都达到了100%的准确率:
| 提交与描述 | 私有分数 | 公共分数 |
|---|---|---|
| submission_df_leak_start_end - REFINED_PATHS-FullPath-SE-NoENF-LS_submission-2021-05-17_07-58-29 - score2.692.csv | 3.25303 | 2.69255 |
| submission_INCREMENT_2021-05-18_17-42-06.csv | 18.25303 | 17.69255 |
采用第2节讨论的方法,位置预测仍然非常嘈杂。有必要利用加速度计数据。
在这个阶段,我没有从原始数据开始,而是使用了组织者提供的库("compute_step_positions")。
首先,我使用了自己的后处理方法(沿路径进行局部平均,使用滑动窗口结合初始预测和步进位置)。然而,Saito的笔记本效率更高。此外,成本最小化表达式中的权重可以使用余弦值来反映对某些点的置信度更高。
第3节的输出是定义路径的位置列表。
我定义了另一个成本函数,该函数结合了每条路径的3个值:
然后,使用一些“变异”算子进行基于种群的搜索,以更新路径并捕捉约束条件以将点放置在走廊中。
同样,这里没有使用CV框架,但基于此成本函数的局部搜索的改进似乎与LB分数高度相关。
我没有深入探索这部分。我只是像我们许多人一样偷懒地调用了snap-to-grid(3-3-g6-indoor-navigation-snap-to-grid)和泄漏(Postprocessing based on leakage)笔记本 :-)。
这些笔记本通常会将我的解决方案提高大约0.3分。
我想研究的一个方向是关于修正比赛主办方提供的python库返回的step_positions。实际上,通过对训练数据进行统计分析,可以注意到基于实际训练位置的线段与相应的step