{
  "id": 220651,
  "title": "short 25th place Solution & Comment & Code",
  "url": "/competitions/cassava-leaf-disease-classification/discussion/220651",
  "author_name": "",
  "post_date": "2021-02-19T04:48:55.774877800Z",
  "votes": 30,
  "comment_count": 7,
  "views": 0,
  "content": "<p>Hi all, I am writing this solution to acknowledge what my teammates <a href=\"https://www.kaggle.com/tiandaye\" target=\"_blank\">@tiandaye</a> <a href=\"https://www.kaggle.com/steamedsheep\" target=\"_blank\">@steamedsheep</a> <a href=\"https://www.kaggle.com/yingpengchen\" target=\"_blank\">@yingpengchen</a> have done and the hardwork they put in. Please congrats to <a href=\"https://www.kaggle.com/tiandaye\" target=\"_blank\">@tiandaye</a> for being a <strong>competition master</strong>. This post will not be long as I personally found little value of this competition (you may disagree but that's what I think). I also want to apologize to all my teammates for what I have decided as the team leader: I decided not to include our best LB (that would land us 3rd place) but to include the best CVs; I am really sorry for all of you missing the gold medal and prize money.</p>\n<h2>Solution (TL;DR)</h2>\n<ol>\n<li>OAV(online adversarial validation) -&gt; conclusion: train test are split at random</li>\n<li>Denoiser trained with no margin cosine loss -&gt; clean training set and maintain validation set -&gt; cv boost 0.001+</li>\n<li>Another trick is to use the MSE loss, it's much more robust to noise than all the loss functions posted on discussion</li>\n<li>trained 13 models blend/stack with CV 0.908 and 0.910, respectively -&gt; both private LB 0.899 (excuse me?)</li>\n<li>post processing: class4 (healthy) * 0.9 -&gt; private LB 0.899 -&gt; 0.901</li>\n<li>Quite 'interesting' competition that CV doesn't matter LOL??<br>\n<img src=\"https://github.com/kagglesintracking/kaggle-Cassava-Leaf-Disease-Classification/blob/main/images/diagram.png?raw=true\"></li>\n</ol>\n<h2>Comment</h2>\n<p>What a competition! We did our absolute best to maximize CV score but the best CV(0.910) we had only gave us 0.899 on private LB. I am a bit concerned about the usefulness of the models that we created as we are training from noise to predict noise. The loss functions that people contributed to deal with noisy data are great and I have learned a lot. Additionally, the first place finish is just surreal, I am happy to read their solutions.</p>\n<h2>Code:</h2>\n<p>code is available: <a href=\"https://github.com/kagglesintracking/kaggle-Cassava-Leaf-Disease-Classification\" target=\"_blank\">https://github.com/kagglesintracking/kaggle-Cassava-Leaf-Disease-Classification</a><br>\nHowever I am too lazy to write a doc.</p>\n<h2>Additional Resources:</h2>\n<p>Luck is all you need: <a href=\"https://arxiv.org/abs/9999.99999\" target=\"_blank\">https://arxiv.org/abs/9999.99999</a></p>",
  "messages": [
    {
      "id": "1209875",
      "postDate": "02/19/2021 04:48:55",
      "content": "<p>Hi all, I am writing this solution to acknowledge what my teammates <a href=\"https://www.kaggle.com/tiandaye\" target=\"_blank\">@tiandaye</a> <a href=\"https://www.kaggle.com/steamedsheep\" target=\"_blank\">@steamedsheep</a> <a href=\"https://www.kaggle.com/yingpengchen\" target=\"_blank\">@yingpengchen</a> have done and the hardwork they put in. Please congrats to <a href=\"https://www.kaggle.com/tiandaye\" target=\"_blank\">@tiandaye</a> for being a <strong>competition master</strong>. This post will not be long as I personally found little value of this competition (you may disagree but that's what I think). I also want to apologize to all my teammates for what I have decided as the team leader: I decided not to include our best LB (that would land us 3rd place) but to include the best CVs; I am really sorry for all of you missing the gold medal and prize money.</p>\n<h2>Solution (TL;DR)</h2>\n<ol>\n<li>OAV(online adversarial validation) -&gt; conclusion: train test are split at random</li>\n<li>Denoiser trained with no margin cosine loss -&gt; clean training set and maintain validation set -&gt; cv boost 0.001+</li>\n<li>Another trick is to use the MSE loss, it's much more robust to noise than all the loss functions posted on discussion</li>\n<li>trained 13 models blend/stack with CV 0.908 and 0.910, respectively -&gt; both private LB 0.899 (excuse me?)</li>\n<li>post processing: class4 (healthy) * 0.9 -&gt; private LB 0.899 -&gt; 0.901</li>\n<li>Quite 'interesting' competition that CV doesn't matter LOL??<br>\n<img src=\"https://github.com/kagglesintracking/kaggle-Cassava-Leaf-Disease-Classification/blob/main/images/diagram.png?raw=true\"></li>\n</ol>\n<h2>Comment</h2>\n<p>What a competition! We did our absolute best to maximize CV score but the best CV(0.910) we had only gave us 0.899 on private LB. I am a bit concerned about the usefulness of the models that we created as we are training from noise to predict noise. The loss functions that people contributed to deal with noisy data are great and I have learned a lot. Additionally, the first place finish is just surreal, I am happy to read their solutions.</p>\n<h2>Code:</h2>\n<p>code is available: <a href=\"https://github.com/kagglesintracking/kaggle-Cassava-Leaf-Disease-Classification\" target=\"_blank\">https://github.com/kagglesintracking/kaggle-Cassava-Leaf-Disease-Classification</a><br>\nHowever I am too lazy to write a doc.</p>\n<h2>Additional Resources:</h2>\n<p>Luck is all you need: <a href=\"https://arxiv.org/abs/9999.99999\" target=\"_blank\">https://arxiv.org/abs/9999.99999</a></p>",
      "rawMarkdown": "Hi all, I am writing this solution to acknowledge what my teammates @tiandaye @steamedsheep @yingpengchen have done and the hardwork they put in. Please congrats to @tiandaye for being a **competition master**. This post will not be long as I personally found little value of this competition (you may disagree but that's what I think). I also want to apologize to all my teammates for what I have decided as the team leader: I decided not to include our best LB (that would land us 3rd place) but to include the best CVs; I am really sorry for all of you missing the gold medal and prize money.\n\n## Solution (TL;DR)\n1. OAV(online adversarial validation) -> conclusion: train test are split at random\n2. Denoiser trained with no margin cosine loss -> clean training set and maintain validation set -> cv boost 0.001+\n3. Another trick is to use the MSE loss, it's much more robust to noise than all the loss functions posted on discussion\n3. trained 13 models blend/stack with CV 0.908 and 0.910, respectively -> both private LB 0.899 (excuse me?)\n4. post processing: class4 (healthy) * 0.9 -> private LB 0.899 -> 0.901\n5. Quite 'interesting' competition that CV doesn't matter LOL??\n<img src='https://github.com/kagglesintracking/kaggle-Cassava-Leaf-Disease-Classification/blob/main/images/diagram.png?raw=true'>\n\n## Comment\nWhat a competition! We did our absolute best to maximize CV score but the best CV(0.910) we had only gave us 0.899 on private LB. I am a bit concerned about the usefulness of the models that we created as we are training from noise to predict noise. The loss functions that people contributed to deal with noisy data are great and I have learned a lot. Additionally, the first place finish is just surreal, I am happy to read their solutions.\n\n## Code:\ncode is available: https://github.com/kagglesintracking/kaggle-Cassava-Leaf-Disease-Classification\nHowever I am too lazy to write a doc.\n\n## Additional Resources:\nLuck is all you need: https://arxiv.org/abs/9999.99999",
      "votes": null
    },
    {
      "id": "1209898",
      "postDate": "02/19/2021 05:09:29",
      "content": "<p>You were a little out of luck this time.  Still, I think the 25th is worth it.<br>\nAlso thanks for sharing results. :)</p>\n<p>I look forward to seeing better things for you next time. <a href=\"https://www.kaggle.com/underwearfitting\" target=\"_blank\">@underwearfitting</a> </p>",
      "rawMarkdown": "You were a little out of luck this time.  Still, I think the 25th is worth it.\nAlso thanks for sharing results. :)\n\nI look forward to seeing better things for you next time. @underwearfitting",
      "votes": null
    },
    {
      "id": "1209900",
      "postDate": "02/19/2021 05:12:49",
      "content": "<p>Thanks a lot! Luck is part of the game :D</p>",
      "rawMarkdown": "Thanks a lot! Luck is part of the game :D",
      "votes": null
    },
    {
      "id": "1209904",
      "postDate": "02/19/2021 05:19:08",
      "content": "<p>thanks for sharing!!!</p>",
      "rawMarkdown": "thanks for sharing!!!",
      "votes": null
    },
    {
      "id": "1209916",
      "postDate": "02/19/2021 05:32:39",
      "content": "<p>First of all congrats!! a query How did you apply MSE loss in a classification task?<br>\nand how did you come up with the post processing?</p>",
      "rawMarkdown": "First of all congrats!! a query How did you apply MSE loss in a classification task?\nand how did you come up with the post processing?",
      "votes": null
    },
    {
      "id": "1209919",
      "postDate": "02/19/2021 05:34:15",
      "content": "<p>Ty. You can one-hot the labels and use MSELoss.</p>",
      "rawMarkdown": "Ty. You can one-hot the labels and use MSELoss.",
      "votes": null
    },
    {
      "id": "1209958",
      "postDate": "02/19/2021 06:03:12",
      "content": "<p>Congrats on the results <a href=\"https://www.kaggle.com/underwearfitting\" target=\"_blank\">@underwearfitting</a> and team</p>",
      "rawMarkdown": "Congrats on the results @underwearfitting and team",
      "votes": null
    },
    {
      "id": "1614799",
      "postDate": "12/11/2021 13:29:59",
      "content": "<p>Nice information. Hello Kegglers</p>",
      "rawMarkdown": "Nice information. Hello Kegglers",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1209898,
      "author_name": "piantic",
      "author_url": "",
      "post_date": "02/19/2021 05:09:29",
      "content": "<p>You were a little out of luck this time.  Still, I think the 25th is worth it.<br>\nAlso thanks for sharing results. :)</p>\n<p>I look forward to seeing better things for you next time. <a href=\"https://www.kaggle.com/underwearfitting\" target=\"_blank\">@underwearfitting</a> </p>",
      "votes": null,
      "replies": [
        {
          "id": 1209900,
          "author_name": "underwearfitting",
          "author_url": "",
          "post_date": "02/19/2021 05:12:49",
          "content": "<p>Thanks a lot! Luck is part of the game :D</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1209904,
      "author_name": "oscarrangel",
      "author_url": "",
      "post_date": "02/19/2021 05:19:08",
      "content": "<p>thanks for sharing!!!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1209916,
      "author_name": "mrinath",
      "author_url": "",
      "post_date": "02/19/2021 05:32:39",
      "content": "<p>First of all congrats!! a query How did you apply MSE loss in a classification task?<br>\nand how did you come up with the post processing?</p>",
      "votes": null,
      "replies": [
        {
          "id": 1209919,
          "author_name": "underwearfitting",
          "author_url": "",
          "post_date": "02/19/2021 05:34:15",
          "content": "<p>Ty. You can one-hot the labels and use MSELoss.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1209958,
      "author_name": "duykhanh99",
      "author_url": "",
      "post_date": "02/19/2021 06:03:12",
      "content": "<p>Congrats on the results <a href=\"https://www.kaggle.com/underwearfitting\" target=\"_blank\">@underwearfitting</a> and team</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1614799,
      "author_name": "hajimeharada",
      "author_url": "",
      "post_date": "12/11/2021 13:29:59",
      "content": "<p>Nice information. Hello Kegglers</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1209875": "Hi all, I am writing this solution to acknowledge what my teammates @tiandaye @steamedsheep @yingpengchen have done and the hardwork they put in. Please congrats to @tiandaye for being a **competition master**. This post will not be long as I personally found little value of this competition (you may disagree but that's what I think). I also want to apologize to all my teammates for what I have decided as the team leader: I decided not to include our best LB (that would land us 3rd place) but to include the best CVs; I am really sorry for all of you missing the gold medal and prize money.\n\n## Solution (TL;DR)\n1. OAV(online adversarial validation) -> conclusion: train test are split at random\n2. Denoiser trained with no margin cosine loss -> clean training set and maintain validation set -> cv boost 0.001+\n3. Another trick is to use the MSE loss, it's much more robust to noise than all the loss functions posted on discussion\n3. trained 13 models blend/stack with CV 0.908 and 0.910, respectively -> both private LB 0.899 (excuse me?)\n4. post processing: class4 (healthy) * 0.9 -> private LB 0.899 -> 0.901\n5. Quite 'interesting' competition that CV doesn't matter LOL??\n<img src='https://github.com/kagglesintracking/kaggle-Cassava-Leaf-Disease-Classification/blob/main/images/diagram.png?raw=true'>\n\n## Comment\nWhat a competition! We did our absolute best to maximize CV score but the best CV(0.910) we had only gave us 0.899 on private LB. I am a bit concerned about the usefulness of the models that we created as we are training from noise to predict noise. The loss functions that people contributed to deal with noisy data are great and I have learned a lot. Additionally, the first place finish is just surreal, I am happy to read their solutions.\n\n## Code:\ncode is available: https://github.com/kagglesintracking/kaggle-Cassava-Leaf-Disease-Classification\nHowever I am too lazy to write a doc.\n\n## Additional Resources:\nLuck is all you need: https://arxiv.org/abs/9999.99999",
    "1209898": "You were a little out of luck this time.  Still, I think the 25th is worth it.\nAlso thanks for sharing results. :)\n\nI look forward to seeing better things for you next time. @underwearfitting",
    "1209900": "Thanks a lot! Luck is part of the game :D",
    "1209904": "thanks for sharing!!!",
    "1209916": "First of all congrats!! a query How did you apply MSE loss in a classification task?\nand how did you come up with the post processing?",
    "1209919": "Ty. You can one-hot the labels and use MSELoss.",
    "1209958": "Congrats on the results @underwearfitting and team",
    "1614799": "Nice information. Hello Kegglers"
  },
  "source": "meta"
}