{
  "id": 240010,
  "title": "[22nd] place solution: Only Wifi Models + Public Post Processing + Pseudo labels ",
  "url": "/competitions/indoor-location-navigation/writeups/22nd-place-solution-only-wifi-models-public-post-p",
  "author_name": "",
  "post_date": "2021-05-18T12:51:32.940Z",
  "votes": 23,
  "comment_count": 3,
  "views": 0,
  "content": "<p>I would like to thank kaggle for hosting such an interesting competition and my amazing teammates <a href=\"https://www.kaggle.com/shivamcyborg\" target=\"_blank\">@shivamcyborg</a> <a href=\"https://www.kaggle.com/dehokanta\" target=\"_blank\">@dehokanta</a> <a href=\"https://www.kaggle.com/shivammittal274\" target=\"_blank\">@shivammittal274</a> <a href=\"https://www.kaggle.com/nooblife\" target=\"_blank\">@nooblife</a> .Also,  Congratulations to Tom &amp; dott's team for another win and <a href=\"https://www.kaggle.com/mamasinkgs\" target=\"_blank\">@mamasinkgs</a> team for dominating the competition in most half of the competition. <br>\nI would like to share our approach which did quite well for us and led us to secure a decent position on leaderboard.<br>\nFirstly, all our models were trained on just wifi features BSSID &amp; RSSI with diverse approaches. We couldn't find any better way to include more features into our model, most of them performed poorly on both validation score &amp; leaderboard, hence we decided to stick completely with Wifi data.</p>\n<h4>Models:</h4>\n<p>1.Fastai/ RNN : This was our best model with highest weightage in ensemble, baseline was built by <a href=\"https://www.kaggle.com/nooblife\" target=\"_blank\">@nooblife</a>, I was really amazed by its performance. One of the reason it performed better was generating the wifi data within the last 5 seconds for each position and sending them sequentially to our model. With some more parameters tuning and slightly different architecture, we managed to reach 5.26 with single model without any post processing.</p>\n<ol>\n<li><p>Site Wise RNN training: We also trained similar lstm model site wise, although its result were not as good as lstm on complete data, but it did good boost in ensemble because of low correlation. </p></li>\n<li><p>MLP: It also did quite well in our final ensemble of models, giving slight boost when merged with lstm models.</p></li>\n</ol>\n<p>Our models ensemble without any post processing scored <strong>4.8-4.9</strong> on public leaderboard.</p>\n<h4>Post Processing</h4>\n<p>Our final solution is solely based on public post processing with some additional tweaks and tricks. Although, we come up with brilliant way to boost local as well leaderboard score by 0.2-0.3 through post processing but with the help of hand labelled waypoints.  The idea behind it was doing post processing in loops with different thresholds for snap to grid, we might have reach a lot better position than current if hand labelled grids were allowed, I hope no team is using it in current standings.<br>\nOur models score with post processing and optimised cost minimisation : <strong>3.57</strong></p>\n<h4>Pseudo Labels</h4>\n<p>The idea behind it was simple, as some of the waypoints were being changed by a good margin after post processing, we planned to retrain some of our models along with train+test data to get better predictions for some paths.<br>\nThis led to our final score reach: <strong>3.43</strong> after adding pseudo label models in ensemble and making us jump to 22nd position on private leaderboard.</p>\n<p>Baseline version of rnn: <a href=\"https://www.kaggle.com/nooblife/indoor-location-rnn-v2\" target=\"_blank\">https://www.kaggle.com/nooblife/indoor-location-rnn-v2</a><br>\nPreparing data: <a href=\"https://www.kaggle.com/nooblife/indoor-location-rnn-data-v2\" target=\"_blank\">https://www.kaggle.com/nooblife/indoor-location-rnn-data-v2</a></p>\n<h3>Things that didn't worked:</h3>\n<ul>\n<li>Transfer learning by using other buildings than test data.</li>\n<li>Imu+wifi features models</li>\n<li>lgbm</li>\n<li>post processing based on shapely</li>\n</ul>\n<h3>Things we couldn't finish:</h3>\n<ul>\n<li>Automated grid points</li>\n<li>Efficiently use other data with wifi features</li>\n<li>Using time features efficiently </li>\n<li>in depth EDA of predictions</li>\n</ul>\n<h4>References</h4>\n<p><a href=\"https://www.kaggle.com/kokitanisaka/lstm-by-keras-with-unified-wi-fi-feats\" target=\"_blank\">https://www.kaggle.com/kokitanisaka/lstm-by-keras-with-unified-wi-fi-feats</a> by <a href=\"https://www.kaggle.com/kokitanisaka\" target=\"_blank\">@kokitanisaka</a><br>\n<a href=\"https://www.kaggle.com/saitodevel01/indoor-post-processing-by-cost-minimization\" target=\"_blank\">https://www.kaggle.com/saitodevel01/indoor-post-processing-by-cost-minimization</a> by <a href=\"https://www.kaggle.com/saitodevel01\" target=\"_blank\">@saitodevel01</a><br>\n<a href=\"https://www.kaggle.com/robikscube/indoor-navigation-snap-to-grid-post-processing\" target=\"_blank\">https://www.kaggle.com/robikscube/indoor-navigation-snap-to-grid-post-processing</a> by <a href=\"https://www.kaggle.com/robikscube\" target=\"_blank\">@robikscube</a><br>\n<a href=\"https://www.kaggle.com/tomooinubushi/postprocessing-based-on-leakage\" target=\"_blank\">https://www.kaggle.com/tomooinubushi/postprocessing-based-on-leakage</a> by <a href=\"https://www.kaggle.com/tomooinubushi\" target=\"_blank\">@tomooinubushi</a></p>\n<p>It was really nice competing in this competition, I wish I could have joined it earlier instead of last 2-3 weeks. I think we did pretty well without use of hand labels and small data. Thank you for reading our solution. </p>",
  "messages": [
    {
      "id": "1312884",
      "postDate": "05/18/2021 09:55:16",
      "content": "<p>I would like to thank kaggle for hosting such an interesting competition and my amazing teammates <a href=\"https://www.kaggle.com/shivamcyborg\" target=\"_blank\">@shivamcyborg</a> <a href=\"https://www.kaggle.com/dehokanta\" target=\"_blank\">@dehokanta</a> <a href=\"https://www.kaggle.com/shivammittal274\" target=\"_blank\">@shivammittal274</a> <a href=\"https://www.kaggle.com/nooblife\" target=\"_blank\">@nooblife</a> .Also,  Congratulations to Tom &amp; dott's team for another win and <a href=\"https://www.kaggle.com/mamasinkgs\" target=\"_blank\">@mamasinkgs</a> team for dominating the competition in most half of the competition. <br>\nI would like to share our approach which did quite well for us and led us to secure a decent position on leaderboard.<br>\nFirstly, all our models were trained on just wifi features BSSID &amp; RSSI with diverse approaches. We couldn't find any better way to include more features into our model, most of them performed poorly on both validation score &amp; leaderboard, hence we decided to stick completely with Wifi data.</p>\n<h4>Models:</h4>\n<p>1.Fastai/ RNN : This was our best model with highest weightage in ensemble, baseline was built by <a href=\"https://www.kaggle.com/nooblife\" target=\"_blank\">@nooblife</a>, I was really amazed by its performance. One of the reason it performed better was generating the wifi data within the last 5 seconds for each position and sending them sequentially to our model. With some more parameters tuning and slightly different architecture, we managed to reach 5.26 with single model without any post processing.</p>\n<ol>\n<li><p>Site Wise RNN training: We also trained similar lstm model site wise, although its result were not as good as lstm on complete data, but it did good boost in ensemble because of low correlation. </p></li>\n<li><p>MLP: It also did quite well in our final ensemble of models, giving slight boost when merged with lstm models.</p></li>\n</ol>\n<p>Our models ensemble without any post processing scored <strong>4.8-4.9</strong> on public leaderboard.</p>\n<h4>Post Processing</h4>\n<p>Our final solution is solely based on public post processing with some additional tweaks and tricks. Although, we come up with brilliant way to boost local as well leaderboard score by 0.2-0.3 through post processing but with the help of hand labelled waypoints.  The idea behind it was doing post processing in loops with different thresholds for snap to grid, we might have reach a lot better position than current if hand labelled grids were allowed, I hope no team is using it in current standings.<br>\nOur models score with post processing and optimised cost minimisation : <strong>3.57</strong></p>\n<h4>Pseudo Labels</h4>\n<p>The idea behind it was simple, as some of the waypoints were being changed by a good margin after post processing, we planned to retrain some of our models along with train+test data to get better predictions for some paths.<br>\nThis led to our final score reach: <strong>3.43</strong> after adding pseudo label models in ensemble and making us jump to 22nd position on private leaderboard.</p>\n<p>Baseline version of rnn: <a href=\"https://www.kaggle.com/nooblife/indoor-location-rnn-v2\" target=\"_blank\">https://www.kaggle.com/nooblife/indoor-location-rnn-v2</a><br>\nPreparing data: <a href=\"https://www.kaggle.com/nooblife/indoor-location-rnn-data-v2\" target=\"_blank\">https://www.kaggle.com/nooblife/indoor-location-rnn-data-v2</a></p>\n<h3>Things that didn't worked:</h3>\n<ul>\n<li>Transfer learning by using other buildings than test data.</li>\n<li>Imu+wifi features models</li>\n<li>lgbm</li>\n<li>post processing based on shapely</li>\n</ul>\n<h3>Things we couldn't finish:</h3>\n<ul>\n<li>Automated grid points</li>\n<li>Efficiently use other data with wifi features</li>\n<li>Using time features efficiently </li>\n<li>in depth EDA of predictions</li>\n</ul>\n<h4>References</h4>\n<p><a href=\"https://www.kaggle.com/kokitanisaka/lstm-by-keras-with-unified-wi-fi-feats\" target=\"_blank\">https://www.kaggle.com/kokitanisaka/lstm-by-keras-with-unified-wi-fi-feats</a> by <a href=\"https://www.kaggle.com/kokitanisaka\" target=\"_blank\">@kokitanisaka</a><br>\n<a href=\"https://www.kaggle.com/saitodevel01/indoor-post-processing-by-cost-minimization\" target=\"_blank\">https://www.kaggle.com/saitodevel01/indoor-post-processing-by-cost-minimization</a> by <a href=\"https://www.kaggle.com/saitodevel01\" target=\"_blank\">@saitodevel01</a><br>\n<a href=\"https://www.kaggle.com/robikscube/indoor-navigation-snap-to-grid-post-processing\" target=\"_blank\">https://www.kaggle.com/robikscube/indoor-navigation-snap-to-grid-post-processing</a> by <a href=\"https://www.kaggle.com/robikscube\" target=\"_blank\">@robikscube</a><br>\n<a href=\"https://www.kaggle.com/tomooinubushi/postprocessing-based-on-leakage\" target=\"_blank\">https://www.kaggle.com/tomooinubushi/postprocessing-based-on-leakage</a> by <a href=\"https://www.kaggle.com/tomooinubushi\" target=\"_blank\">@tomooinubushi</a></p>\n<p>It was really nice competing in this competition, I wish I could have joined it earlier instead of last 2-3 weeks. I think we did pretty well without use of hand labels and small data. Thank you for reading our solution. </p>",
      "rawMarkdown": "I would like to thank kaggle for hosting such an interesting competition and my amazing teammates @shivamcyborg @dehokanta @shivammittal274 @nooblife .Also,  Congratulations to Tom & dott's team for another win and @mamasinkgs team for dominating the competition in most half of the competition. \nI would like to share our approach which did quite well for us and led us to secure a decent position on leaderboard.\nFirstly, all our models were trained on just wifi features BSSID & RSSI with diverse approaches. We couldn't find any better way to include more features into our model, most of them performed poorly on both validation score & leaderboard, hence we decided to stick completely with Wifi data.\n\n#### Models:\n1.Fastai/ RNN : This was our best model with highest weightage in ensemble, baseline was built by @nooblife, I was really amazed by its performance. One of the reason it performed better was generating the wifi data within the last 5 seconds for each position and sending them sequentially to our model. With some more parameters tuning and slightly different architecture, we managed to reach 5.26 with single model without any post processing.\n\n2. Site Wise RNN training: We also trained similar lstm model site wise, although its result were not as good as lstm on complete data, but it did good boost in ensemble because of low correlation. \n\n3. MLP: It also did quite well in our final ensemble of models, giving slight boost when merged with lstm models.\n\nOur models ensemble without any post processing scored **4.8-4.9** on public leaderboard.\n\n\n#### Post Processing\n\nOur final solution is solely based on public post processing with some additional tweaks and tricks. Although, we come up with brilliant way to boost local as well leaderboard score by 0.2-0.3 through post processing but with the help of hand labelled waypoints.  The idea behind it was doing post processing in loops with different thresholds for snap to grid, we might have reach a lot better position than current if hand labelled grids were allowed, I hope no team is using it in current standings.\nOur models score with post processing and optimised cost minimisation : **3.57**\n\n#### Pseudo Labels\n\nThe idea behind it was simple, as some of the waypoints were being changed by a good margin after post processing, we planned to retrain some of our models along with train+test data to get better predictions for some paths.\nThis led to our final score reach: **3.43** after adding pseudo label models in ensemble and making us jump to 22nd position on private leaderboard.\n\nBaseline version of rnn: https://www.kaggle.com/nooblife/indoor-location-rnn-v2\nPreparing data: https://www.kaggle.com/nooblife/indoor-location-rnn-data-v2\n\n\n### Things that didn't worked: \n- Transfer learning by using other buildings than test data.\n- Imu+wifi features models\n- lgbm\n- post processing based on shapely\n\n### Things we couldn't finish:\n- Automated grid points\n- Efficiently use other data with wifi features\n- Using time features efficiently \n- in depth EDA of predictions\n\n#### References \nhttps://www.kaggle.com/kokitanisaka/lstm-by-keras-with-unified-wi-fi-feats by @kokitanisaka\nhttps://www.kaggle.com/saitodevel01/indoor-post-processing-by-cost-minimization by @saitodevel01\nhttps://www.kaggle.com/robikscube/indoor-navigation-snap-to-grid-post-processing by @robikscube\nhttps://www.kaggle.com/tomooinubushi/postprocessing-based-on-leakage by @tomooinubushi\n\nIt was really nice competing in this competition, I wish I could have joined it earlier instead of last 2-3 weeks. I think we did pretty well without use of hand labels and small data. Thank you for reading our solution.",
      "votes": null
    },
    {
      "id": "1313080",
      "postDate": "05/18/2021 11:53:27",
      "content": "<p>greate job！<br>\nthx your share<br>\nbtw，the link of your best model is 404😏</p>",
      "rawMarkdown": "greate job！\nthx your share\nbtw，the link of your best model is 404😏",
      "votes": null
    },
    {
      "id": "1313095",
      "postDate": "05/18/2021 12:04:07",
      "content": "<p>Thank you, updated . 👍</p>",
      "rawMarkdown": "Thank you, updated . 👍",
      "votes": null
    },
    {
      "id": "1315500",
      "postDate": "05/19/2021 21:05:16",
      "content": "<p>Thank you for sharing our solution ! !</p>\n<p>Also, your leadership was excellent.We couldn't have achieved this ranking without you.<br>\nThank you for teaming up with me. ! </p>",
      "rawMarkdown": "Thank you for sharing our solution ! !\n\nAlso, your leadership was excellent.We couldn't have achieved this ranking without you.\nThank you for teaming up with me. !",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1313080,
      "author_name": "max2020",
      "author_url": "",
      "post_date": "05/18/2021 11:53:27",
      "content": "<p>greate job！<br>\nthx your share<br>\nbtw，the link of your best model is 404😏</p>",
      "votes": null,
      "replies": [
        {
          "id": 1313095,
          "author_name": "nischaydnk",
          "author_url": "",
          "post_date": "05/18/2021 12:04:07",
          "content": "<p>Thank you, updated . 👍</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1315500,
      "author_name": "dehokanta",
      "author_url": "",
      "post_date": "05/19/2021 21:05:16",
      "content": "<p>Thank you for sharing our solution ! !</p>\n<p>Also, your leadership was excellent.We couldn't have achieved this ranking without you.<br>\nThank you for teaming up with me. ! </p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1312884": "I would like to thank kaggle for hosting such an interesting competition and my amazing teammates @shivamcyborg @dehokanta @shivammittal274 @nooblife .Also,  Congratulations to Tom & dott's team for another win and @mamasinkgs team for dominating the competition in most half of the competition. \nI would like to share our approach which did quite well for us and led us to secure a decent position on leaderboard.\nFirstly, all our models were trained on just wifi features BSSID & RSSI with diverse approaches. We couldn't find any better way to include more features into our model, most of them performed poorly on both validation score & leaderboard, hence we decided to stick completely with Wifi data.\n\n#### Models:\n1.Fastai/ RNN : This was our best model with highest weightage in ensemble, baseline was built by @nooblife, I was really amazed by its performance. One of the reason it performed better was generating the wifi data within the last 5 seconds for each position and sending them sequentially to our model. With some more parameters tuning and slightly different architecture, we managed to reach 5.26 with single model without any post processing.\n\n2. Site Wise RNN training: We also trained similar lstm model site wise, although its result were not as good as lstm on complete data, but it did good boost in ensemble because of low correlation. \n\n3. MLP: It also did quite well in our final ensemble of models, giving slight boost when merged with lstm models.\n\nOur models ensemble without any post processing scored **4.8-4.9** on public leaderboard.\n\n\n#### Post Processing\n\nOur final solution is solely based on public post processing with some additional tweaks and tricks. Although, we come up with brilliant way to boost local as well leaderboard score by 0.2-0.3 through post processing but with the help of hand labelled waypoints.  The idea behind it was doing post processing in loops with different thresholds for snap to grid, we might have reach a lot better position than current if hand labelled grids were allowed, I hope no team is using it in current standings.\nOur models score with post processing and optimised cost minimisation : **3.57**\n\n#### Pseudo Labels\n\nThe idea behind it was simple, as some of the waypoints were being changed by a good margin after post processing, we planned to retrain some of our models along with train+test data to get better predictions for some paths.\nThis led to our final score reach: **3.43** after adding pseudo label models in ensemble and making us jump to 22nd position on private leaderboard.\n\nBaseline version of rnn: https://www.kaggle.com/nooblife/indoor-location-rnn-v2\nPreparing data: https://www.kaggle.com/nooblife/indoor-location-rnn-data-v2\n\n\n### Things that didn't worked: \n- Transfer learning by using other buildings than test data.\n- Imu+wifi features models\n- lgbm\n- post processing based on shapely\n\n### Things we couldn't finish:\n- Automated grid points\n- Efficiently use other data with wifi features\n- Using time features efficiently \n- in depth EDA of predictions\n\n#### References \nhttps://www.kaggle.com/kokitanisaka/lstm-by-keras-with-unified-wi-fi-feats by @kokitanisaka\nhttps://www.kaggle.com/saitodevel01/indoor-post-processing-by-cost-minimization by @saitodevel01\nhttps://www.kaggle.com/robikscube/indoor-navigation-snap-to-grid-post-processing by @robikscube\nhttps://www.kaggle.com/tomooinubushi/postprocessing-based-on-leakage by @tomooinubushi\n\nIt was really nice competing in this competition, I wish I could have joined it earlier instead of last 2-3 weeks. I think we did pretty well without use of hand labels and small data. Thank you for reading our solution.",
    "1313080": "greate job！\nthx your share\nbtw，the link of your best model is 404😏",
    "1313095": "Thank you, updated . 👍",
    "1315500": "Thank you for sharing our solution ! !\n\nAlso, your leadership was excellent.We couldn't have achieved this ranking without you.\nThank you for teaming up with me. !"
  },
  "source": "meta"
}