{
  "id": 240197,
  "title": "[Part of] 2nd Place Solution - (Reza)",
  "url": "/competitions/indoor-location-navigation/discussion/240197",
  "author_name": "",
  "post_date": "2021-05-18T20:29:38.902124900Z",
  "votes": 32,
  "comment_count": 6,
  "views": 0,
  "content": "<p>Thanks for the host for an amazing competition and precious dataset. I have been in localization industry and know how hard it would to collect such a large and valuable dataset. </p>\n<p>I would like to thank my teammates <a href=\"https://www.kaggle.com/mamasinkgs\" target=\"_blank\">@mamasinkgs</a>, <a href=\"https://www.kaggle.com/ymatioun\" target=\"_blank\">@ymatioun</a>, <a href=\"https://www.kaggle.com/demonen\" target=\"_blank\">@demonen</a>, and <a href=\"https://www.kaggle.com/rsakata\" target=\"_blank\">@rsakata</a>. I learned a lot from them. </p>\n<p>Before I join the team I spent a lot of time working on WiFi only localization and didn't spend much time on sensor data and post processing. I basically used the great public kernels of <a href=\"https://www.kaggle.com/robikscube/indoor-navigation-snap-to-grid-post-processing\" target=\"_blank\">snap to grid</a> and <a href=\"https://www.kaggle.com/saitodevel01/indoor-post-processing-by-cost-minimization\" target=\"_blank\">cost minimization</a>.</p>\n<p>Here is the summary of my model which I think would be a winner if only WiFi data was available.  <a href=\"https://www.kaggle.com/mamasinkgs\" target=\"_blank\">@mamasinkgs</a> will explain how he did ensembling and amazing optimization for our 2nd place solution.</p>\n<h4>Model</h4>\n<ol>\n<li>Convert RSSI values from log scale to linear scale</li>\n<li>Discard bad RSSI values using last timestamp</li>\n<li>WKNN model (different number of neighbors for floor and x/y predictions)</li>\n<li>Use correlation/Braycurtis dissimilarity instead of Euclidean</li>\n<li>Use Gaussian process regression (GPR) to fill coverage holes</li>\n</ol>\n<h4>Results</h4>\n<table>\n<thead>\n<tr>\n<th>Model</th>\n<th>Public</th>\n<th>Private</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>WKNN - WiFi Only</td>\n<td>4.64181</td>\n<td>4.84857</td>\n</tr>\n<tr>\n<td>After Cost Minimization</td>\n<td>3.41539</td>\n<td>3.70724</td>\n</tr>\n<tr>\n<td>After Snap-to-Grid</td>\n<td>2.88465</td>\n<td>3.17900</td>\n</tr>\n</tbody>\n</table>\n<h4>Coverage Hole</h4>\n<p>One of the disadvantage of WKNN is its lack of capability for extrapolation. If the test datapoint is outside the region covered by train datapoints, we cannot find proper neighbors to predict the location. There are some sites you can clearly see the coverage holes where you don't have any training WiFi point . This is very common issue in fingerprinting localization (WiFi-based only). One of the approach to deal with this issue is called radio map reconstruction and GPR can based for this purpose. It is interesting that in GPR, your feature and target variables are swapped. We use x,y coordinates as features and RSSI values as a response variable. </p>\n<p>Below is the number of waypoints in train and test. As you can see, we don't have enough training coverage for the sites at the bottom the table. WKNN would not work very well for those sites. </p>\n<table>\n<thead>\n<tr>\n<th>site</th>\n<th>test</th>\n<th>train</th>\n<th>test/train</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>5d27075f03f801723c2e360f</td>\n<td>47</td>\n<td>7290</td>\n<td>0.006</td>\n</tr>\n<tr>\n<td>5c3c44b80379370013e0fd2b</td>\n<td>26</td>\n<td>1697</td>\n<td>0.015</td>\n</tr>\n<tr>\n<td>5d27099f03f801723c32511d</td>\n<td>49</td>\n<td>897</td>\n<td>0.054</td>\n</tr>\n<tr>\n<td>5d2709a003f801723c3251bf</td>\n<td>218</td>\n<td>1008</td>\n<td>0.216</td>\n</tr>\n<tr>\n<td>.</td>\n<td>.</td>\n<td>.</td>\n<td>.</td>\n</tr>\n<tr>\n<td>5da138754db8ce0c98bca82f</td>\n<td>386</td>\n<td>1430</td>\n<td>0.269</td>\n</tr>\n<tr>\n<td>5d27096c03f801723c31e5e0</td>\n<td>654</td>\n<td>1925</td>\n<td>0.339</td>\n</tr>\n<tr>\n<td>5d2709d403f801723c32bd39</td>\n<td>1223</td>\n<td>2978</td>\n<td>0.410</td>\n</tr>\n</tbody>\n</table>\n<p>This figure shows before and after radio reconstruction:<br>\n<img src=\"https://i.postimg.cc/x8xgZGWx/radio-map.png\" alt=\"radio\"></p>\n<p>Thanks for reading.</p>",
  "messages": [
    {
      "id": "1313959",
      "postDate": "05/18/2021 20:29:38",
      "content": "<p>Thanks for the host for an amazing competition and precious dataset. I have been in localization industry and know how hard it would to collect such a large and valuable dataset. </p>\n<p>I would like to thank my teammates <a href=\"https://www.kaggle.com/mamasinkgs\" target=\"_blank\">@mamasinkgs</a>, <a href=\"https://www.kaggle.com/ymatioun\" target=\"_blank\">@ymatioun</a>, <a href=\"https://www.kaggle.com/demonen\" target=\"_blank\">@demonen</a>, and <a href=\"https://www.kaggle.com/rsakata\" target=\"_blank\">@rsakata</a>. I learned a lot from them. </p>\n<p>Before I join the team I spent a lot of time working on WiFi only localization and didn't spend much time on sensor data and post processing. I basically used the great public kernels of <a href=\"https://www.kaggle.com/robikscube/indoor-navigation-snap-to-grid-post-processing\" target=\"_blank\">snap to grid</a> and <a href=\"https://www.kaggle.com/saitodevel01/indoor-post-processing-by-cost-minimization\" target=\"_blank\">cost minimization</a>.</p>\n<p>Here is the summary of my model which I think would be a winner if only WiFi data was available.  <a href=\"https://www.kaggle.com/mamasinkgs\" target=\"_blank\">@mamasinkgs</a> will explain how he did ensembling and amazing optimization for our 2nd place solution.</p>\n<h4>Model</h4>\n<ol>\n<li>Convert RSSI values from log scale to linear scale</li>\n<li>Discard bad RSSI values using last timestamp</li>\n<li>WKNN model (different number of neighbors for floor and x/y predictions)</li>\n<li>Use correlation/Braycurtis dissimilarity instead of Euclidean</li>\n<li>Use Gaussian process regression (GPR) to fill coverage holes</li>\n</ol>\n<h4>Results</h4>\n<table>\n<thead>\n<tr>\n<th>Model</th>\n<th>Public</th>\n<th>Private</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>WKNN - WiFi Only</td>\n<td>4.64181</td>\n<td>4.84857</td>\n</tr>\n<tr>\n<td>After Cost Minimization</td>\n<td>3.41539</td>\n<td>3.70724</td>\n</tr>\n<tr>\n<td>After Snap-to-Grid</td>\n<td>2.88465</td>\n<td>3.17900</td>\n</tr>\n</tbody>\n</table>\n<h4>Coverage Hole</h4>\n<p>One of the disadvantage of WKNN is its lack of capability for extrapolation. If the test datapoint is outside the region covered by train datapoints, we cannot find proper neighbors to predict the location. There are some sites you can clearly see the coverage holes where you don't have any training WiFi point . This is very common issue in fingerprinting localization (WiFi-based only). One of the approach to deal with this issue is called radio map reconstruction and GPR can based for this purpose. It is interesting that in GPR, your feature and target variables are swapped. We use x,y coordinates as features and RSSI values as a response variable. </p>\n<p>Below is the number of waypoints in train and test. As you can see, we don't have enough training coverage for the sites at the bottom the table. WKNN would not work very well for those sites. </p>\n<table>\n<thead>\n<tr>\n<th>site</th>\n<th>test</th>\n<th>train</th>\n<th>test/train</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>5d27075f03f801723c2e360f</td>\n<td>47</td>\n<td>7290</td>\n<td>0.006</td>\n</tr>\n<tr>\n<td>5c3c44b80379370013e0fd2b</td>\n<td>26</td>\n<td>1697</td>\n<td>0.015</td>\n</tr>\n<tr>\n<td>5d27099f03f801723c32511d</td>\n<td>49</td>\n<td>897</td>\n<td>0.054</td>\n</tr>\n<tr>\n<td>5d2709a003f801723c3251bf</td>\n<td>218</td>\n<td>1008</td>\n<td>0.216</td>\n</tr>\n<tr>\n<td>.</td>\n<td>.</td>\n<td>.</td>\n<td>.</td>\n</tr>\n<tr>\n<td>5da138754db8ce0c98bca82f</td>\n<td>386</td>\n<td>1430</td>\n<td>0.269</td>\n</tr>\n<tr>\n<td>5d27096c03f801723c31e5e0</td>\n<td>654</td>\n<td>1925</td>\n<td>0.339</td>\n</tr>\n<tr>\n<td>5d2709d403f801723c32bd39</td>\n<td>1223</td>\n<td>2978</td>\n<td>0.410</td>\n</tr>\n</tbody>\n</table>\n<p>This figure shows before and after radio reconstruction:<br>\n<img src=\"https://i.postimg.cc/x8xgZGWx/radio-map.png\" alt=\"radio\"></p>\n<p>Thanks for reading.</p>",
      "rawMarkdown": "Thanks for the host for an amazing competition and precious dataset. I have been in localization industry and know how hard it would to collect such a large and valuable dataset. \n\nI would like to thank my teammates @mamasinkgs, @ymatioun, @demonen, and @rsakata. I learned a lot from them. \n\nBefore I join the team I spent a lot of time working on WiFi only localization and didn't spend much time on sensor data and post processing. I basically used the great public kernels of [snap to grid](https://www.kaggle.com/robikscube/indoor-navigation-snap-to-grid-post-processing) and [cost minimization](https://www.kaggle.com/saitodevel01/indoor-post-processing-by-cost-minimization).\n\nHere is the summary of my model which I think would be a winner if only WiFi data was available.  @mamasinkgs will explain how he did ensembling and amazing optimization for our 2nd place solution.\n\n#### Model\n1. Convert RSSI values from log scale to linear scale\n2. Discard bad RSSI values using last timestamp\n3. WKNN model (different number of neighbors for floor and x/y predictions)\n4. Use correlation/Braycurtis dissimilarity instead of Euclidean\n5. Use Gaussian process regression (GPR) to fill coverage holes\n\n#### Results\n| Model | Public | Private\n| --- | --- |\n| WKNN - WiFi Only | 4.64181 | 4.84857\n| After Cost Minimization | 3.41539 | 3.70724\n| After Snap-to-Grid | 2.88465 | 3.17900\n\n#### Coverage Hole\nOne of the disadvantage of WKNN is its lack of capability for extrapolation. If the test datapoint is outside the region covered by train datapoints, we cannot find proper neighbors to predict the location. There are some sites you can clearly see the coverage holes where you don't have any training WiFi point . This is very common issue in fingerprinting localization (WiFi-based only). One of the approach to deal with this issue is called radio map reconstruction and GPR can based for this purpose. It is interesting that in GPR, your feature and target variables are swapped. We use x,y coordinates as features and RSSI values as a response variable. \n\nBelow is the number of waypoints in train and test. As you can see, we don't have enough training coverage for the sites at the bottom the table. WKNN would not work very well for those sites. \nsite|test|train|test/train\n| --- | --- | --- | --- |\n5d27075f03f801723c2e360f|47|7290|0.006\n5c3c44b80379370013e0fd2b|26|1697|0.015\n5d27099f03f801723c32511d|49|897|0.054\n5d2709a003f801723c3251bf|218|1008|0.216\n.|.|.|.\n5da138754db8ce0c98bca82f|386|1430|0.269\n5d27096c03f801723c31e5e0|654|1925|0.339\n5d2709d403f801723c32bd39|1223|2978|0.410\n\nThis figure shows before and after radio reconstruction:\n![radio](https://i.postimg.cc/x8xgZGWx/radio-map.png)\n\nThanks for reading.",
      "votes": null
    },
    {
      "id": "1313971",
      "postDate": "05/18/2021 20:38:44",
      "content": "<p>WOW, your wifi model is amazing. much better than mine. Please let me know if you'll share the code. <br>\nCongratulations on winning the 2nd place!</p>",
      "rawMarkdown": "WOW, your wifi model is amazing. much better than mine. Please let me know if you'll share the code. \nCongratulations on winning the 2nd place!",
      "votes": null
    },
    {
      "id": "1314093",
      "postDate": "05/19/2021 00:33:10",
      "content": "<p>Thanks, I share after some cleanup</p>",
      "rawMarkdown": "Thanks, I share after some cleanup",
      "votes": null
    },
    {
      "id": "1314106",
      "postDate": "05/19/2021 00:47:04",
      "content": "<p>Outstanding. Honored to have my notebook mentioned in your solution. Extremely strong WIFI model and smart idea converting RSSI from log to linear scale.</p>",
      "rawMarkdown": "Outstanding. Honored to have my notebook mentioned in your solution. Extremely strong WIFI model and smart idea converting RSSI from log to linear scale.",
      "votes": null
    },
    {
      "id": "1314897",
      "postDate": "05/19/2021 12:42:50",
      "content": "<p>Thanks Reza, your work is really great and I'm sure your absolute position prediction model is the best in all the participants in this competition.</p>",
      "rawMarkdown": "Thanks Reza, your work is really great and I'm sure your absolute position prediction model is the best in all the participants in this competition.",
      "votes": null
    },
    {
      "id": "1315291",
      "postDate": "05/19/2021 17:28:08",
      "content": "<p>Thanks mamas, it was a pleasure working with you, congrats again on becoming GM, well deserved. </p>",
      "rawMarkdown": "Thanks mamas, it was a pleasure working with you, congrats again on becoming GM, well deserved.",
      "votes": null
    },
    {
      "id": "1317321",
      "postDate": "05/21/2021 10:20:22",
      "content": "<p>Congratulations on winning the 2nd place. I'm very interested in your wifi model also. This looks very interesting. I wanted to explore GPR but have no experience with it. I'm looking forward to looking at your code!</p>",
      "rawMarkdown": "Congratulations on winning the 2nd place. I'm very interested in your wifi model also. This looks very interesting. I wanted to explore GPR but have no experience with it. I'm looking forward to looking at your code!",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1313971,
      "author_name": "jiweiliu",
      "author_url": "",
      "post_date": "05/18/2021 20:38:44",
      "content": "<p>WOW, your wifi model is amazing. much better than mine. Please let me know if you'll share the code. <br>\nCongratulations on winning the 2nd place!</p>",
      "votes": null,
      "replies": [
        {
          "id": 1314093,
          "author_name": "vaghefi",
          "author_url": "",
          "post_date": "05/19/2021 00:33:10",
          "content": "<p>Thanks, I share after some cleanup</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1317321,
          "author_name": "seuguh",
          "author_url": "",
          "post_date": "05/21/2021 10:20:22",
          "content": "<p>Congratulations on winning the 2nd place. I'm very interested in your wifi model also. This looks very interesting. I wanted to explore GPR but have no experience with it. I'm looking forward to looking at your code!</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1314106,
      "author_name": "robikscube",
      "author_url": "",
      "post_date": "05/19/2021 00:47:04",
      "content": "<p>Outstanding. Honored to have my notebook mentioned in your solution. Extremely strong WIFI model and smart idea converting RSSI from log to linear scale.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1314897,
      "author_name": "mamasinkgs",
      "author_url": "",
      "post_date": "05/19/2021 12:42:50",
      "content": "<p>Thanks Reza, your work is really great and I'm sure your absolute position prediction model is the best in all the participants in this competition.</p>",
      "votes": null,
      "replies": [
        {
          "id": 1315291,
          "author_name": "vaghefi",
          "author_url": "",
          "post_date": "05/19/2021 17:28:08",
          "content": "<p>Thanks mamas, it was a pleasure working with you, congrats again on becoming GM, well deserved. </p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "1313959": "Thanks for the host for an amazing competition and precious dataset. I have been in localization industry and know how hard it would to collect such a large and valuable dataset. \n\nI would like to thank my teammates @mamasinkgs, @ymatioun, @demonen, and @rsakata. I learned a lot from them. \n\nBefore I join the team I spent a lot of time working on WiFi only localization and didn't spend much time on sensor data and post processing. I basically used the great public kernels of [snap to grid](https://www.kaggle.com/robikscube/indoor-navigation-snap-to-grid-post-processing) and [cost minimization](https://www.kaggle.com/saitodevel01/indoor-post-processing-by-cost-minimization).\n\nHere is the summary of my model which I think would be a winner if only WiFi data was available.  @mamasinkgs will explain how he did ensembling and amazing optimization for our 2nd place solution.\n\n#### Model\n1. Convert RSSI values from log scale to linear scale\n2. Discard bad RSSI values using last timestamp\n3. WKNN model (different number of neighbors for floor and x/y predictions)\n4. Use correlation/Braycurtis dissimilarity instead of Euclidean\n5. Use Gaussian process regression (GPR) to fill coverage holes\n\n#### Results\n| Model | Public | Private\n| --- | --- |\n| WKNN - WiFi Only | 4.64181 | 4.84857\n| After Cost Minimization | 3.41539 | 3.70724\n| After Snap-to-Grid | 2.88465 | 3.17900\n\n#### Coverage Hole\nOne of the disadvantage of WKNN is its lack of capability for extrapolation. If the test datapoint is outside the region covered by train datapoints, we cannot find proper neighbors to predict the location. There are some sites you can clearly see the coverage holes where you don't have any training WiFi point . This is very common issue in fingerprinting localization (WiFi-based only). One of the approach to deal with this issue is called radio map reconstruction and GPR can based for this purpose. It is interesting that in GPR, your feature and target variables are swapped. We use x,y coordinates as features and RSSI values as a response variable. \n\nBelow is the number of waypoints in train and test. As you can see, we don't have enough training coverage for the sites at the bottom the table. WKNN would not work very well for those sites. \nsite|test|train|test/train\n| --- | --- | --- | --- |\n5d27075f03f801723c2e360f|47|7290|0.006\n5c3c44b80379370013e0fd2b|26|1697|0.015\n5d27099f03f801723c32511d|49|897|0.054\n5d2709a003f801723c3251bf|218|1008|0.216\n.|.|.|.\n5da138754db8ce0c98bca82f|386|1430|0.269\n5d27096c03f801723c31e5e0|654|1925|0.339\n5d2709d403f801723c32bd39|1223|2978|0.410\n\nThis figure shows before and after radio reconstruction:\n![radio](https://i.postimg.cc/x8xgZGWx/radio-map.png)\n\nThanks for reading.",
    "1313971": "WOW, your wifi model is amazing. much better than mine. Please let me know if you'll share the code. \nCongratulations on winning the 2nd place!",
    "1314093": "Thanks, I share after some cleanup",
    "1314106": "Outstanding. Honored to have my notebook mentioned in your solution. Extremely strong WIFI model and smart idea converting RSSI from log to linear scale.",
    "1314897": "Thanks Reza, your work is really great and I'm sure your absolute position prediction model is the best in all the participants in this competition.",
    "1315291": "Thanks mamas, it was a pleasure working with you, congrats again on becoming GM, well deserved.",
    "1317321": "Congratulations on winning the 2nd place. I'm very interested in your wifi model also. This looks very interesting. I wanted to explore GPR but have no experience with it. I'm looking forward to looking at your code!"
  },
  "source": "meta"
}