第8名解决方案
第8名解决方案
作者: Michał Stolarczyk
比赛排名: 第8名
复现基线
作为我的初始预测,我使用了与此讨论中描述的方法类似的方法,但增加了一个技巧。我多次拟合加权最小二乘法(WLS),每次都移除残差最大的测量值。我复现的基线在交叉验证(CV)得分上略优于主办方提供的基线。
利用相对位置改进基线
这一部分包含三个步骤:
- 我利用累积德尔塔范围、伪距、卫星位置和复现的基线,计算了连续时间戳之间在东北天(ENU)坐标系中的速度。之后,我移除了异常值并对预测结果进行了平滑处理。
- 然后,我使用上一步得到的速度、IMU数据和基线训练了一个卷积神经网络,该网络同样预测ENU坐标系中的速度。模型的平均绝对误差约为0.25m/s。
- 最后一步,我应用加权最小二乘法将相对预测与派生文件中的数据相结合。对于每个时间戳,它解决了以下优化问题:
$$ argmin_{x, b_{-k}, ..., b_k} \sum_{i=-k}^k \sum_{j=1}^{n_i} w_{ij} (|| s_{ij} - \Delta x_i - x|| + b_i -p_{ij})^2 $$
其中:
- \( k \) - 控制窗口大小的参数。
- \( x \) - 时间戳 \( t \) 处的手机位置
- \( b_i \) - 时间戳 \( t + i \) 处的手机钟差
- \( n_i \) - 时间戳 \( t + i \) 处的伪距测量数量
- \( w_{ij} \) - 第 \( j \) 个伪距测量不确定度的倒数乘以 \( 1 + 0.25|i| \)
- \( s_{ij} \) - 时间戳 \( t + i \) 处第 \( j \) 颗卫星的位置
- \( \Delta x_{i} \) - 模型对时间戳 \( t + i \) 和 \( t \) 之间相对位置的预测
- \( p_{ij} \) - 时间戳 \( t + i \) 处修正后的第 \( j \) 个伪距测量值
参数 \( k = 10 \) 对我来说效果最好,因此窗口大小为21。该模型有24个未知数——每个时间戳3个用于位置,1个用于钟差。它的参数数量是单时间戳WLS的6倍,但测量值数量是其21倍。缺点是,相对位置中的任何误差都会影响该解决方案的性能。
改进市区的基线
由于测试数据中市区的所有路段也存在于真值数据中,我对每个时间戳应用了以下算法:
- 选择真值文件中距离基线预测小于30米的所有点——我们称它们为候选点
- 对于每个候选点 \( x_j \) 估计钟差:\( b_j = \mathrm{median}_i ( || s_i - x_j || - p_i ) \)
- 找到具有以下最低值的 \( k \) 个点:
$$ \sum_{i=1}^{n} w_i | || s_i - x_j || - b_i - p_i | $$
并返回它们的中心点。
使用中位数而不是平均值来计算钟差,以及使用残差的绝对值而不是平方值非常重要,因为这有助于处理市区中非常嘈杂的测量值。
后处理
之后,我应用了以下步骤来改进预测:
- 误差修正模型——它预测当前预测与真值之间的差异。这是一个简单的一维卷积神经网络。该模型的特征基于当前预测和IMU。
- 当速度为零时聚合预测。
- 聚合来自不同手机的预测。