{
  "id": 225594,
  "title": "The 2 Very Different Approaches to this Competition",
  "url": "/competitions/indoor-location-navigation/discussion/225594",
  "author_name": "Ravi Shah",
  "post_date": "2021-03-13T04:16:31.827000",
  "votes": 36,
  "comment_count": 15,
  "views": 0,
  "content": "<p>There are two very different approaches (almost kind of opposite) dominating this competition, both very good.<br>\nDon’t model - use logic and understanding to simplify the data<br>\nDeep Learning - use recurrent neural networks (LSTMs)</p>\n<p>So which is better?<br>\nWell they are both very good at different things, so you should make both part of your solution. <br>\nFor example this notebook <a href=\"url\" target=\"_blank\">https://www.kaggle.com/nigelhenry/simple-99-accurate-floor-model</a>  has produced the some of best floor predictions without using machine learning. <br>\nIn contrast, RNNs such as this <a href=\"url\" target=\"_blank\">https://www.kaggle.com/therocket290/lstm-unified-wi-fi-training-x-and-y-with-floor</a> are also producing incredible results and are the main model of many top competitors.<br>\nThere’s also some good lgbms that can improve models when ensembled.<br>\nThis notebook uses a post processing technique that takes the output of a model such as a rnn and can improve it without machine learning <a href=\"url\" target=\"_blank\"></a><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> </p>\n<p>Let me know what approach you are using and what you think is better.</p>",
  "messages": [
    {
      "id": 1236370,
      "postDate": "2021-03-13T04:16:31.827Z",
      "content": "<p>There are two very different approaches (almost kind of opposite) dominating this competition, both very good.<br>\nDon’t model - use logic and understanding to simplify the data<br>\nDeep Learning - use recurrent neural networks (LSTMs)</p>\n<p>So which is better?<br>\nWell they are both very good at different things, so you should make both part of your solution. <br>\nFor example this notebook <a href=\"url\" target=\"_blank\">https://www.kaggle.com/nigelhenry/simple-99-accurate-floor-model</a>  has produced the some of best floor predictions without using machine learning. <br>\nIn contrast, RNNs such as this <a href=\"url\" target=\"_blank\">https://www.kaggle.com/therocket290/lstm-unified-wi-fi-training-x-and-y-with-floor</a> are also producing incredible results and are the main model of many top competitors.<br>\nThere’s also some good lgbms that can improve models when ensembled.<br>\nThis notebook uses a post processing technique that takes the output of a model such as a rnn and can improve it without machine learning <a href=\"url\" target=\"_blank\"></a><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> </p>\n<p>Let me know what approach you are using and what you think is better.</p>",
      "rawMarkdown": "There are two very different approaches (almost kind of opposite) dominating this competition, both very good.\nDon’t model - use logic and understanding to simplify the data\nDeep Learning - use recurrent neural networks (LSTMs)\n\nSo which is better?\nWell they are both very good at different things, so you should make both part of your solution. \nFor example this notebook [https://www.kaggle.com/nigelhenry/simple-99-accurate-floor-model](url)  has produced the some of best floor predictions without using machine learning. \nIn contrast, RNNs such as this [https://www.kaggle.com/therocket290/lstm-unified-wi-fi-training-x-and-y-with-floor](url) are also producing incredible results and are the main model of many top competitors.\nThere’s also some good lgbms that can improve models when ensembled.\nThis notebook uses a post processing technique that takes the output of a model such as a rnn and can improve it without machine learning [https://www.kaggle.com/robikscube/indoor-navigation-snap-to-grid-post-processing ](url)\n\nLet me know what approach you are using and what you think is better.",
      "votes": 36
    },
    {
      "id": 1236728,
      "postDate": "2021-03-13T11:36:13.180Z",
      "content": "<p>I use Pytorch LSTM since the beginning. One LSTM per site are also relatively good to predict the floors. </p>",
      "rawMarkdown": "I use Pytorch LSTM since the beginning. One LSTM per site are also relatively good to predict the floors. ",
      "votes": 8
    },
    {
      "id": 1236582,
      "postDate": "2021-03-13T09:15:55.777Z",
      "content": "<p>Hi Ravin,</p>\n<p>Great compilation, thank you!</p>\n<p>As a different apprroach I'm using simple NN. My model is based on this great notebook. <a href=\"https://www.kaggle.com/deepijongwonkim/wifi-features-neural-networks-starter\" target=\"_blank\">https://www.kaggle.com/deepijongwonkim/wifi-features-neural-networks-starter</a></p>\n<p>As post processing I'm using Kalman filter at the first place and finally the snap to grid idea you commented.</p>\n<p>This model works quite well, but seems hard to achieve the better performance of the LSTMs. </p>",
      "rawMarkdown": "Hi Ravin,\n\nGreat compilation, thank you!\n\nAs a different apprroach I'm using simple NN. My model is based on this great notebook. https://www.kaggle.com/deepijongwonkim/wifi-features-neural-networks-starter\n\nAs post processing I'm using Kalman filter at the first place and finally the snap to grid idea you commented.\n\nThis model works quite well, but seems hard to achieve the better performance of the LSTMs. \n",
      "votes": 8,
      "replies": [
        {
          "id": 1236590,
          "postDate": "2021-03-13T09:28:29.153Z",
          "content": "<p>I'm impressed with your great improvement on the LB, <a href=\"https://www.kaggle.com/kriyeng\" target=\"_blank\">@kriyeng</a> ! </p>\n<p>Does that mean you make models for each buildings with simple NN? <br>\nSo far I haven't tried making models for each buildings. </p>",
          "rawMarkdown": "I'm impressed with your great improvement on the LB, @kriyeng ! \n\nDoes that mean you make models for each buildings with simple NN? \nSo far I haven't tried making models for each buildings. ",
          "votes": 4
        },
        {
          "id": 1236633,
          "postDate": "2021-03-13T10:21:39.920Z",
          "content": "<p>Thank you Kouki!</p>\n<p>I'm thrilled with these results, I've never been on these positions before! 😄 It's been really fun.</p>\n<p>Yes, I make NN models for each building and x, y and floor. </p>\n<p>Based on the original notebook, I first predict the floor and then for x and y models I apply floor as a feature. </p>",
          "rawMarkdown": "Thank you Kouki!\n\nI'm thrilled with these results, I've never been on these positions before! 😄 It's been really fun.\n\nYes, I make NN models for each building and x, y and floor. \n\nBased on the original notebook, I first predict the floor and then for x and y models I apply floor as a feature. ",
          "votes": 5
        },
        {
          "id": 1237123,
          "postDate": "2021-03-13T19:20:49.333Z",
          "content": "<p>Thank you for the reply! <br>\nI see, so per building models can do this good. I should try it as well. 😄</p>",
          "rawMarkdown": "Thank you for the reply! \nI see, so per building models can do this good. I should try it as well. 😄",
          "votes": 2
        },
        {
          "id": 1237339,
          "postDate": "2021-03-14T04:13:35.283Z",
          "content": "<p><a href=\"https://www.kaggle.com/kriyeng\" target=\"_blank\">@kriyeng</a>, wow your NN must be really good at predicting floors if you can use floors as a feature. Very impressive!</p>",
          "rawMarkdown": "@kriyeng, wow your NN must be really good at predicting floors if you can use floors as a feature. Very impressive!",
          "votes": 2
        },
        {
          "id": 1238073,
          "postDate": "2021-03-14T16:20:18.067Z",
          "content": "<p>Yes, you can feed the floor predicted outputs as input features to predict x and y and in the same NN model. This is a very good strategy IMHO</p>",
          "rawMarkdown": "Yes, you can feed the floor predicted outputs as input features to predict x and y and in the same NN model. This is a very good strategy IMHO",
          "votes": 3
        },
        {
          "id": 1238162,
          "postDate": "2021-03-14T17:53:25.690Z",
          "content": "<p><a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> I'm not sure how good it is but seems fairly regular on most of the paths. For the ones that it gets some \"doubts\", I mean not predicting the same floor for all the waypoints in the same path, I get the max predicted floor for those paths and apply to all of them.</p>",
          "rawMarkdown": "@ravishah1 I'm not sure how good it is but seems fairly regular on most of the paths. For the ones that it gets some \"doubts\", I mean not predicting the same floor for all the waypoints in the same path, I get the max predicted floor for those paths and apply to all of them.",
          "votes": 1
        },
        {
          "id": 1238323,
          "postDate": "2021-03-14T22:05:12.863Z",
          "content": "<p><a href=\"https://www.kaggle.com/kriyeng\" target=\"_blank\">@kriyeng</a> how fast is your simple NN? How long does it take to train models for all 24 buildings?</p>",
          "rawMarkdown": "@kriyeng how fast is your simple NN? How long does it take to train models for all 24 buildings?",
          "votes": 1
        },
        {
          "id": 1239313,
          "postDate": "2021-03-15T16:05:11.037Z",
          "content": "<p><a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> it takes about 3/3:30 hours to train all building models. </p>",
          "rawMarkdown": "@ravishah1 it takes about 3/3:30 hours to train all building models. ",
          "votes": 1
        }
      ]
    },
    {
      "id": 1237121,
      "postDate": "2021-03-13T19:18:06.020Z",
      "content": "<p><a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> - for the last few days I've been watching an ongoing cycle of:</p>\n<p>Best public submission -&gt; snap-to-grid -&gt; new best public submission -&gt; ensemble with previous best public submission -&gt; new best public submission -&gt; snap-to-grid -&gt; new best public submission -&gt; ensemble with previous best public submission -&gt; new best public submission …</p>",
      "rawMarkdown": "@ravishah1 - for the last few days I've been watching an ongoing cycle of:\n\nBest public submission -> snap-to-grid -> new best public submission -> ensemble with previous best public submission -> new best public submission -> snap-to-grid -> new best public submission -> ensemble with previous best public submission -> new best public submission ...",
      "votes": 3,
      "replies": [
        {
          "id": 1237343,
          "postDate": "2021-03-14T04:16:18.200Z",
          "content": "<p><a href=\"https://www.kaggle.com/jbomitchell\" target=\"_blank\">@jbomitchell</a>, it is getting increasingly difficult to stay ahead of the best public submission, but here is what I recommend:<br>\nKeep track of the best public submissions that use a new type of model or feature and ensemble it with your own models and features. Then you can post process your submission with snap to grid.<br>\nFor the most part, I am ignoring the public submissions that are just people ensembling models or applying snap to grid to the best published model.</p>",
          "rawMarkdown": "@jbomitchell, it is getting increasingly difficult to stay ahead of the best public submission, but here is what I recommend:\nKeep track of the best public submissions that use a new type of model or feature and ensemble it with your own models and features. Then you can post process your submission with snap to grid.\nFor the most part, I am ignoring the public submissions that are just people ensembling models or applying snap to grid to the best published model.\n",
          "votes": 1
        },
        {
          "id": 1237614,
          "postDate": "2021-03-14T09:53:53.203Z",
          "content": "<p><a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> - it would help with successful ensembling if the LB showed more than 3 decimal points. It is much harder to construct the requisite gradients when the feedback has such coarse granularity.</p>",
          "rawMarkdown": "@ravishah1 - it would help with successful ensembling if the LB showed more than 3 decimal points. It is much harder to construct the requisite gradients when the feedback has such coarse granularity.",
          "votes": 2
        },
        {
          "id": 1255287,
          "postDate": "2021-03-28T16:47:18.257Z",
          "content": "<p><a href=\"https://www.kaggle.com/jbomitchell\" target=\"_blank\">@jbomitchell</a> It does seem to be the way this competition is going but seems like if we are all doing it.. someone is going to have to really get crafty!</p>",
          "rawMarkdown": "@jbomitchell It does seem to be the way this competition is going but seems like if we are all doing it.. someone is going to have to really get crafty!",
          "votes": 1
        }
      ]
    },
    {
      "id": 1244135,
      "postDate": "2021-03-18T17:58:10.590Z",
      "rawMarkdown": "",
      "votes": 2,
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 1236728,
      "author_name": "Serigne ",
      "author_url": "",
      "post_date": "2021-03-13T11:36:13.180000",
      "content": "<p>I use Pytorch LSTM since the beginning. One LSTM per site are also relatively good to predict the floors. </p>",
      "votes": 8,
      "replies": []
    },
    {
      "id": 1236582,
      "author_name": "David Ibáñez",
      "author_url": "",
      "post_date": "2021-03-13T09:15:55.777000",
      "content": "<p>Hi Ravin,</p>\n<p>Great compilation, thank you!</p>\n<p>As a different apprroach I'm using simple NN. My model is based on this great notebook. <a href=\"https://www.kaggle.com/deepijongwonkim/wifi-features-neural-networks-starter\" target=\"_blank\">https://www.kaggle.com/deepijongwonkim/wifi-features-neural-networks-starter</a></p>\n<p>As post processing I'm using Kalman filter at the first place and finally the snap to grid idea you commented.</p>\n<p>This model works quite well, but seems hard to achieve the better performance of the LSTMs. </p>",
      "votes": 8,
      "replies": [
        {
          "id": 1236590,
          "author_name": "Kouki",
          "author_url": "",
          "post_date": "2021-03-13T09:28:29.153000",
          "content": "<p>I'm impressed with your great improvement on the LB, <a href=\"https://www.kaggle.com/kriyeng\" target=\"_blank\">@kriyeng</a> ! </p>\n<p>Does that mean you make models for each buildings with simple NN? <br>\nSo far I haven't tried making models for each buildings. </p>",
          "votes": 4,
          "replies": []
        },
        {
          "id": 1236633,
          "author_name": "David Ibáñez",
          "author_url": "",
          "post_date": "2021-03-13T10:21:39.920000",
          "content": "<p>Thank you Kouki!</p>\n<p>I'm thrilled with these results, I've never been on these positions before! 😄 It's been really fun.</p>\n<p>Yes, I make NN models for each building and x, y and floor. </p>\n<p>Based on the original notebook, I first predict the floor and then for x and y models I apply floor as a feature. </p>",
          "votes": 5,
          "replies": []
        },
        {
          "id": 1237123,
          "author_name": "Kouki",
          "author_url": "",
          "post_date": "2021-03-13T19:20:49.333000",
          "content": "<p>Thank you for the reply! <br>\nI see, so per building models can do this good. I should try it as well. 😄</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 1237339,
          "author_name": "Ravi Shah",
          "author_url": "",
          "post_date": "2021-03-14T04:13:35.283000",
          "content": "<p><a href=\"https://www.kaggle.com/kriyeng\" target=\"_blank\">@kriyeng</a>, wow your NN must be really good at predicting floors if you can use floors as a feature. Very impressive!</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 1238073,
          "author_name": "Serigne ",
          "author_url": "",
          "post_date": "2021-03-14T16:20:18.067000",
          "content": "<p>Yes, you can feed the floor predicted outputs as input features to predict x and y and in the same NN model. This is a very good strategy IMHO</p>",
          "votes": 3,
          "replies": []
        },
        {
          "id": 1238162,
          "author_name": "David Ibáñez",
          "author_url": "",
          "post_date": "2021-03-14T17:53:25.690000",
          "content": "<p><a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> I'm not sure how good it is but seems fairly regular on most of the paths. For the ones that it gets some \"doubts\", I mean not predicting the same floor for all the waypoints in the same path, I get the max predicted floor for those paths and apply to all of them.</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 1238323,
          "author_name": "Ravi Shah",
          "author_url": "",
          "post_date": "2021-03-14T22:05:12.863000",
          "content": "<p><a href=\"https://www.kaggle.com/kriyeng\" target=\"_blank\">@kriyeng</a> how fast is your simple NN? How long does it take to train models for all 24 buildings?</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 1239313,
          "author_name": "David Ibáñez",
          "author_url": "",
          "post_date": "2021-03-15T16:05:11.037000",
          "content": "<p><a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> it takes about 3/3:30 hours to train all building models. </p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 1237121,
      "author_name": "John Mitchell",
      "author_url": "",
      "post_date": "2021-03-13T19:18:06.020000",
      "content": "<p><a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> - for the last few days I've been watching an ongoing cycle of:</p>\n<p>Best public submission -&gt; snap-to-grid -&gt; new best public submission -&gt; ensemble with previous best public submission -&gt; new best public submission -&gt; snap-to-grid -&gt; new best public submission -&gt; ensemble with previous best public submission -&gt; new best public submission …</p>",
      "votes": 3,
      "replies": [
        {
          "id": 1237343,
          "author_name": "Ravi Shah",
          "author_url": "",
          "post_date": "2021-03-14T04:16:18.200000",
          "content": "<p><a href=\"https://www.kaggle.com/jbomitchell\" target=\"_blank\">@jbomitchell</a>, it is getting increasingly difficult to stay ahead of the best public submission, but here is what I recommend:<br>\nKeep track of the best public submissions that use a new type of model or feature and ensemble it with your own models and features. Then you can post process your submission with snap to grid.<br>\nFor the most part, I am ignoring the public submissions that are just people ensembling models or applying snap to grid to the best published model.</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 1237614,
          "author_name": "John Mitchell",
          "author_url": "",
          "post_date": "2021-03-14T09:53:53.203000",
          "content": "<p><a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> - it would help with successful ensembling if the LB showed more than 3 decimal points. It is much harder to construct the requisite gradients when the feedback has such coarse granularity.</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 1255287,
          "author_name": "Charlie Craine",
          "author_url": "",
          "post_date": "2021-03-28T16:47:18.257000",
          "content": "<p><a href=\"https://www.kaggle.com/jbomitchell\" target=\"_blank\">@jbomitchell</a> It does seem to be the way this competition is going but seems like if we are all doing it.. someone is going to have to really get crafty!</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 1244135,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-03-18T17:58:10.590000",
      "content": "",
      "votes": 2,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1236370": "There are two very different approaches (almost kind of opposite) dominating this competition, both very good.\nDon’t model - use logic and understanding to simplify the data\nDeep Learning - use recurrent neural networks (LSTMs)\n\nSo which is better?\nWell they are both very good at different things, so you should make both part of your solution. \nFor example this notebook [https://www.kaggle.com/nigelhenry/simple-99-accurate-floor-model](url)  has produced the some of best floor predictions without using machine learning. \nIn contrast, RNNs such as this [https://www.kaggle.com/therocket290/lstm-unified-wi-fi-training-x-and-y-with-floor](url) are also producing incredible results and are the main model of many top competitors.\nThere’s also some good lgbms that can improve models when ensembled.\nThis notebook uses a post processing technique that takes the output of a model such as a rnn and can improve it without machine learning [https://www.kaggle.com/robikscube/indoor-navigation-snap-to-grid-post-processing ](url)\n\nLet me know what approach you are using and what you think is better.",
    "1236728": "I use Pytorch LSTM since the beginning. One LSTM per site are also relatively good to predict the floors. ",
    "1236582": "Hi Ravin,\n\nGreat compilation, thank you!\n\nAs a different apprroach I'm using simple NN. My model is based on this great notebook. https://www.kaggle.com/deepijongwonkim/wifi-features-neural-networks-starter\n\nAs post processing I'm using Kalman filter at the first place and finally the snap to grid idea you commented.\n\nThis model works quite well, but seems hard to achieve the better performance of the LSTMs. \n",
    "1237121": "@ravishah1 - for the last few days I've been watching an ongoing cycle of:\n\nBest public submission -> snap-to-grid -> new best public submission -> ensemble with previous best public submission -> new best public submission -> snap-to-grid -> new best public submission -> ensemble with previous best public submission -> new best public submission ...",
    "1244135": ""
  }
}