{
  "id": 240087,
  "title": "9th place solution (Saito)",
  "url": "/competitions/indoor-location-navigation/discussion/240087",
  "author_name": "",
  "post_date": "2021-05-18T14:26:37.149210900Z",
  "votes": 15,
  "comment_count": 4,
  "views": 0,
  "content": "<p>Congrats to all the winners!<br>\nAnd I must apologize Kaggle community for <a href=\"https://www.kaggle.com/c/indoor-location-navigation/discussion/235813\" target=\"_blank\">cheating</a>. This competition was so hard that I made a mistake. <br>\nHere, I want to share my part of our team's solution.  (My teammate higepon's part is <a href=\"https://www.kaggle.com/c/indoor-location-navigation/discussion/239919\" target=\"_blank\">here</a>)</p>\n<h2>Wifi models (floor and absolute position)</h2>\n<p>My wifi model is CNN. Divide ±10 seconds into 5 sections and create (1, 5, rssi) images as input feature.</p>\n<ul>\n<li>Adding ibeacon's rssi in input features.</li>\n<li>Site specific models.</li>\n<li>Use compute_step_positions of host code for data augmentation.</li>\n<li>Use StratifiedGroupKFold (label=floor, group=path) for both floor and position models.</li>\n<li>Error estimation based on variance between different models (including public notebooks).</li>\n<li>My wifi model's performance is poor compared to the models discussed <a href=\"https://www.kaggle.com/c/indoor-location-navigation/discussion/232995\" target=\"_blank\">here</a>. (CV/LB : 7.1 to 7.3) But relatively small gap between CV, public LB and private LB.</li>\n<li>Thank you very much <a href=\"https://www.kaggle.com/higepon\" target=\"_blank\">@higepon</a> for this part.</li>\n</ul>\n<h2>Sensor models (relative position)</h2>\n<p>I also created sensor RNN model. This may be an attempt that many participants have not made.</p>\n<ul>\n<li>Apply anti-aliasing filter to sensor data and resample them to sampling rate 0.1 seconds to reduce data.</li>\n<li>Try LSTM and GRU and ensemble them.</li>\n<li>Error estimation based on ensemble variance.</li>\n<li>Calibrate scale and rotation for each device using device leak. This boosts public/private LB 0.03m.</li>\n<li>Adding uncalibrated data didn't work for my model.</li>\n</ul>\n<h2>Post-processing</h2>\n<ul>\n<li>My cost minimization notebook is equivalent to Kalman smoother (See <a href=\"https://www.kaggle.com/saitodevel01/background-ideas-of-cost-minimization-notebook\" target=\"_blank\">this notebook</a> for detail).</li>\n<li>Parameters of cost function are determined by error estimation of wifi and sensor models.</li>\n<li>Heuristics that gradually replace wifi predictions with nearest neighbor grid points.</li>\n<li>Use additional grid points generated by <a href=\"https://www.kaggle.com/saitodevel01/generate-extra-grid-points\" target=\"_blank\">this code</a>.</li>\n<li><a href=\"https://www.kaggle.com/saitodevel01/11-pseudo-labeling-from-lb-2-586-with-retry\" target=\"_blank\">I published our final submission code.</a></li>\n</ul>",
  "messages": [
    {
      "id": "1313372",
      "postDate": "05/18/2021 14:26:37",
      "content": "<p>Congrats to all the winners!<br>\nAnd I must apologize Kaggle community for <a href=\"https://www.kaggle.com/c/indoor-location-navigation/discussion/235813\" target=\"_blank\">cheating</a>. This competition was so hard that I made a mistake. <br>\nHere, I want to share my part of our team's solution.  (My teammate higepon's part is <a href=\"https://www.kaggle.com/c/indoor-location-navigation/discussion/239919\" target=\"_blank\">here</a>)</p>\n<h2>Wifi models (floor and absolute position)</h2>\n<p>My wifi model is CNN. Divide ±10 seconds into 5 sections and create (1, 5, rssi) images as input feature.</p>\n<ul>\n<li>Adding ibeacon's rssi in input features.</li>\n<li>Site specific models.</li>\n<li>Use compute_step_positions of host code for data augmentation.</li>\n<li>Use StratifiedGroupKFold (label=floor, group=path) for both floor and position models.</li>\n<li>Error estimation based on variance between different models (including public notebooks).</li>\n<li>My wifi model's performance is poor compared to the models discussed <a href=\"https://www.kaggle.com/c/indoor-location-navigation/discussion/232995\" target=\"_blank\">here</a>. (CV/LB : 7.1 to 7.3) But relatively small gap between CV, public LB and private LB.</li>\n<li>Thank you very much <a href=\"https://www.kaggle.com/higepon\" target=\"_blank\">@higepon</a> for this part.</li>\n</ul>\n<h2>Sensor models (relative position)</h2>\n<p>I also created sensor RNN model. This may be an attempt that many participants have not made.</p>\n<ul>\n<li>Apply anti-aliasing filter to sensor data and resample them to sampling rate 0.1 seconds to reduce data.</li>\n<li>Try LSTM and GRU and ensemble them.</li>\n<li>Error estimation based on ensemble variance.</li>\n<li>Calibrate scale and rotation for each device using device leak. This boosts public/private LB 0.03m.</li>\n<li>Adding uncalibrated data didn't work for my model.</li>\n</ul>\n<h2>Post-processing</h2>\n<ul>\n<li>My cost minimization notebook is equivalent to Kalman smoother (See <a href=\"https://www.kaggle.com/saitodevel01/background-ideas-of-cost-minimization-notebook\" target=\"_blank\">this notebook</a> for detail).</li>\n<li>Parameters of cost function are determined by error estimation of wifi and sensor models.</li>\n<li>Heuristics that gradually replace wifi predictions with nearest neighbor grid points.</li>\n<li>Use additional grid points generated by <a href=\"https://www.kaggle.com/saitodevel01/generate-extra-grid-points\" target=\"_blank\">this code</a>.</li>\n<li><a href=\"https://www.kaggle.com/saitodevel01/11-pseudo-labeling-from-lb-2-586-with-retry\" target=\"_blank\">I published our final submission code.</a></li>\n</ul>",
      "rawMarkdown": "Congrats to all the winners!\nAnd I must apologize Kaggle community for [cheating](https://www.kaggle.com/c/indoor-location-navigation/discussion/235813). This competition was so hard that I made a mistake. \nHere, I want to share my part of our team's solution.  (My teammate higepon's part is [here](https://www.kaggle.com/c/indoor-location-navigation/discussion/239919))\n\n## Wifi models (floor and absolute position)\n\nMy wifi model is CNN. Divide ±10 seconds into 5 sections and create (1, 5, rssi) images as input feature.\n\n+ Adding ibeacon's rssi in input features.\n+ Site specific models.\n+ Use compute_step_positions of host code for data augmentation.\n+ Use StratifiedGroupKFold (label=floor, group=path) for both floor and position models.\n+ Error estimation based on variance between different models (including public notebooks).\n+ My wifi model's performance is poor compared to the models discussed [here](https://www.kaggle.com/c/indoor-location-navigation/discussion/232995). (CV/LB : 7.1 to 7.3) But relatively small gap between CV, public LB and private LB.\n+ Thank you very much @higepon for this part.\n\n## Sensor models (relative position)\n\nI also created sensor RNN model. This may be an attempt that many participants have not made.\n\n+ Apply anti-aliasing filter to sensor data and resample them to sampling rate 0.1 seconds to reduce data.\n+ Try LSTM and GRU and ensemble them.\n+ Error estimation based on ensemble variance.\n+ Calibrate scale and rotation for each device using device leak. This boosts public/private LB 0.03m.\n+ Adding uncalibrated data didn't work for my model.\n\n## Post-processing\n\n+ My cost minimization notebook is equivalent to Kalman smoother (See [this notebook](https://www.kaggle.com/saitodevel01/background-ideas-of-cost-minimization-notebook) for detail).\n+ Parameters of cost function are determined by error estimation of wifi and sensor models.\n+ Heuristics that gradually replace wifi predictions with nearest neighbor grid points.\n+ Use additional grid points generated by [this code](https://www.kaggle.com/saitodevel01/generate-extra-grid-points).\n+ [I published our final submission code.](https://www.kaggle.com/saitodevel01/11-pseudo-labeling-from-lb-2-586-with-retry)",
      "votes": null
    },
    {
      "id": "1313615",
      "postDate": "05/18/2021 16:15:08",
      "content": "<p>Hey man, that's not cheating. You explored something, shared it on the forum, and I believe you didn't use it finally. Some kaggle competitions do allow hand labeling.  it is a case-by-case thing.</p>",
      "rawMarkdown": "Hey man, that's not cheating. You explored something, shared it on the forum, and I believe you didn't use it finally. Some kaggle competitions do allow hand labeling.  it is a case-by-case thing.",
      "votes": null
    },
    {
      "id": "1313717",
      "postDate": "05/18/2021 17:11:16",
      "content": "<p>Thank you for your comment.<br>\nThe criteria for OK/NG is difficult for Kaggle beginners. So I would not use hand labeling in Kaggle anymore.<br>\nAnd, your comment \"the most magical kernel\" was very impressive for me. Thank you very much.</p>",
      "rawMarkdown": "Thank you for your comment.\nThe criteria for OK/NG is difficult for Kaggle beginners. So I would not use hand labeling in Kaggle anymore.\nAnd, your comment \"the most magical kernel\" was very impressive for me. Thank you very much.",
      "votes": null
    },
    {
      "id": "1313807",
      "postDate": "05/18/2021 18:19:22",
      "content": "<p>For even experienced kagglers, this case is really difficult to judge, because it's unclear whether hand-labelled possible missing grids are hand-labelling for test set or training set. We all know your team did NOT cheat, and your team has been always very fair. </p>",
      "rawMarkdown": "For even experienced kagglers, this case is really difficult to judge, because it's unclear whether hand-labelled possible missing grids are hand-labelling for test set or training set. We all know your team did NOT cheat, and your team has been always very fair.",
      "votes": null
    },
    {
      "id": "1313819",
      "postDate": "05/18/2021 18:23:18",
      "content": "<p>Thanks akio, I sincerely respect your great achievement and this fair and open attitude. Without your great cost minimizaiton notebook, our team could never have been 2nd. I believe you are the person who is most respected by the participants of this competition.</p>",
      "rawMarkdown": "Thanks akio, I sincerely respect your great achievement and this fair and open attitude. Without your great cost minimizaiton notebook, our team could never have been 2nd. I believe you are the person who is most respected by the participants of this competition.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1313615,
      "author_name": "jiweiliu",
      "author_url": "",
      "post_date": "05/18/2021 16:15:08",
      "content": "<p>Hey man, that's not cheating. You explored something, shared it on the forum, and I believe you didn't use it finally. Some kaggle competitions do allow hand labeling.  it is a case-by-case thing.</p>",
      "votes": null,
      "replies": [
        {
          "id": 1313717,
          "author_name": "saitodevel01",
          "author_url": "",
          "post_date": "05/18/2021 17:11:16",
          "content": "<p>Thank you for your comment.<br>\nThe criteria for OK/NG is difficult for Kaggle beginners. So I would not use hand labeling in Kaggle anymore.<br>\nAnd, your comment \"the most magical kernel\" was very impressive for me. Thank you very much.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1313807,
          "author_name": "mamasinkgs",
          "author_url": "",
          "post_date": "05/18/2021 18:19:22",
          "content": "<p>For even experienced kagglers, this case is really difficult to judge, because it's unclear whether hand-labelled possible missing grids are hand-labelling for test set or training set. We all know your team did NOT cheat, and your team has been always very fair. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1313819,
      "author_name": "mamasinkgs",
      "author_url": "",
      "post_date": "05/18/2021 18:23:18",
      "content": "<p>Thanks akio, I sincerely respect your great achievement and this fair and open attitude. Without your great cost minimizaiton notebook, our team could never have been 2nd. I believe you are the person who is most respected by the participants of this competition.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1313372": "Congrats to all the winners!\nAnd I must apologize Kaggle community for [cheating](https://www.kaggle.com/c/indoor-location-navigation/discussion/235813). This competition was so hard that I made a mistake. \nHere, I want to share my part of our team's solution.  (My teammate higepon's part is [here](https://www.kaggle.com/c/indoor-location-navigation/discussion/239919))\n\n## Wifi models (floor and absolute position)\n\nMy wifi model is CNN. Divide ±10 seconds into 5 sections and create (1, 5, rssi) images as input feature.\n\n+ Adding ibeacon's rssi in input features.\n+ Site specific models.\n+ Use compute_step_positions of host code for data augmentation.\n+ Use StratifiedGroupKFold (label=floor, group=path) for both floor and position models.\n+ Error estimation based on variance between different models (including public notebooks).\n+ My wifi model's performance is poor compared to the models discussed [here](https://www.kaggle.com/c/indoor-location-navigation/discussion/232995). (CV/LB : 7.1 to 7.3) But relatively small gap between CV, public LB and private LB.\n+ Thank you very much @higepon for this part.\n\n## Sensor models (relative position)\n\nI also created sensor RNN model. This may be an attempt that many participants have not made.\n\n+ Apply anti-aliasing filter to sensor data and resample them to sampling rate 0.1 seconds to reduce data.\n+ Try LSTM and GRU and ensemble them.\n+ Error estimation based on ensemble variance.\n+ Calibrate scale and rotation for each device using device leak. This boosts public/private LB 0.03m.\n+ Adding uncalibrated data didn't work for my model.\n\n## Post-processing\n\n+ My cost minimization notebook is equivalent to Kalman smoother (See [this notebook](https://www.kaggle.com/saitodevel01/background-ideas-of-cost-minimization-notebook) for detail).\n+ Parameters of cost function are determined by error estimation of wifi and sensor models.\n+ Heuristics that gradually replace wifi predictions with nearest neighbor grid points.\n+ Use additional grid points generated by [this code](https://www.kaggle.com/saitodevel01/generate-extra-grid-points).\n+ [I published our final submission code.](https://www.kaggle.com/saitodevel01/11-pseudo-labeling-from-lb-2-586-with-retry)",
    "1313615": "Hey man, that's not cheating. You explored something, shared it on the forum, and I believe you didn't use it finally. Some kaggle competitions do allow hand labeling.  it is a case-by-case thing.",
    "1313717": "Thank you for your comment.\nThe criteria for OK/NG is difficult for Kaggle beginners. So I would not use hand labeling in Kaggle anymore.\nAnd, your comment \"the most magical kernel\" was very impressive for me. Thank you very much.",
    "1313807": "For even experienced kagglers, this case is really difficult to judge, because it's unclear whether hand-labelled possible missing grids are hand-labelling for test set or training set. We all know your team did NOT cheat, and your team has been always very fair.",
    "1313819": "Thanks akio, I sincerely respect your great achievement and this fair and open attitude. Without your great cost minimizaiton notebook, our team could never have been 2nd. I believe you are the person who is most respected by the participants of this competition."
  },
  "source": "meta"
}