{
  "id": 239880,
  "title": "2nd place solution(my part of it)",
  "url": "/competitions/indoor-location-navigation/discussion/239880",
  "author_name": "",
  "post_date": "2021-05-18T00:21:34.259393800Z",
  "votes": 37,
  "comment_count": 6,
  "views": 0,
  "content": "<p>The code is in kernel <em><a href=\"https://www.kaggle.com/ymatioun/indoor-navigation-fingerprinting-ym\" target=\"_blank\">https://www.kaggle.com/ymatioun/indoor-navigation-fingerprinting-ym</a></em> which I just made public, and below is a brief description of the approach. Team submission used a different (and a lot more advanced) post-processing, which will be described by team leader, mamas.</p>\n<p><strong>1. Relative position prediction</strong>: pedestrian dead reckoning, based on data from ROTATION_VECTOR and ACCELEROMETER sensors: similar to what competition organizers did (counting steps to get distance), but with more parameters that were tuned to all the training data, including some parameters that varied by site. That approach produced predictions that tracked train paths significantly better than organizers' model.</p>\n<p><strong>2. Absolute prediction based on fingerprinting of Wi-Fi signals</strong>: for each test Wi-Fi point, find training Wi-Fi points that match closely by BSSIDs and signal strength, select top matches and take x/y/floor of those training points, weighted by closeness of match. I did this not just for single points, but for sets of point (path segments) up to almost 100 in length, by including previous and next points on the path in the weighted average, with x/y shifted by relative prediction distance. This approach is similar to \"cost minimization\" algorithm that combines predictions for individual points with relative position predictions.</p>\n<p><strong>3. Post-processing: based on \"snap-to-grid\" algorithm</strong>: snap all points on the path to grid of train waypoints if they are within 5 meters of the nearest grid point; shift whole initial path prediction by average change in x/y coordinates due to this \"snapping\", repeat until results stop changing. This repetition positions path closer to its true location, making snap-to-grid more efficient. As a second part of post-processing, predict position of each point based of previous or next point and relative position prediction, and snap it to different grid point if it is close enough; repeat until the process converges. This fixes some situations where adjacent points got snapped to the same grid point.</p>",
  "messages": [
    {
      "id": "1312260",
      "postDate": "05/18/2021 00:21:34",
      "content": "<p>The code is in kernel <em><a href=\"https://www.kaggle.com/ymatioun/indoor-navigation-fingerprinting-ym\" target=\"_blank\">https://www.kaggle.com/ymatioun/indoor-navigation-fingerprinting-ym</a></em> which I just made public, and below is a brief description of the approach. Team submission used a different (and a lot more advanced) post-processing, which will be described by team leader, mamas.</p>\n<p><strong>1. Relative position prediction</strong>: pedestrian dead reckoning, based on data from ROTATION_VECTOR and ACCELEROMETER sensors: similar to what competition organizers did (counting steps to get distance), but with more parameters that were tuned to all the training data, including some parameters that varied by site. That approach produced predictions that tracked train paths significantly better than organizers' model.</p>\n<p><strong>2. Absolute prediction based on fingerprinting of Wi-Fi signals</strong>: for each test Wi-Fi point, find training Wi-Fi points that match closely by BSSIDs and signal strength, select top matches and take x/y/floor of those training points, weighted by closeness of match. I did this not just for single points, but for sets of point (path segments) up to almost 100 in length, by including previous and next points on the path in the weighted average, with x/y shifted by relative prediction distance. This approach is similar to \"cost minimization\" algorithm that combines predictions for individual points with relative position predictions.</p>\n<p><strong>3. Post-processing: based on \"snap-to-grid\" algorithm</strong>: snap all points on the path to grid of train waypoints if they are within 5 meters of the nearest grid point; shift whole initial path prediction by average change in x/y coordinates due to this \"snapping\", repeat until results stop changing. This repetition positions path closer to its true location, making snap-to-grid more efficient. As a second part of post-processing, predict position of each point based of previous or next point and relative position prediction, and snap it to different grid point if it is close enough; repeat until the process converges. This fixes some situations where adjacent points got snapped to the same grid point.</p>",
      "rawMarkdown": "The code is in kernel *https://www.kaggle.com/ymatioun/indoor-navigation-fingerprinting-ym* which I just made public, and below is a brief description of the approach. Team submission used a different (and a lot more advanced) post-processing, which will be described by team leader, mamas.\n\n\n**1. Relative position prediction**: pedestrian dead reckoning, based on data from ROTATION_VECTOR and ACCELEROMETER sensors: similar to what competition organizers did (counting steps to get distance), but with more parameters that were tuned to all the training data, including some parameters that varied by site. That approach produced predictions that tracked train paths significantly better than organizers' model.\n\n**2. Absolute prediction based on fingerprinting of Wi-Fi signals**: for each test Wi-Fi point, find training Wi-Fi points that match closely by BSSIDs and signal strength, select top matches and take x/y/floor of those training points, weighted by closeness of match. I did this not just for single points, but for sets of point (path segments) up to almost 100 in length, by including previous and next points on the path in the weighted average, with x/y shifted by relative prediction distance. This approach is similar to \"cost minimization\" algorithm that combines predictions for individual points with relative position predictions.\n\n**3. Post-processing: based on \"snap-to-grid\" algorithm**: snap all points on the path to grid of train waypoints if they are within 5 meters of the nearest grid point; shift whole initial path prediction by average change in x/y coordinates due to this \"snapping\", repeat until results stop changing. This repetition positions path closer to its true location, making snap-to-grid more efficient. As a second part of post-processing, predict position of each point based of previous or next point and relative position prediction, and snap it to different grid point if it is close enough; repeat until the process converges. This fixes some situations where adjacent points got snapped to the same grid point.",
      "votes": null
    },
    {
      "id": "1312267",
      "postDate": "05/18/2021 00:27:32",
      "content": "<p>thank you <a href=\"https://www.kaggle.com/ymatioun\" target=\"_blank\">@ymatioun</a> ,  congrats for the amazing 2nd place. Can you share the score of your model without any postprocessing (or basic) ?</p>",
      "rawMarkdown": "thank you @ymatioun ,  congrats for the amazing 2nd place. Can you share the score of your model without any postprocessing (or basic) ?",
      "votes": null
    },
    {
      "id": "1312365",
      "postDate": "05/18/2021 02:33:35",
      "content": "<p>Congrats <a href=\"https://www.kaggle.com/ymatioun\" target=\"_blank\">@ymatioun</a> for becoming Competition Master 👍</p>",
      "rawMarkdown": "Congrats @ymatioun for becoming Competition Master 👍",
      "votes": null
    },
    {
      "id": "1313068",
      "postDate": "05/18/2021 11:49:35",
      "content": "<p>Congratulations :)</p>",
      "rawMarkdown": "Congratulations :)",
      "votes": null
    },
    {
      "id": "1314008",
      "postDate": "05/18/2021 21:44:15",
      "content": "<p>Thanks! Before post-processing score was around 3.7</p>",
      "rawMarkdown": "Thanks! Before post-processing score was around 3.7",
      "votes": null
    },
    {
      "id": "1314900",
      "postDate": "05/19/2021 12:44:10",
      "content": "<p>Thanks youri, it was really a great success to team up with you, and congrats kaggle master! </p>",
      "rawMarkdown": "Thanks youri, it was really a great success to team up with you, and congrats kaggle master!",
      "votes": null
    },
    {
      "id": "1335289",
      "postDate": "06/04/2021 06:12:37",
      "content": "<p>Thank You <a href=\"https://www.kaggle.com/ymatioun\" target=\"_blank\">@ymatioun</a> .I just have few questions regarding the post -<br>\nDoes pedestrian dead reckoning uses only accelerometer and rotation gyroscope ?<br>\nYou have also mentioned the technique used by organizers , i did not get that .</p>",
      "rawMarkdown": "Thank You @ymatioun .I just have few questions regarding the post -\nDoes pedestrian dead reckoning uses only accelerometer and rotation gyroscope ?\nYou have also mentioned the technique used by organizers , i did not get that .",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1312267,
      "author_name": "jesucristo",
      "author_url": "",
      "post_date": "05/18/2021 00:27:32",
      "content": "<p>thank you <a href=\"https://www.kaggle.com/ymatioun\" target=\"_blank\">@ymatioun</a> ,  congrats for the amazing 2nd place. Can you share the score of your model without any postprocessing (or basic) ?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1312365,
      "author_name": "vaghefi",
      "author_url": "",
      "post_date": "05/18/2021 02:33:35",
      "content": "<p>Congrats <a href=\"https://www.kaggle.com/ymatioun\" target=\"_blank\">@ymatioun</a> for becoming Competition Master 👍</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1313068,
      "author_name": "aditimaurya",
      "author_url": "",
      "post_date": "05/18/2021 11:49:35",
      "content": "<p>Congratulations :)</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1314008,
      "author_name": "ymatioun",
      "author_url": "",
      "post_date": "05/18/2021 21:44:15",
      "content": "<p>Thanks! Before post-processing score was around 3.7</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1314900,
      "author_name": "mamasinkgs",
      "author_url": "",
      "post_date": "05/19/2021 12:44:10",
      "content": "<p>Thanks youri, it was really a great success to team up with you, and congrats kaggle master! </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1335289,
      "author_name": "devanshchowdhury",
      "author_url": "",
      "post_date": "06/04/2021 06:12:37",
      "content": "<p>Thank You <a href=\"https://www.kaggle.com/ymatioun\" target=\"_blank\">@ymatioun</a> .I just have few questions regarding the post -<br>\nDoes pedestrian dead reckoning uses only accelerometer and rotation gyroscope ?<br>\nYou have also mentioned the technique used by organizers , i did not get that .</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1312260": "The code is in kernel *https://www.kaggle.com/ymatioun/indoor-navigation-fingerprinting-ym* which I just made public, and below is a brief description of the approach. Team submission used a different (and a lot more advanced) post-processing, which will be described by team leader, mamas.\n\n\n**1. Relative position prediction**: pedestrian dead reckoning, based on data from ROTATION_VECTOR and ACCELEROMETER sensors: similar to what competition organizers did (counting steps to get distance), but with more parameters that were tuned to all the training data, including some parameters that varied by site. That approach produced predictions that tracked train paths significantly better than organizers' model.\n\n**2. Absolute prediction based on fingerprinting of Wi-Fi signals**: for each test Wi-Fi point, find training Wi-Fi points that match closely by BSSIDs and signal strength, select top matches and take x/y/floor of those training points, weighted by closeness of match. I did this not just for single points, but for sets of point (path segments) up to almost 100 in length, by including previous and next points on the path in the weighted average, with x/y shifted by relative prediction distance. This approach is similar to \"cost minimization\" algorithm that combines predictions for individual points with relative position predictions.\n\n**3. Post-processing: based on \"snap-to-grid\" algorithm**: snap all points on the path to grid of train waypoints if they are within 5 meters of the nearest grid point; shift whole initial path prediction by average change in x/y coordinates due to this \"snapping\", repeat until results stop changing. This repetition positions path closer to its true location, making snap-to-grid more efficient. As a second part of post-processing, predict position of each point based of previous or next point and relative position prediction, and snap it to different grid point if it is close enough; repeat until the process converges. This fixes some situations where adjacent points got snapped to the same grid point.",
    "1312267": "thank you @ymatioun ,  congrats for the amazing 2nd place. Can you share the score of your model without any postprocessing (or basic) ?",
    "1312365": "Congrats @ymatioun for becoming Competition Master 👍",
    "1313068": "Congratulations :)",
    "1314008": "Thanks! Before post-processing score was around 3.7",
    "1314900": "Thanks youri, it was really a great success to team up with you, and congrats kaggle master!",
    "1335289": "Thank You @ymatioun .I just have few questions regarding the post -\nDoes pedestrian dead reckoning uses only accelerometer and rotation gyroscope ?\nYou have also mentioned the technique used by organizers , i did not get that ."
  },
  "source": "meta"
}