435. Indoor Location & Navigation | indoor-location-navigation
我们很高兴分享我们的获胜方案。在不依赖晦涩的数据泄露的情况下,以如此大的优势赢得 Kaggle 比赛是非常罕见的。我们的最终方案受到了论坛上大量分享内容的启发(特别是吸附到网格和成本最小化是关键的见解)。我们将公开的想法与独特的建模和优化见解结合在一起。这次挑战的数据集非常丰富,许多顶尖团队直到最后一天都取得了令人印象深刻的进展,这使其成为迄今为止我最喜欢的比赛。
我们还要对 @mamasinkgs 团队表示钦佩。你们在整个挑战过程中的进步令人印象深刻,你们在论坛上的慷慨分享激励了我们许多人坚持下去。你们的预言(“老实说,我担心得分 6.2 的 Tom & dott 团队现在隐藏了分数,并在最后一天展示 0.x 的分数。”)在当时听起来像是一个遥不可及的梦想,但在我们把所有拼图拼凑在一起后,我们自己也开始相信它,我们很自豪我们真的没有辜负你们的期望。
像所有顶尖团队一样,我们意识到这本质上是一个优化问题,需要在轨迹层面结合相关数据模态(主要是 WiFi + 传感器数据)以获得最佳分数。关键的挑战是如何将相关数据模态的预测与预测问题的离散性结合起来(约 85% 的测试预测发生在训练中见过的 X-Y 位置)。
大多数顶尖团队采取的路线是通过吸附到网格将连续优化与离散化迭代交错进行。我们则采取了完全离散优化的路线,我们只考虑训练航点,以及为每个预测程序化生成的可能额外航点(见“航点生成”)。离散化优化使我们能够实施定制的束搜索过程,该过程结合了所有相关预测的惩罚,并允许我们在轨迹层面有效地找到最佳匹配。
我们保留了一个固定的留出集(而不是交叉验证),这是通过从较长的训练轨迹中随机选择实现的。我们的验证分数与私有排行榜分数非常相关。
在下文中,我们打算重点介绍论坛上以前未分享过的见解。
我们考虑了 3 种使用 WiFi 数据的建模方法:神经网络、LightGBM 和 K-近邻。但最终流程中只使用了 LightGBM 和 K-近邻,因为它们的准确率最高。对于这两种模型,我们都假设楼层是已知的。
LightGBM 模型预测 WiFi 观测时刻的 X 和 Y 坐标。共有 100 多个模型,每个站点 * 楼层一个。通过取每次观测在 +- 8s 窗口内的最大信号强度,观察到性能的显著提升。此外还使用了磁力和蓝牙数据,但没有带来显著提升,距离误差为 7.25。
对于 kNN 模型,我们需要做的就是找到两个 WiFi 观测之间的适当距离函数,并在推理时将 WiFi 观测与训练期间看到的所有 WiFi 观测进行比较。我们确定了一个距离函数,该函数结合了共享设备的平均 rssid 强度差异与共享设备的比例。对于延迟的设备观测(WiFi t1 和 t2 之间的时间差)给予较小的权重。点加权 kNN 预测使我们的距离误差达到了 5.8。
kNN 优于 LightGBM 的主要好处是它允许高度非线性的惩罚函数,该函数可以在不冒过拟合风险的情况下结合更多关于楼层布局的信息(我们在距离函数中只有少量参数,这些参数在所有站点和楼层之间共享)。
在这场比赛中,传感器数据显然是重建轨迹的关键信息。在使用传感器数据时,我们专注于预测片段——从一个航点到下一个航点的轨迹片段。我们最终使用了 3 个不同目标的传感器数据模型。
第一个传感器模型旨在预测片段的相对移动,即两个连续航点之间绝对坐标的变化。该模型使用 9 个输入(所有 3 个轴的 acce、gyro 和 ahrs),结构相对简单:Conv1d + GRU + Conv1d + head。GRU 的存在是不必要的,如果将 GRU 替换为 Conv1d,设置更宽的内核大小并添加空洞,可以获得类似的结果。该模型在验证集上的 MAE = 1.04(在 X 和 Y 维度上平均)。
在分析模型的误差后,我们发现预测的移动方向角度远非完美,尽管偏差从未超过 pi/2 弧度。这可能表明设备未正确校准。