{
  "id": 261739,
  "title": "5th Place Solution(Part of Algorithms)",
  "url": "/competitions/google-smartphone-decimeter-challenge/discussion/261739",
  "author_name": "213tubo",
  "post_date": "2021-08-05T00:47:38.469000",
  "votes": 45,
  "comment_count": 1,
  "views": 0,
  "content": "<h1>5th Place Solution(Part of Algorithms)</h1>\n<p><img src=\"https://user-images.githubusercontent.com/74698040/128273675-5bbfa9c2-711c-454d-bd42-04eaef883a53.png\" alt=\"image\"></p>\n<p>First of all, I would like to thank the Kaggle management for organizing a great competition, my teammates for fighting with me.<br>\nOur team is divided into three main parts.<br>\nIn this discussion, we will explain the post-processing created by tubo, colum2131, and penguin46.</p>\n<p>The post-processing we created worked well with Akio-pp.<br>\nSo, PublicLB improved from 3.515 to 3.191.<br>\nThe post-processing that was finally incorporated into the pipeline is as follows.</p>\n<h2>kNNHeight</h2>\n<p>Map the latitude and longitude from the ground truth to the correct altitude.<br>\nIf there is a discrepancy between the predicted altitude and the output of this model, the accuracy of the satellite positioning can be expected to be poor.</p>\n<h2>Outlier Detection</h2>\n<p>Predict the probability of being an outlier using the relative coordinates (calculated from the absolute coordinates) of the surrounding about 50 seconds as a feature.<br>\nIn the case of Downtown, the distance to the ground truth is added to the feature value.<br>\nIf the absolute position prediction is outputting the altitude, add the difference from the kNN output.</p>\n<h2>Interpolate Outliers by Relpositions</h2>\n<p>We change the threshold and the direction of interpolation as follows, and after 20 predictions, we take a weighted average using the threshold.</p>\n<ol>\n<li>take 10 threshold values at equal intervals within 0.1-0.5.<br>\na. where the threshold is exceeded, it is considered as an outlier and replaced by nan.<br>\nb. accumulate the relative coordinates from the nearest non-nan point and prepare one new absolute coordinate. (There are two ways to do this: forward and reverse.)</li>\n<li>replace the predicted value with a weighted average of these 20 with \"1/threshold\".</li>\n</ol>\n<h2>Stop Mean</h2>\n<p>As in outlier detection, the stop point is predicted from relative coordinates.</p>\n<h2>The post-processes which lost their positions by Akio-pp</h2>\n<p>The following post-processing was included in the pipeline until we teamed up with Saito. However, his post-processing was so powerful that we did not include it in the final pipeline.</p>\n<ul>\n<li><p>Relpos Outlier Detection  <br>\nDetects relative position outliers as well as absolute coordinates to improve accuracy.</p></li>\n<li><p>KalmanFilter  <br>\nKalman filter considering relative and absolute positions.</p></li>\n<li><p>SateliteMean  <br>\nAveraging phone with 1/(psuedorangesigma)**2 as weights</p></li>\n<li><p>Snap to Grid  <br>\nIn SJC, we snap the prediction to the nearest neighbor of ground_truth.</p></li>\n</ul>\n<h2>Not Work</h2>\n<ul>\n<li><p>Bias correction for terminal spacing  <br>\nIn reality, the terminals are about 20cm apart from each other, so we attempted to compensate for the bias there.</p></li>\n<li><p>BeamSearch<br>\nWe tried BeamSearch, which mimics Saito's optimization, but it didn't give our very good results.</p></li>\n<li><p>Outlier detection using images  <br>\nWe created a model to image each point in matplotlib and determine if it is an outlier or not.(only SJC)<br>\nThe accuracy was about 86%, but there was no contribution to CV and LB in the final pipeline.</p></li>\n</ul>",
  "messages": [
    {
      "id": 1449792,
      "postDate": "2021-08-05T00:47:38.470Z",
      "content": "<h1>5th Place Solution(Part of Algorithms)</h1>\n<p><img src=\"https://user-images.githubusercontent.com/74698040/128273675-5bbfa9c2-711c-454d-bd42-04eaef883a53.png\" alt=\"image\"></p>\n<p>First of all, I would like to thank the Kaggle management for organizing a great competition, my teammates for fighting with me.<br>\nOur team is divided into three main parts.<br>\nIn this discussion, we will explain the post-processing created by tubo, colum2131, and penguin46.</p>\n<p>The post-processing we created worked well with Akio-pp.<br>\nSo, PublicLB improved from 3.515 to 3.191.<br>\nThe post-processing that was finally incorporated into the pipeline is as follows.</p>\n<h2>kNNHeight</h2>\n<p>Map the latitude and longitude from the ground truth to the correct altitude.<br>\nIf there is a discrepancy between the predicted altitude and the output of this model, the accuracy of the satellite positioning can be expected to be poor.</p>\n<h2>Outlier Detection</h2>\n<p>Predict the probability of being an outlier using the relative coordinates (calculated from the absolute coordinates) of the surrounding about 50 seconds as a feature.<br>\nIn the case of Downtown, the distance to the ground truth is added to the feature value.<br>\nIf the absolute position prediction is outputting the altitude, add the difference from the kNN output.</p>\n<h2>Interpolate Outliers by Relpositions</h2>\n<p>We change the threshold and the direction of interpolation as follows, and after 20 predictions, we take a weighted average using the threshold.</p>\n<ol>\n<li>take 10 threshold values at equal intervals within 0.1-0.5.<br>\na. where the threshold is exceeded, it is considered as an outlier and replaced by nan.<br>\nb. accumulate the relative coordinates from the nearest non-nan point and prepare one new absolute coordinate. (There are two ways to do this: forward and reverse.)</li>\n<li>replace the predicted value with a weighted average of these 20 with \"1/threshold\".</li>\n</ol>\n<h2>Stop Mean</h2>\n<p>As in outlier detection, the stop point is predicted from relative coordinates.</p>\n<h2>The post-processes which lost their positions by Akio-pp</h2>\n<p>The following post-processing was included in the pipeline until we teamed up with Saito. However, his post-processing was so powerful that we did not include it in the final pipeline.</p>\n<ul>\n<li><p>Relpos Outlier Detection  <br>\nDetects relative position outliers as well as absolute coordinates to improve accuracy.</p></li>\n<li><p>KalmanFilter  <br>\nKalman filter considering relative and absolute positions.</p></li>\n<li><p>SateliteMean  <br>\nAveraging phone with 1/(psuedorangesigma)**2 as weights</p></li>\n<li><p>Snap to Grid  <br>\nIn SJC, we snap the prediction to the nearest neighbor of ground_truth.</p></li>\n</ul>\n<h2>Not Work</h2>\n<ul>\n<li><p>Bias correction for terminal spacing  <br>\nIn reality, the terminals are about 20cm apart from each other, so we attempted to compensate for the bias there.</p></li>\n<li><p>BeamSearch<br>\nWe tried BeamSearch, which mimics Saito's optimization, but it didn't give our very good results.</p></li>\n<li><p>Outlier detection using images  <br>\nWe created a model to image each point in matplotlib and determine if it is an outlier or not.(only SJC)<br>\nThe accuracy was about 86%, but there was no contribution to CV and LB in the final pipeline.</p></li>\n</ul>",
      "rawMarkdown": "# 5th Place Solution(Part of Algorithms)\n\n![image](https://user-images.githubusercontent.com/74698040/128273675-5bbfa9c2-711c-454d-bd42-04eaef883a53.png)\n\nFirst of all, I would like to thank the Kaggle management for organizing a great competition, my teammates for fighting with me.\nOur team is divided into three main parts.\nIn this discussion, we will explain the post-processing created by tubo, colum2131, and penguin46.\n\nThe post-processing we created worked well with Akio-pp.\nSo, PublicLB improved from 3.515 to 3.191.\nThe post-processing that was finally incorporated into the pipeline is as follows.\n\n## kNNHeight\nMap the latitude and longitude from the ground truth to the correct altitude.\nIf there is a discrepancy between the predicted altitude and the output of this model, the accuracy of the satellite positioning can be expected to be poor.\n\n\n## Outlier Detection\nPredict the probability of being an outlier using the relative coordinates (calculated from the absolute coordinates) of the surrounding about 50 seconds as a feature.\nIn the case of Downtown, the distance to the ground truth is added to the feature value.\nIf the absolute position prediction is outputting the altitude, add the difference from the kNN output.\n\n\n## Interpolate Outliers by Relpositions\nWe change the threshold and the direction of interpolation as follows, and after 20 predictions, we take a weighted average using the threshold.\n1. take 10 threshold values at equal intervals within 0.1-0.5.\n   a. where the threshold is exceeded, it is considered as an outlier and replaced by nan.\n   b. accumulate the relative coordinates from the nearest non-nan point and prepare one new absolute coordinate. (There are two ways to do this: forward and reverse.)\n2. replace the predicted value with a weighted average of these 20 with \"1/threshold\".\n\n\n## Stop Mean\nAs in outlier detection, the stop point is predicted from relative coordinates.\n\n\n## The post-processes which lost their positions by Akio-pp\nThe following post-processing was included in the pipeline until we teamed up with Saito. However, his post-processing was so powerful that we did not include it in the final pipeline.\n\n- Relpos Outlier Detection  \nDetects relative position outliers as well as absolute coordinates to improve accuracy.\n\n- KalmanFilter  \nKalman filter considering relative and absolute positions.\n\n- SateliteMean  \nAveraging phone with 1/(psuedorangesigma)**2 as weights\n\n- Snap to Grid  \nIn SJC, we snap the prediction to the nearest neighbor of ground_truth.\n\n## Not Work\n\n- Bias correction for terminal spacing  \nIn reality, the terminals are about 20cm apart from each other, so we attempted to compensate for the bias there.\n\n- BeamSearch\nWe tried BeamSearch, which mimics Saito's optimization, but it didn't give our very good results.\n\n- Outlier detection using images  \nWe created a model to image each point in matplotlib and determine if it is an outlier or not.(only SJC)\nThe accuracy was about 86%, but there was no contribution to CV and LB in the final pipeline.",
      "votes": 45
    },
    {
      "id": 1451110,
      "postDate": "2021-08-05T09:03:27.023Z",
      "rawMarkdown": "",
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 1451110,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-08-05T09:03:27.023000",
      "content": "",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1449792": "# 5th Place Solution(Part of Algorithms)\n\n![image](https://user-images.githubusercontent.com/74698040/128273675-5bbfa9c2-711c-454d-bd42-04eaef883a53.png)\n\nFirst of all, I would like to thank the Kaggle management for organizing a great competition, my teammates for fighting with me.\nOur team is divided into three main parts.\nIn this discussion, we will explain the post-processing created by tubo, colum2131, and penguin46.\n\nThe post-processing we created worked well with Akio-pp.\nSo, PublicLB improved from 3.515 to 3.191.\nThe post-processing that was finally incorporated into the pipeline is as follows.\n\n## kNNHeight\nMap the latitude and longitude from the ground truth to the correct altitude.\nIf there is a discrepancy between the predicted altitude and the output of this model, the accuracy of the satellite positioning can be expected to be poor.\n\n\n## Outlier Detection\nPredict the probability of being an outlier using the relative coordinates (calculated from the absolute coordinates) of the surrounding about 50 seconds as a feature.\nIn the case of Downtown, the distance to the ground truth is added to the feature value.\nIf the absolute position prediction is outputting the altitude, add the difference from the kNN output.\n\n\n## Interpolate Outliers by Relpositions\nWe change the threshold and the direction of interpolation as follows, and after 20 predictions, we take a weighted average using the threshold.\n1. take 10 threshold values at equal intervals within 0.1-0.5.\n   a. where the threshold is exceeded, it is considered as an outlier and replaced by nan.\n   b. accumulate the relative coordinates from the nearest non-nan point and prepare one new absolute coordinate. (There are two ways to do this: forward and reverse.)\n2. replace the predicted value with a weighted average of these 20 with \"1/threshold\".\n\n\n## Stop Mean\nAs in outlier detection, the stop point is predicted from relative coordinates.\n\n\n## The post-processes which lost their positions by Akio-pp\nThe following post-processing was included in the pipeline until we teamed up with Saito. However, his post-processing was so powerful that we did not include it in the final pipeline.\n\n- Relpos Outlier Detection  \nDetects relative position outliers as well as absolute coordinates to improve accuracy.\n\n- KalmanFilter  \nKalman filter considering relative and absolute positions.\n\n- SateliteMean  \nAveraging phone with 1/(psuedorangesigma)**2 as weights\n\n- Snap to Grid  \nIn SJC, we snap the prediction to the nearest neighbor of ground_truth.\n\n## Not Work\n\n- Bias correction for terminal spacing  \nIn reality, the terminals are about 20cm apart from each other, so we attempted to compensate for the bias there.\n\n- BeamSearch\nWe tried BeamSearch, which mimics Saito's optimization, but it didn't give our very good results.\n\n- Outlier detection using images  \nWe created a model to image each point in matplotlib and determine if it is an outlier or not.(only SJC)\nThe accuracy was about 86%, but there was no contribution to CV and LB in the final pipeline.",
    "1451110": ""
  }
}