返回列表

18th place solution (Moro & taksai)

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

开始: 2021-01-28 结束: 2021-05-17 共享出行与停车 数据算法赛
第18名解决方案 (Moro & taksai)

第18名解决方案 (Moro & taksai)

作者: Moro (@moromoromoro) & taksai (@tsaito21219)
比赛: Indoor Location Navigation

感谢主办方举办这场有趣的比赛,也感谢所有参与者。感谢我的队友 (taksai @tsaito21219)。在这里分享我们团队的解决方案。

摘要

  • 仅使用 wifi 数据训练 xy 坐标预测模型
  • 使用传感器数据训练增量模型 用于成本最小化
  • 反复进行后处理 20 次

1. 预处理

我们为后文描述的两个模型制作了 4 个数据集。

数据集 描述
(a) bssid-ranking 按 rssi 降序排列的 bssid 列表。(建筑物间通用)
(b) bssid-rssi-matrix 以 bssid 为列,rssi 为数据(每个建筑物)。缺失值填充为 -120。丢弃距离最后可见时间戳超过 10000ms 的 rssi 值。
(c) sensor-data(aggregate) wifi 之间的聚合数据。(1 个目标对应 1 条记录)
(d) sensor-data(sampling) 每 100ms 对 wifi 之间的原始数据进行采样(1 个目标对应 N 条记录)。填充至固定长度。

2. 模型

我们制作了两种类型的模型。第一种是预测航点位置的 xy 模型,第二种是预测两个航点之间距离的增量模型。

(1) xy 模型

  • GBDT (lightgbm) 配合数据集:每个站点
  • MLP (keras) 配合数据集:1 个模型
  • MLP (keras) 配合数据集:每个站点 -> LB=6.5 (MLP 无后处理)

(2) 增量模型

  • 该模型用于成本最小化(后处理)。由于使用 github 函数计算的增量存在一点误差,通过构建预测模型来减少误差。
    • 误差(均方误差均值):13.1(使用 github) -> 4.48(我们的模型)
    • MAE(x 和 y 的平均绝对误差):1.69(使用 github) -> 1.08(我们的模型)
  • MLP (keras) 配合数据集:Dense(128) > Dense(256) > Dense(128) > Dense(64) > Dense(2)
  • 1d-cnn (keras) 配合数据集:Conv1D(filters=32,kernel_size=5,padding=2) > Conv1D(64,5,2) > Conv1D(128,3,2) > Conv1D(256,3,2) > Conv1D(512,2,2) > GlobalMaxPool1D > Dense(64) > Dense(2)

3. 后处理

我们基于一些有用的公共内核定制了后处理流程。

  • 第一步:(LB=6.5 -> 3.0)
    1) 集成:对多个 xy 模型的预测值进行加权平均。增量模型同理。
    2) 调整 xy:考虑设备 ID 的泄漏问题。
    3) 成本最小化:使用增量模型计算的增量代替 github 函数。
    4) 吸附网格。
    5) 重复步骤 2)-4) 20 次,同时调整吸附网格的阈值。一点一点地移动到网格。阈值:2 (1-5 次) > 3 (6-10 次) > 4 (11-20 次)。
    6) 再次执行步骤 2)。
  • 第二步:(LB=3.0 -> 2.75)
    1) 获取第一步关于某些模式(集成权重等)的输出。
    2) 使用 1) 再次执行第一步。

无效尝试

  • 使用其他
同比赛其他方案