{
  "id": 340598,
  "title": "39th Place Solution",
  "url": "/competitions/smartphone-decimeter-2022/discussion/340598",
  "author_name": "Ravi Shah",
  "post_date": "2022-07-30T01:21:09.608000",
  "votes": 14,
  "comment_count": 3,
  "views": 0,
  "content": "<p>I am very excited that this competition makes me a Kaggle Competitions Expert!<br>\nI would like to thank the hosts for holding this super fun competition.<br>\nHere is a summary of my solution:</p>\n<h1>RTKLIB Baseline</h1>\n<h3>Config</h3>\n<p>I did not make many changes to the configuration, but I did lower the elmask as it seemed to improve cross validation</p>\n<h3>Base Stations</h3>\n<p>I used the values from this <a href=\"https://www.kaggle.com/code/timeverett/getting-started-with-rtklib\" target=\"_blank\">notebook</a> - they should account for tectonic plate movement</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6537187%2Ff94dda00fdd6513006338031a8ac1965%2Fbase_stations_img.png?generation=1659210125676728&amp;alt=media\" alt=\"\"></p>\n<h1>Postprocessing</h1>\n<h3>Outlier Correction</h3>\n<p>I tried several outlier correction methods. I calculated the change in lat and lon between timesteps. If the car seemed to jump, it is flagged as an outlier. I then interpolated the outliers.</p>\n<h3>Position Shift</h3>\n<p>A lot of my improvement came from position shift style techniques. I created and used several variations of this algorithm. I got the idea from this <a href=\"https://www.kaggle.com/code/wrrosa/gsdc-position-shift\" target=\"_blank\">notebook</a> from last year's comp. The math below should give you a general idea of how it works. Alpha is hyperparameter tuned using the groundtruths.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6537187%2F73d75d7da0afb3cc1b88e7d0cad28875%2Fposition_shift_img.png?generation=1659203394492723&amp;alt=media\" alt=\"\"></p>\n<h3>Stop Mean</h3>\n<p>I tried a lot of different ideas to account for the car stopping; however, it did not give me much improvement. I spent a lot of time trying to get a lgbm to predict the velocity then adjust for stopping. However, I could not get this to work well. I ended up just using a public algorithm I found, but it did not improve cross validation much.</p>\n<h3>Other</h3>\n<p>I tried a lot of techniques I saw from top solutions in last year's comp and tried many of my own ideas. I won't go into too much detail here, and I may use these if they decide to host this comp next year. I tried to correct errors in points when the car turned and stuff like that.</p>\n<h1>Hyperparameter Tuning</h1>\n<p>For the entire process, I compared my results to the ground truths. I excluded several paths form the ground truths especially paths with errors <a href=\"https://www.kaggle.com/competitions/smartphone-decimeter-2022/discussion/337416\" target=\"_blank\">see discussion</a>.</p>\n<p>I created a Pipeline class and all my postprocessing follows the same format. As a result, it made it easy to use Bayesian Optimization to hyperparameter tune everything</p>",
  "messages": [
    {
      "id": 1876652,
      "postDate": "2022-07-30T01:21:09.607Z",
      "content": "<p>I am very excited that this competition makes me a Kaggle Competitions Expert!<br>\nI would like to thank the hosts for holding this super fun competition.<br>\nHere is a summary of my solution:</p>\n<h1>RTKLIB Baseline</h1>\n<h3>Config</h3>\n<p>I did not make many changes to the configuration, but I did lower the elmask as it seemed to improve cross validation</p>\n<h3>Base Stations</h3>\n<p>I used the values from this <a href=\"https://www.kaggle.com/code/timeverett/getting-started-with-rtklib\" target=\"_blank\">notebook</a> - they should account for tectonic plate movement</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6537187%2Ff94dda00fdd6513006338031a8ac1965%2Fbase_stations_img.png?generation=1659210125676728&amp;alt=media\" alt=\"\"></p>\n<h1>Postprocessing</h1>\n<h3>Outlier Correction</h3>\n<p>I tried several outlier correction methods. I calculated the change in lat and lon between timesteps. If the car seemed to jump, it is flagged as an outlier. I then interpolated the outliers.</p>\n<h3>Position Shift</h3>\n<p>A lot of my improvement came from position shift style techniques. I created and used several variations of this algorithm. I got the idea from this <a href=\"https://www.kaggle.com/code/wrrosa/gsdc-position-shift\" target=\"_blank\">notebook</a> from last year's comp. The math below should give you a general idea of how it works. Alpha is hyperparameter tuned using the groundtruths.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6537187%2F73d75d7da0afb3cc1b88e7d0cad28875%2Fposition_shift_img.png?generation=1659203394492723&amp;alt=media\" alt=\"\"></p>\n<h3>Stop Mean</h3>\n<p>I tried a lot of different ideas to account for the car stopping; however, it did not give me much improvement. I spent a lot of time trying to get a lgbm to predict the velocity then adjust for stopping. However, I could not get this to work well. I ended up just using a public algorithm I found, but it did not improve cross validation much.</p>\n<h3>Other</h3>\n<p>I tried a lot of techniques I saw from top solutions in last year's comp and tried many of my own ideas. I won't go into too much detail here, and I may use these if they decide to host this comp next year. I tried to correct errors in points when the car turned and stuff like that.</p>\n<h1>Hyperparameter Tuning</h1>\n<p>For the entire process, I compared my results to the ground truths. I excluded several paths form the ground truths especially paths with errors <a href=\"https://www.kaggle.com/competitions/smartphone-decimeter-2022/discussion/337416\" target=\"_blank\">see discussion</a>.</p>\n<p>I created a Pipeline class and all my postprocessing follows the same format. As a result, it made it easy to use Bayesian Optimization to hyperparameter tune everything</p>",
      "rawMarkdown": "I am very excited that this competition makes me a Kaggle Competitions Expert!\nI would like to thank the hosts for holding this super fun competition.\nHere is a summary of my solution:\n\n# RTKLIB Baseline\n\n### Config\nI did not make many changes to the configuration, but I did lower the elmask as it seemed to improve cross validation\n\n### Base Stations\nI used the values from this [notebook](https://www.kaggle.com/code/timeverett/getting-started-with-rtklib) - they should account for tectonic plate movement\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6537187%2Ff94dda00fdd6513006338031a8ac1965%2Fbase_stations_img.png?generation=1659210125676728&alt=media)\n\n# Postprocessing\n\n### Outlier Correction\nI tried several outlier correction methods. I calculated the change in lat and lon between timesteps. If the car seemed to jump, it is flagged as an outlier. I then interpolated the outliers.\n\n### Position Shift\nA lot of my improvement came from position shift style techniques. I created and used several variations of this algorithm. I got the idea from this [notebook](https://www.kaggle.com/code/wrrosa/gsdc-position-shift) from last year's comp. The math below should give you a general idea of how it works. Alpha is hyperparameter tuned using the groundtruths.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6537187%2F73d75d7da0afb3cc1b88e7d0cad28875%2Fposition_shift_img.png?generation=1659203394492723&alt=media)\n\n### Stop Mean\nI tried a lot of different ideas to account for the car stopping; however, it did not give me much improvement. I spent a lot of time trying to get a lgbm to predict the velocity then adjust for stopping. However, I could not get this to work well. I ended up just using a public algorithm I found, but it did not improve cross validation much.\n\n### Other\nI tried a lot of techniques I saw from top solutions in last year's comp and tried many of my own ideas. I won't go into too much detail here, and I may use these if they decide to host this comp next year. I tried to correct errors in points when the car turned and stuff like that.\n\n# Hyperparameter Tuning\nFor the entire process, I compared my results to the ground truths. I excluded several paths form the ground truths especially paths with errors [see discussion](https://www.kaggle.com/competitions/smartphone-decimeter-2022/discussion/337416).\n\nI created a Pipeline class and all my postprocessing follows the same format. As a result, it made it easy to use Bayesian Optimization to hyperparameter tune everything",
      "votes": 13
    },
    {
      "id": 1877849,
      "postDate": "2022-07-31T03:36:18.110Z",
      "content": "<p>Congratulations on your success in the competition!</p>",
      "rawMarkdown": "Congratulations on your success in the competition!\n\n",
      "votes": 1
    },
    {
      "id": 1879536,
      "postDate": "2022-08-01T05:48:12.163Z",
      "content": "<p>This is very well explained, and congrats!</p>",
      "rawMarkdown": "This is very well explained, and congrats!",
      "votes": 2
    },
    {
      "id": 1876856,
      "postDate": "2022-07-30T05:58:31.973Z",
      "rawMarkdown": "",
      "votes": 1,
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 1877849,
      "author_name": "The Devastator",
      "author_url": "",
      "post_date": "2022-07-31T03:36:18.110000",
      "content": "<p>Congratulations on your success in the competition!</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1879536,
      "author_name": "Will",
      "author_url": "",
      "post_date": "2022-08-01T05:48:12.163000",
      "content": "<p>This is very well explained, and congrats!</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 1876856,
      "author_name": "",
      "author_url": "",
      "post_date": "2022-07-30T05:58:31.973000",
      "content": "",
      "votes": 1,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1876652": "I am very excited that this competition makes me a Kaggle Competitions Expert!\nI would like to thank the hosts for holding this super fun competition.\nHere is a summary of my solution:\n\n# RTKLIB Baseline\n\n### Config\nI did not make many changes to the configuration, but I did lower the elmask as it seemed to improve cross validation\n\n### Base Stations\nI used the values from this [notebook](https://www.kaggle.com/code/timeverett/getting-started-with-rtklib) - they should account for tectonic plate movement\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6537187%2Ff94dda00fdd6513006338031a8ac1965%2Fbase_stations_img.png?generation=1659210125676728&alt=media)\n\n# Postprocessing\n\n### Outlier Correction\nI tried several outlier correction methods. I calculated the change in lat and lon between timesteps. If the car seemed to jump, it is flagged as an outlier. I then interpolated the outliers.\n\n### Position Shift\nA lot of my improvement came from position shift style techniques. I created and used several variations of this algorithm. I got the idea from this [notebook](https://www.kaggle.com/code/wrrosa/gsdc-position-shift) from last year's comp. The math below should give you a general idea of how it works. Alpha is hyperparameter tuned using the groundtruths.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6537187%2F73d75d7da0afb3cc1b88e7d0cad28875%2Fposition_shift_img.png?generation=1659203394492723&alt=media)\n\n### Stop Mean\nI tried a lot of different ideas to account for the car stopping; however, it did not give me much improvement. I spent a lot of time trying to get a lgbm to predict the velocity then adjust for stopping. However, I could not get this to work well. I ended up just using a public algorithm I found, but it did not improve cross validation much.\n\n### Other\nI tried a lot of techniques I saw from top solutions in last year's comp and tried many of my own ideas. I won't go into too much detail here, and I may use these if they decide to host this comp next year. I tried to correct errors in points when the car turned and stuff like that.\n\n# Hyperparameter Tuning\nFor the entire process, I compared my results to the ground truths. I excluded several paths form the ground truths especially paths with errors [see discussion](https://www.kaggle.com/competitions/smartphone-decimeter-2022/discussion/337416).\n\nI created a Pipeline class and all my postprocessing follows the same format. As a result, it made it easy to use Bayesian Optimization to hyperparameter tune everything",
    "1877849": "Congratulations on your success in the competition!\n\n",
    "1879536": "This is very well explained, and congrats!",
    "1876856": ""
  }
}