返回列表

3rd place solution

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

开始: 2021-01-28 结束: 2021-05-17 共享出行与停车 数据算法赛
第三名方案

第三名方案

作者:Zidmie | 赛事排名:第3名

感谢主办方举办了这场精彩的比赛,也感谢所有在论坛上分享见解的人!
我很高兴能成为一名 Grand Master(特级大师) :-) 在这场比赛上花费大量时间是值得的!

我尝试了很多很多东西,在这个过程中保留了一些,放弃了另一些,但很难说哪些是好的,哪些是不好的。

首先,我计算了理论路径(路径形状:从一个航路点到下一个航路点的 deltaX/Y):

  • 两个航路点之间的距离是通过一个 GLM(广义线性模型)获得的,该模型拟合了超过 2000 个特征,这些特征是利用加速度计 + 陀螺仪数据计算得出的。我对两个航路点之间距离预测的 RMSE(均方根误差)约为 1.1m。我认为获得一个好的距离模型就像是比赛中的另一场小比赛!
  • 方向仅通过磁场获得。我尝试使用陀螺仪信息,但并没有改善我的预测。我也尝试了一些过滤器,但没有成功。方向通常很差,比如有 30 度的偏差,但我没找到改进的方法。

然后是我的 WIFI 模型:
我主要使用的是最近邻模型。我对训练数据和测试数据都应用了一些过滤器和阈值(大约 20 个超参数)。我利用时间戳和最后见到的时间戳之间的差异为每个 WIFI 源赋予权重。此外,我将每个 WIFI 源的权重作为超参数。这给了我很多超参数。
我注意到,当我调整 WIFI 模型的超参数时,结果可能会发生很大变化。一个模型可能适用于某些路径,而不适用于其他路径。因此,我对每条路径的超参数进行了优化,直到 WIFI 估计的路径与理论路径具有相同的形状。我通过模拟退火算法进行随机优化。这个过程非常耗时……我让它运行了好几个星期!
我还通过在训练数据上计算整个路径并在较短的时间戳处计算 WIFI 信息来增加 WIFI 信息,这给了我其他可以混合的模型,但效果不如在每个航路点定位 WIFI 信息的模型。
然后,我在快速后处理中使用了这些模型以及所有公开笔记本的 WIFI 模型:对于每条路径,我给每个 WIFI 模型分配一个权重,并优化这些权重,以便与理论路径的形状达到最佳拟合。
在这一步结束时,我的分数大约是 4m。

改进理论路径:
我计算了几条改进路径:

  • 从理论路径开始,我改变整体路径,使其起点和终点与我的 WIFI 模型的起点和终点一致。
  • 我试图在理论路径的一部分和训练航路点上找到相似的形状。当 3 个或更多连续航路点在经过 X/Y 偏移后,与现有航路点完全(或几乎)匹配时,我认为它们是正确的。然后我使用理论路径计算路径的剩余部分(向前和向后)。这是一种“局部”对齐网格,因为我只是将几个航路点移动到网格上。
  • 然后我进行了前向/后向迭代:从 WIFI 位置开始,我根据计算出的 deltaXY 和角度移动,如果遇到墙壁,我会找到最合理的方向来避开墙壁。这在走廊内效果很好,但很难让它进入狭窄的走廊。为了避免进入错误的走廊,我在每个时间步将位置与 WIFI 位置取平均值。经过 2 次前向/后向迭代后,大多数时候我的模型都能进入正确的走廊。

最后是我的对齐网格方法:
我使用了自动航路点生成。
对齐网格是通过在每个时间步计算所有训练航路点的概率来获得的。对于时间步 i,我计算从任何训练航路点转换到任何其他训练航路点的概率。这有点类似于马尔可夫过程,这是我在之前的比赛(ion 比赛)中发现的。
该概率是几个概率的乘积:

  • 如果路径穿过墙壁或商店,概率为 0;
  • 与 WIFI 模型距离相关的概率;
  • 与上述任何改进路径距离相关的概率;
  • 与前一时间段距离相关的概率(与理论路径中使用的预测距离相比)
  • 与前一时间段角度相关的概率(与磁场信息相比)
  • 如果前一时间步的路径已经存在于训练集中,则进行惩罚
  • 与第一步和最后一步的时间泄漏相关的概率

将时间步 i-1 的所有航路点的概率乘以上述概率矩阵(大小为 n*n,其中 n 是训练航路点的数量),就得到了时间步 i 的新的概率数组。
我向前、向后(给出一个新的起点)、再次向前和再次向后执行此步骤。
我的最终位置是所有航路点的加权平均值(我取最后 2 步的平均值)。

这个最终解决方案被用作下一次迭代的输入,通过将获得的位置反馈给 WIFI 模型。
我还通过假设我的测试数据 XY 预测是准确的,用测试数据补充了训练数据。

这是我第一次单人参加比赛,我想这减少了一部分乐趣……但我需要我的单人金牌,并认为这是合适的时机!

同比赛其他方案