{
  "id": 405034,
  "title": "15th place solution",
  "url": "/competitions/icecube-neutrinos-in-deep-ice/writeups/kaira-15th-place-solution",
  "author_name": "",
  "post_date": "2023-04-27T01:01:34.813Z",
  "votes": 13,
  "comment_count": 5,
  "views": 0,
  "content": "<p>First of all, we want to thank Kaggle team and the organizer for holding this amazing competition. In addition, we appreciate the people who shared their amazing notebooks and insightful ideas about this competition.</p>\n<p>Unfortunately, we could not reach a gold medal, but we will share a brief explanation of our solution.</p>\n<hr>\n<ol>\n<li>model<br>\ncustom DNN (based on <a href=\"https://www.kaggle.com/code/anjum48/early-sharing-prize-dynedge-1-046\" target=\"_blank\">this</a>) <br>\nWe trained 4fold (out of 100fold cv) DNN and ensembled them with simple averaging.<br>\nWe tried RNN, LSTM, or transformer, but because of limited time and computer resources, could not make them work.</li>\n<li>data<br>\nWe picked 200 pulses per event based on auxiliary, valid time window, and charge.</li>\n<li>features<br>\nWe chose [x, y, z, time, charge, auxiliary, valid_time_window, string, qe, scatter, absorption] as input features based on small data experiments. Maybe some of them are not necessary for big data training because the model can implicitly learn them from data. But we don't have much time to check, so we left them.</li>\n<li>prediction<br>\nWe made the model to predict the (x, y, z) direction from where neutrinos came and to where they go. During training, we calculated losses for each of them. In Inference time, we flipped one of them, averaged them, and got one (x, y, z) direction.</li>\n<li>loss function<br>\nWe used VonMisesFisher3DLoss. We checked other losses or binning&amp;classification, but this gave us the best result.</li>\n<li>others<br>\nWe utilized polars for data processing. The processing speed was very fast, and our best score submission took only about 30min.<br>\nThis is a regret, but we got a fairly good score with GNN and a little effort and persisted in improving their scores. Reading top-ranked teams' solutions, we thought we should have a more wide view and try various solutions.</li>\n</ol>\n<hr>\n<p><a href=\"https://www.kaggle.com/code/ludditep/15th-place-dynedge-2-direction-prediction\" target=\"_blank\">Inference code</a></p>\n<p>株式会社Rist様・株式会社スクラムサイン様、スポンサーとしてKaiRAとそこに所属する学生の学びを支えてくださり、ありがとうございます。KaiRAを代表してお礼を申し上げます。</p>",
  "messages": [
    {
      "id": "2235345",
      "postDate": "04/26/2023 01:23:15",
      "content": "<p>First of all, we want to thank Kaggle team and the organizer for holding this amazing competition. In addition, we appreciate the people who shared their amazing notebooks and insightful ideas about this competition.</p>\n<p>Unfortunately, we could not reach a gold medal, but we will share a brief explanation of our solution.</p>\n<hr>\n<ol>\n<li>model<br>\ncustom DNN (based on <a href=\"https://www.kaggle.com/code/anjum48/early-sharing-prize-dynedge-1-046\" target=\"_blank\">this</a>) <br>\nWe trained 4fold (out of 100fold cv) DNN and ensembled them with simple averaging.<br>\nWe tried RNN, LSTM, or transformer, but because of limited time and computer resources, could not make them work.</li>\n<li>data<br>\nWe picked 200 pulses per event based on auxiliary, valid time window, and charge.</li>\n<li>features<br>\nWe chose [x, y, z, time, charge, auxiliary, valid_time_window, string, qe, scatter, absorption] as input features based on small data experiments. Maybe some of them are not necessary for big data training because the model can implicitly learn them from data. But we don't have much time to check, so we left them.</li>\n<li>prediction<br>\nWe made the model to predict the (x, y, z) direction from where neutrinos came and to where they go. During training, we calculated losses for each of them. In Inference time, we flipped one of them, averaged them, and got one (x, y, z) direction.</li>\n<li>loss function<br>\nWe used VonMisesFisher3DLoss. We checked other losses or binning&amp;classification, but this gave us the best result.</li>\n<li>others<br>\nWe utilized polars for data processing. The processing speed was very fast, and our best score submission took only about 30min.<br>\nThis is a regret, but we got a fairly good score with GNN and a little effort and persisted in improving their scores. Reading top-ranked teams' solutions, we thought we should have a more wide view and try various solutions.</li>\n</ol>\n<hr>\n<p><a href=\"https://www.kaggle.com/code/ludditep/15th-place-dynedge-2-direction-prediction\" target=\"_blank\">Inference code</a></p>\n<p>株式会社Rist様・株式会社スクラムサイン様、スポンサーとしてKaiRAとそこに所属する学生の学びを支えてくださり、ありがとうございます。KaiRAを代表してお礼を申し上げます。</p>",
      "rawMarkdown": "First of all, we want to thank Kaggle team and the organizer for holding this amazing competition. In addition, we appreciate the people who shared their amazing notebooks and insightful ideas about this competition.\n\nUnfortunately, we could not reach a gold medal, but we will share a brief explanation of our solution.\n\n********\n1. model\ncustom DNN (based on [this](https://www.kaggle.com/code/anjum48/early-sharing-prize-dynedge-1-046)) \nWe trained 4fold (out of 100fold cv) DNN and ensembled them with simple averaging.\nWe tried RNN, LSTM, or transformer, but because of limited time and computer resources, could not make them work.\n2. data\nWe picked 200 pulses per event based on auxiliary, valid time window, and charge.\n3. features\nWe chose [x, y, z, time, charge, auxiliary, valid_time_window, string, qe, scatter, absorption] as input features based on small data experiments. Maybe some of them are not necessary for big data training because the model can implicitly learn them from data. But we don't have much time to check, so we left them.\n4. prediction\nWe made the model to predict the (x, y, z) direction from where neutrinos came and to where they go. During training, we calculated losses for each of them. In Inference time, we flipped one of them, averaged them, and got one (x, y, z) direction.\n5. loss function\nWe used VonMisesFisher3DLoss. We checked other losses or binning&classification, but this gave us the best result.\n6. others\nWe utilized polars for data processing. The processing speed was very fast, and our best score submission took only about 30min.\nThis is a regret, but we got a fairly good score with GNN and a little effort and persisted in improving their scores. Reading top-ranked teams' solutions, we thought we should have a more wide view and try various solutions.\n\n********\n\n\n[Inference code](https://www.kaggle.com/code/ludditep/15th-place-dynedge-2-direction-prediction)\n\n\n株式会社Rist様・株式会社スクラムサイン様、スポンサーとしてKaiRAとそこに所属する学生の学びを支えてくださり、ありがとうございます。KaiRAを代表してお礼を申し上げます。",
      "votes": null
    },
    {
      "id": "2235459",
      "postDate": "04/26/2023 04:21:26",
      "content": "<p>Looking forward to it.</p>",
      "rawMarkdown": "Looking forward to it.",
      "votes": null
    },
    {
      "id": "2235501",
      "postDate": "04/26/2023 05:06:53",
      "content": "<p>Excited for it.</p>",
      "rawMarkdown": "Excited for it.",
      "votes": null
    },
    {
      "id": "2236550",
      "postDate": "04/27/2023 01:02:38",
      "content": "<p>We updated our solution. If you have a question, ask us freely.</p>",
      "rawMarkdown": "We updated our solution. If you have a question, ask us freely.",
      "votes": null
    },
    {
      "id": "2237156",
      "postDate": "04/27/2023 12:16:34",
      "content": "<p>Congratulations!<br>\nI am amazed that you have achieved such a good score only with GNN!<br>\nWere there any successful efforts in the use of GNN other than written in the solution?</p>",
      "rawMarkdown": "Congratulations!\nI am amazed that you have achieved such a good score only with GNN!\nWere there any successful efforts in the use of GNN other than written in the solution?",
      "votes": null
    },
    {
      "id": "2237271",
      "postDate": "04/27/2023 14:05:19",
      "content": "<p>Thank you.<br>\nAs mentioned in other teams' solutions, random pulse sampling gave us a slightly better score. We also tried x-y 180° rotation TTA and this improved the score by 0.000X. But we dropped these ideas as meaningless noise.<br>\nWhat most worked was a 2-direction prediction, and this improved the score by 0.015. I think this works as some kind of ensemble, and force the model to look at later pulses.</p>",
      "rawMarkdown": "Thank you.\nAs mentioned in other teams' solutions, random pulse sampling gave us a slightly better score. We also tried x-y 180° rotation TTA and this improved the score by 0.000X. But we dropped these ideas as meaningless noise.\nWhat most worked was a 2-direction prediction, and this improved the score by 0.015. I think this works as some kind of ensemble, and force the model to look at later pulses.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 2235459,
      "author_name": "axoncode",
      "author_url": "",
      "post_date": "04/26/2023 04:21:26",
      "content": "<p>Looking forward to it.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2235501,
      "author_name": "ericka42",
      "author_url": "",
      "post_date": "04/26/2023 05:06:53",
      "content": "<p>Excited for it.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2236550,
      "author_name": "ludditep",
      "author_url": "",
      "post_date": "04/27/2023 01:02:38",
      "content": "<p>We updated our solution. If you have a question, ask us freely.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2237156,
      "author_name": "gyozzza",
      "author_url": "",
      "post_date": "04/27/2023 12:16:34",
      "content": "<p>Congratulations!<br>\nI am amazed that you have achieved such a good score only with GNN!<br>\nWere there any successful efforts in the use of GNN other than written in the solution?</p>",
      "votes": null,
      "replies": [
        {
          "id": 2237271,
          "author_name": "ludditep",
          "author_url": "",
          "post_date": "04/27/2023 14:05:19",
          "content": "<p>Thank you.<br>\nAs mentioned in other teams' solutions, random pulse sampling gave us a slightly better score. We also tried x-y 180° rotation TTA and this improved the score by 0.000X. But we dropped these ideas as meaningless noise.<br>\nWhat most worked was a 2-direction prediction, and this improved the score by 0.015. I think this works as some kind of ensemble, and force the model to look at later pulses.</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "2235345": "First of all, we want to thank Kaggle team and the organizer for holding this amazing competition. In addition, we appreciate the people who shared their amazing notebooks and insightful ideas about this competition.\n\nUnfortunately, we could not reach a gold medal, but we will share a brief explanation of our solution.\n\n********\n1. model\ncustom DNN (based on [this](https://www.kaggle.com/code/anjum48/early-sharing-prize-dynedge-1-046)) \nWe trained 4fold (out of 100fold cv) DNN and ensembled them with simple averaging.\nWe tried RNN, LSTM, or transformer, but because of limited time and computer resources, could not make them work.\n2. data\nWe picked 200 pulses per event based on auxiliary, valid time window, and charge.\n3. features\nWe chose [x, y, z, time, charge, auxiliary, valid_time_window, string, qe, scatter, absorption] as input features based on small data experiments. Maybe some of them are not necessary for big data training because the model can implicitly learn them from data. But we don't have much time to check, so we left them.\n4. prediction\nWe made the model to predict the (x, y, z) direction from where neutrinos came and to where they go. During training, we calculated losses for each of them. In Inference time, we flipped one of them, averaged them, and got one (x, y, z) direction.\n5. loss function\nWe used VonMisesFisher3DLoss. We checked other losses or binning&classification, but this gave us the best result.\n6. others\nWe utilized polars for data processing. The processing speed was very fast, and our best score submission took only about 30min.\nThis is a regret, but we got a fairly good score with GNN and a little effort and persisted in improving their scores. Reading top-ranked teams' solutions, we thought we should have a more wide view and try various solutions.\n\n********\n\n\n[Inference code](https://www.kaggle.com/code/ludditep/15th-place-dynedge-2-direction-prediction)\n\n\n株式会社Rist様・株式会社スクラムサイン様、スポンサーとしてKaiRAとそこに所属する学生の学びを支えてくださり、ありがとうございます。KaiRAを代表してお礼を申し上げます。",
    "2235459": "Looking forward to it.",
    "2235501": "Excited for it.",
    "2236550": "We updated our solution. If you have a question, ask us freely.",
    "2237156": "Congratulations!\nI am amazed that you have achieved such a good score only with GNN!\nWere there any successful efforts in the use of GNN other than written in the solution?",
    "2237271": "Thank you.\nAs mentioned in other teams' solutions, random pulse sampling gave us a slightly better score. We also tried x-y 180° rotation TTA and this improved the score by 0.000X. But we dropped these ideas as meaningless noise.\nWhat most worked was a 2-direction prediction, and this improved the score by 0.015. I think this works as some kind of ensemble, and force the model to look at later pulses."
  },
  "source": "meta"
}