{
  "id": 220617,
  "title": "🔥🔥🔥The importance of a robust model🔥🔥🔥",
  "url": "/competitions/cassava-leaf-disease-classification/discussion/220617",
  "author_name": "",
  "post_date": "2021-02-19T01:22:19.146362500Z",
  "votes": 14,
  "comment_count": 19,
  "views": 0,
  "content": "<p>Hello, I'm a beginner at Kaggle</p>\n<p>In this competition, I focused on making a robust model rather than a public leaderboard score.</p>\n<blockquote>\n  <p>resnext 384 + resnext 512 + efficientNet_b4</p>\n  <table>\n  <thead>\n  <tr>\n  <th>Ensemble</th>\n  <th>Public Score</th>\n  <th>Private Score</th>\n  </tr>\n  </thead>\n  <tbody>\n  <tr>\n  <td>0.35 resnext512 + 0.3 efficientNet + 0.35 * resnext384</td>\n  <td>0.900</td>\n  <td>0.899</td>\n  </tr>\n  <tr>\n  <td>0.35 resnext512 + 0.35 efficientNet + 0.3 * resnext384</td>\n  <td>0.900</td>\n  <td>0.899</td>\n  </tr>\n  <tr>\n  <td>0.4 resnext512 + 0.2 efficientNet + 0.4 * resnext384</td>\n  <td>0.899</td>\n  <td>0.899</td>\n  </tr>\n  <tr>\n  <td>0.4 resnext512 + 0.4 efficientNet + 0.2 * resnext384</td>\n  <td>0.900</td>\n  <td>0.898</td>\n  </tr>\n  <tr>\n  <td>0.45 resnext512 + 0.45 efficientNet + 0.1 * resnext384</td>\n  <td>0.901</td>\n  <td>0.897</td>\n  </tr>\n  <tr>\n  <td>0.5 resnext512 + 0.25 efficientNet + 0.25 * resnext384</td>\n  <td>0.899</td>\n  <td>0.900</td>\n  </tr>\n  <tr>\n  <td>0.2 resnext512 + 0.4 efficientNet + 0.4 * resnext384</td>\n  <td>0.899</td>\n  <td>0.899</td>\n  </tr>\n  <tr>\n  <td>0.33 resnext512 + 0.34 efficientNet + 0.33 * resnext384</td>\n  <td>0.899</td>\n  <td>0.899</td>\n  </tr>\n  <tr>\n  <td>0.45 resnext512 + 0.45 efficientNet + 0.1 * resnext384</td>\n  <td>0.901</td>\n  <td>0.899</td>\n  </tr>\n  <tr>\n  <td>0.7 resnext512 + 0.2 efficientNet + 0.1 * resnext384</td>\n  <td>0.898</td>\n  <td>0.899</td>\n  </tr>\n  </tbody>\n  </table>\n  <p>resnext 512 + efficientNet_b4</p>\n  <table>\n  <thead>\n  <tr>\n  <th>Ensemble</th>\n  <th>Public Score</th>\n  <th>Private Score</th>\n  </tr>\n  </thead>\n  <tbody>\n  <tr>\n  <td>0.48 resnext512 + 0.52 efficientNet</td>\n  <td>0.902</td>\n  <td>0.896</td>\n  </tr>\n  <tr>\n  <td>0.5 resnext512 + 0.5 efficientNet</td>\n  <td>0.903</td>\n  <td>0.896</td>\n  </tr>\n  <tr>\n  <td>0.52 resnext512 + 0.48 efficientNet</td>\n  <td>0.902</td>\n  <td>0.897</td>\n  </tr>\n  <tr>\n  <td>0.51 resnext512 + 0.49 efficientNet</td>\n  <td>0.902</td>\n  <td>0.897</td>\n  </tr>\n  <tr>\n  <td>0.5 resnext384 + 0.5 efficientNet</td>\n  <td>0.900</td>\n  <td>0.897</td>\n  </tr>\n  </tbody>\n  </table>\n</blockquote>\n<p>As a result, I was able to win a silver medal for the first time! I can't believe it.</p>\n<p>Good job, everyone. Thank you.</p>\n<ul>\n<li><p>Simple My Notebook<br>\n<a href=\"https://www.kaggle.com/wonjunpark/multi-scale-resnext50-32x4d-efficientnet\" target=\"_blank\">https://www.kaggle.com/wonjunpark/multi-scale-resnext50-32x4d-efficientnet</a></p></li>\n<li><p>Custom weight<br>\n<a href=\"https://www.kaggle.com/wonjunpark/resnext50-cassava-384size\" target=\"_blank\">https://www.kaggle.com/wonjunpark/resnext50-cassava-384size</a></p></li>\n</ul>",
  "messages": [
    {
      "id": "1209624",
      "postDate": "02/19/2021 01:22:19",
      "content": "<p>Hello, I'm a beginner at Kaggle</p>\n<p>In this competition, I focused on making a robust model rather than a public leaderboard score.</p>\n<blockquote>\n  <p>resnext 384 + resnext 512 + efficientNet_b4</p>\n  <table>\n  <thead>\n  <tr>\n  <th>Ensemble</th>\n  <th>Public Score</th>\n  <th>Private Score</th>\n  </tr>\n  </thead>\n  <tbody>\n  <tr>\n  <td>0.35 resnext512 + 0.3 efficientNet + 0.35 * resnext384</td>\n  <td>0.900</td>\n  <td>0.899</td>\n  </tr>\n  <tr>\n  <td>0.35 resnext512 + 0.35 efficientNet + 0.3 * resnext384</td>\n  <td>0.900</td>\n  <td>0.899</td>\n  </tr>\n  <tr>\n  <td>0.4 resnext512 + 0.2 efficientNet + 0.4 * resnext384</td>\n  <td>0.899</td>\n  <td>0.899</td>\n  </tr>\n  <tr>\n  <td>0.4 resnext512 + 0.4 efficientNet + 0.2 * resnext384</td>\n  <td>0.900</td>\n  <td>0.898</td>\n  </tr>\n  <tr>\n  <td>0.45 resnext512 + 0.45 efficientNet + 0.1 * resnext384</td>\n  <td>0.901</td>\n  <td>0.897</td>\n  </tr>\n  <tr>\n  <td>0.5 resnext512 + 0.25 efficientNet + 0.25 * resnext384</td>\n  <td>0.899</td>\n  <td>0.900</td>\n  </tr>\n  <tr>\n  <td>0.2 resnext512 + 0.4 efficientNet + 0.4 * resnext384</td>\n  <td>0.899</td>\n  <td>0.899</td>\n  </tr>\n  <tr>\n  <td>0.33 resnext512 + 0.34 efficientNet + 0.33 * resnext384</td>\n  <td>0.899</td>\n  <td>0.899</td>\n  </tr>\n  <tr>\n  <td>0.45 resnext512 + 0.45 efficientNet + 0.1 * resnext384</td>\n  <td>0.901</td>\n  <td>0.899</td>\n  </tr>\n  <tr>\n  <td>0.7 resnext512 + 0.2 efficientNet + 0.1 * resnext384</td>\n  <td>0.898</td>\n  <td>0.899</td>\n  </tr>\n  </tbody>\n  </table>\n  <p>resnext 512 + efficientNet_b4</p>\n  <table>\n  <thead>\n  <tr>\n  <th>Ensemble</th>\n  <th>Public Score</th>\n  <th>Private Score</th>\n  </tr>\n  </thead>\n  <tbody>\n  <tr>\n  <td>0.48 resnext512 + 0.52 efficientNet</td>\n  <td>0.902</td>\n  <td>0.896</td>\n  </tr>\n  <tr>\n  <td>0.5 resnext512 + 0.5 efficientNet</td>\n  <td>0.903</td>\n  <td>0.896</td>\n  </tr>\n  <tr>\n  <td>0.52 resnext512 + 0.48 efficientNet</td>\n  <td>0.902</td>\n  <td>0.897</td>\n  </tr>\n  <tr>\n  <td>0.51 resnext512 + 0.49 efficientNet</td>\n  <td>0.902</td>\n  <td>0.897</td>\n  </tr>\n  <tr>\n  <td>0.5 resnext384 + 0.5 efficientNet</td>\n  <td>0.900</td>\n  <td>0.897</td>\n  </tr>\n  </tbody>\n  </table>\n</blockquote>\n<p>As a result, I was able to win a silver medal for the first time! I can't believe it.</p>\n<p>Good job, everyone. Thank you.</p>\n<ul>\n<li><p>Simple My Notebook<br>\n<a href=\"https://www.kaggle.com/wonjunpark/multi-scale-resnext50-32x4d-efficientnet\" target=\"_blank\">https://www.kaggle.com/wonjunpark/multi-scale-resnext50-32x4d-efficientnet</a></p></li>\n<li><p>Custom weight<br>\n<a href=\"https://www.kaggle.com/wonjunpark/resnext50-cassava-384size\" target=\"_blank\">https://www.kaggle.com/wonjunpark/resnext50-cassava-384size</a></p></li>\n</ul>",
      "rawMarkdown": "Hello, I'm a beginner at Kaggle\n\nIn this competition, I focused on making a robust model rather than a public leaderboard score.\n> resnext 384 + resnext 512 + efficientNet_b4\n| Ensemble| Public Score | Private Score |\n| --- | --- | --- |\n|0.35 resnext512 + 0.3 efficientNet + 0.35 * resnext384 | 0.900 | 0.899 |\n|0.35 resnext512 + 0.35 efficientNet + 0.3 * resnext384 | 0.900 | 0.899 |\n|0.4 resnext512 + 0.2 efficientNet + 0.4 * resnext384 | 0.899 | 0.899 |\n|0.4 resnext512 + 0.4 efficientNet + 0.2 * resnext384 | 0.900 | 0.898 |\n|0.45 resnext512 + 0.45 efficientNet + 0.1 * resnext384 | 0.901 | 0.897 |\n|0.5 resnext512 + 0.25 efficientNet + 0.25 * resnext384 | 0.899 | 0.900 |\n|0.2 resnext512 + 0.4 efficientNet + 0.4 * resnext384 | 0.899 | 0.899 |\n|0.33 resnext512 + 0.34 efficientNet + 0.33 * resnext384 | 0.899 | 0.899 |\n|0.45 resnext512 + 0.45 efficientNet + 0.1 * resnext384 | 0.901 | 0.899 |\n|0.7 resnext512 + 0.2 efficientNet + 0.1 * resnext384 | 0.898 | 0.899 |\n\n> resnext 512 + efficientNet_b4\n| Ensemble| Public Score | Private Score |\n| --- | --- | --- |\n|0.48 resnext512 + 0.52 efficientNet | 0.902 | 0.896 |\n|0.5 resnext512 + 0.5 efficientNet | 0.903 | 0.896 |\n|0.52 resnext512 + 0.48 efficientNet | 0.902 | 0.897 |\n|0.51 resnext512 + 0.49 efficientNet | 0.902 | 0.897\n|0.5 resnext384 + 0.5 efficientNet | 0.900 | 0.897 |\n\n\nAs a result, I was able to win a silver medal for the first time! I can't believe it.\n\nGood job, everyone. Thank you.\n\n- Simple My Notebook\nhttps://www.kaggle.com/wonjunpark/multi-scale-resnext50-32x4d-efficientnet\n\n- Custom weight\nhttps://www.kaggle.com/wonjunpark/resnext50-cassava-384size",
      "votes": null
    },
    {
      "id": "1209646",
      "postDate": "02/19/2021 01:49:45",
      "content": "<p>Great job earning solo silver. When the labels are noisy, robust is good.</p>",
      "rawMarkdown": "Great job earning solo silver. When the labels are noisy, robust is good.",
      "votes": null
    },
    {
      "id": "1209656",
      "postDate": "02/19/2021 01:59:17",
      "content": "<p>That's right. Congratulations on your medal, too! Thank you 😄</p>",
      "rawMarkdown": "That's right. Congratulations on your medal, too! Thank you 😄",
      "votes": null
    },
    {
      "id": "1209746",
      "postDate": "02/19/2021 03:03:26",
      "content": "<p>Congratulations! I think if you would have included a ViT model in your ensemble, you would jump straight to the Top 1%!</p>",
      "rawMarkdown": "Congratulations! I think if you would have included a ViT model in your ensemble, you would jump straight to the Top 1%!",
      "votes": null
    },
    {
      "id": "1209747",
      "postDate": "02/19/2021 03:03:39",
      "content": "<p>Great! And congrats on silver medal.</p>",
      "rawMarkdown": "Great! And congrats on silver medal.",
      "votes": null
    },
    {
      "id": "1209855",
      "postDate": "02/19/2021 04:31:19",
      "content": "<p>Congratulations for silver medal!! 메달 축하드려요~!!</p>",
      "rawMarkdown": "Congratulations for silver medal!! 메달 축하드려요~!!",
      "votes": null
    },
    {
      "id": "1209859",
      "postDate": "02/19/2021 04:33:00",
      "content": "<p>Congratulations on your medal, too! Thank you!!</p>",
      "rawMarkdown": "Congratulations on your medal, too! Thank you!!",
      "votes": null
    },
    {
      "id": "1209860",
      "postDate": "02/19/2021 04:34:32",
      "content": "<p>Oh, thank you for a very good idea. Next time, I'll have to try more models of ensemble!</p>",
      "rawMarkdown": "Oh, thank you for a very good idea. Next time, I'll have to try more models of ensemble!",
      "votes": null
    },
    {
      "id": "1209861",
      "postDate": "02/19/2021 04:35:04",
      "content": "<p>Thank you very much! 😄</p>",
      "rawMarkdown": "Thank you very much! 😄",
      "votes": null
    },
    {
      "id": "1209950",
      "postDate": "02/19/2021 05:56:30",
      "content": "<p>congrats <a href=\"https://www.kaggle.com/wonjunpark\" target=\"_blank\">@wonjunpark</a> great job🤝</p>",
      "rawMarkdown": "congrats @wonjunpark great job🤝",
      "votes": null
    },
    {
      "id": "1210450",
      "postDate": "02/19/2021 12:54:01",
      "content": "<p>Thank you very much! 😄</p>",
      "rawMarkdown": "Thank you very much! 😄",
      "votes": null
    },
    {
      "id": "1211820",
      "postDate": "02/20/2021 15:31:33",
      "content": "<p>I am also beginner and also get a silver medal for the first time. Congratulations!</p>",
      "rawMarkdown": "I am also beginner and also get a silver medal for the first time. Congratulations!",
      "votes": null
    },
    {
      "id": "1211868",
      "postDate": "02/20/2021 16:14:02",
      "content": "<p>Congratulations on your medal, too!!! Thank you 👍👍</p>",
      "rawMarkdown": "Congratulations on your medal, too!!! Thank you 👍👍",
      "votes": null
    },
    {
      "id": "1220246",
      "postDate": "02/27/2021 19:01:06",
      "content": "<p>안녕하세요~ discussion 둘러보다가 생소한 개념이 보여서 질문남겨요. (이거 한글로 써도 되나요?)<br>\n제가 ensemble 쪽을 잘몰라서 그런데 여기서 쓰신 robust하다는 것의 의미가 어떤 건가요?<br>\n보통 '조명에 robust하다' 이런 식으로 쓰던 단어인데 위에 올려주신 표를 보니 ensemble에서 robust하다는 개념이 있는 것 같네요<br>\n알려주시면 감사하겠습니다! 메달도 축하드려요! </p>",
      "rawMarkdown": "안녕하세요~ discussion 둘러보다가 생소한 개념이 보여서 질문남겨요. (이거 한글로 써도 되나요?)\n제가 ensemble 쪽을 잘몰라서 그런데 여기서 쓰신 robust하다는 것의 의미가 어떤 건가요?\n보통 '조명에 robust하다' 이런 식으로 쓰던 단어인데 위에 올려주신 표를 보니 ensemble에서 robust하다는 개념이 있는 것 같네요\n알려주시면 감사하겠습니다! 메달도 축하드려요!",
      "votes": null
    },
    {
      "id": "1220509",
      "postDate": "02/28/2021 05:10:28",
      "content": "<p>네 안녕하세요, robust하다는 의미는 모델이 outlier의 크게 영향을 받지않는다는 의미입니다.</p>",
      "rawMarkdown": "네 안녕하세요, robust하다는 의미는 모델이 outlier의 크게 영향을 받지않는다는 의미입니다.",
      "votes": null
    },
    {
      "id": "1220572",
      "postDate": "02/28/2021 05:46:30",
      "content": "<p>답변 감사합니다. 제가 앙상블을 잘몰라서 그런데 앙상블은 여러 모델을 묶어서 투표하는 방식으로(투표하는 방식에도 여러 종류가 있지만) 결과값을 낸다고 이해하고 있습니다. 그런데 말씀하신 outlier문제가 앙상블로 어떻게 해결되는 것인지 이해가 잘 안 돼서 다시 질문드립니다. outlier라면 각 모델이 모두 잘못 학습을 하게 될 확률이 높지 않을까요? 따라서 투표를 해도 모두 잘못된 결과값을 줄 확률이 높을 것 같은데 모델을 결합한다는 개념이 어떻게 outlier 해결(or 완화)로 가는 것인지 설명해주시면 감사하겠습니다!</p>",
      "rawMarkdown": "답변 감사합니다. 제가 앙상블을 잘몰라서 그런데 앙상블은 여러 모델을 묶어서 투표하는 방식으로(투표하는 방식에도 여러 종류가 있지만) 결과값을 낸다고 이해하고 있습니다. 그런데 말씀하신 outlier문제가 앙상블로 어떻게 해결되는 것인지 이해가 잘 안 돼서 다시 질문드립니다. outlier라면 각 모델이 모두 잘못 학습을 하게 될 확률이 높지 않을까요? 따라서 투표를 해도 모두 잘못된 결과값을 줄 확률이 높을 것 같은데 모델을 결합한다는 개념이 어떻게 outlier 해결(or 완화)로 가는 것인지 설명해주시면 감사하겠습니다!",
      "votes": null
    },
    {
      "id": "1220588",
      "postDate": "02/28/2021 06:02:55",
      "content": "<p>네 말씀하신것처럼 앙상블은 여러 모델을 묶어서 투표하는 방식입니다. </p>\n<p>머신러닝이란 학문 자체가 데이터를 기반으로 모델의 학습하여 통계값으로 정답을 맞추는 학문이고, 여기서 정확한 모델이 만들어지기 위해서는 inlier 분포의 맞게 모델을 만들어야 합니다.</p>\n<p>이 대회를 예시로 들자면 inlier는 카사바 잎의 질병들이고 outlier는 그 외의 값들이겠죠? 그렇다면 우리는 inlier값들을 모델의 최대한 많이 학습하여서 outlier값이 들어오더라도 흔들림없이 분별하는 모델을 만드는것이 목표입니다.</p>\n<p>따라서 앙상블을 통해 더욱 정확한 inlier들을 바탕으로 모델을 만듬으로써 outlier가 들어오더라도 robust하게 분별하는 모델을 만들수 있습니다.</p>",
      "rawMarkdown": "네 말씀하신것처럼 앙상블은 여러 모델을 묶어서 투표하는 방식입니다. \n\n머신러닝이란 학문 자체가 데이터를 기반으로 모델의 학습하여 통계값으로 정답을 맞추는 학문이고, 여기서 정확한 모델이 만들어지기 위해서는 inlier 분포의 맞게 모델을 만들어야 합니다.\n\n이 대회를 예시로 들자면 inlier는 카사바 잎의 질병들이고 outlier는 그 외의 값들이겠죠? 그렇다면 우리는 inlier값들을 모델의 최대한 많이 학습하여서 outlier값이 들어오더라도 흔들림없이 분별하는 모델을 만드는것이 목표입니다.\n\n따라서 앙상블을 통해 더욱 정확한 inlier들을 바탕으로 모델을 만듬으로써 outlier가 들어오더라도 robust하게 분별하는 모델을 만들수 있습니다.",
      "votes": null
    },
    {
      "id": "1220616",
      "postDate": "02/28/2021 07:02:01",
      "content": "<p>답변 정말 감사합니다. 번거로우시겠지만 답변이 이해가 잘 되지 않아 다시 한 번 질문 남깁니다. </p>\n<p>제가 생각하고 있던 outlier와 원준님께서 말씀하시는 outlier가 다를 수도 있다는 생각을 하고 있습니다 . (혹은 같은 것인데 제가 이해를 못하고 있을 수도 있고요)<br>\n제가 생각하는 outlier는 이 대회를 예시로 들자면,</p>\n<ol>\n<li>보통 A라는 병에 걸린 잎은 노란색이고 B라는 병에 걸린 잎은 갈색인데 A 클래스이지만 색이 갈색에 가까운 데이터</li>\n<li>어떤 클래스에 속해 있는지 상관 없이 노란색도, 갈색도 아닌 흰색 잎을 가진 데이터 <br>\n등등이 될 것 같습니다. </li>\n</ol>\n<p>원준님께서 inlier는 카사바 잎의 질병들이고 outlier는 그 외의 값들이라고 하셨는데, 어떤 예시가 될까요? 질병으로 클래스가 구분되어 있는데 질병 이외의 값이 무엇인지 잘이해가 되지 않습니다. 단어 정의가 이해가 안 되어서 뒤에 말씀하신 inlier를 최대한 많이 학습하여서 outlier값이 들어오더라도 잘 분별한다는 말 또한 이해가 되지 않습니다. ㅜ.ㅜ</p>\n<p>다시 제가 이해한대로 이야기를 이어가자면, 명백하게 노란색을 띄는 잎은 앙상블 모델 M,N 모두 A라는 클래스로 잘 학습을 할 것인데 노란색과 갈색 중 애매한 색깔일때는 학습이 잘못될 우려가 있어서 투표를 통해 가장 많은 득표를 한 클래스를 출력하게 될 것입니다. 그런데 outlier의 경우에는 분명히 A클래스로 라벨링이 되어 있는데 거의 갈색에 가까운 데이터라서 앙상블 모델 M,N 모두 학습이 잘못될 가능성이 높을 것 같습니다(흰 색 잎을 가진 데이터의 상황에서도 마찬가지일 것입니다). 해당 데이터가 학습 데이터라면 그래도 학습을 한 데이터니까 제대로 A라고 정답을 출력할 확률이 높겠지만, 테스트 과정에서 outlier가 들어온다면 두 모델 모두 B라고 출력을 할 것 같습니다. 그렇다면 앙상블이 outlier 완화에 어떻게 도움이 되는 것인지 이해가 되지 않는다는 결론이 나옵니다. </p>\n<p>여기까지가 제 생각인데 혹시 보시고 제가 잘못 이해하고 있는 부분이 있는지 알려주시면 감사하겠습니다.</p>",
      "rawMarkdown": "답변 정말 감사합니다. 번거로우시겠지만 답변이 이해가 잘 되지 않아 다시 한 번 질문 남깁니다. \n\n제가 생각하고 있던 outlier와 원준님께서 말씀하시는 outlier가 다를 수도 있다는 생각을 하고 있습니다 . (혹은 같은 것인데 제가 이해를 못하고 있을 수도 있고요)\n제가 생각하는 outlier는 이 대회를 예시로 들자면,\n1. 보통 A라는 병에 걸린 잎은 노란색이고 B라는 병에 걸린 잎은 갈색인데 A 클래스이지만 색이 갈색에 가까운 데이터\n2. 어떤 클래스에 속해 있는지 상관 없이 노란색도, 갈색도 아닌 흰색 잎을 가진 데이터 \n등등이 될 것 같습니다. \n\n원준님께서 inlier는 카사바 잎의 질병들이고 outlier는 그 외의 값들이라고 하셨는데, 어떤 예시가 될까요? 질병으로 클래스가 구분되어 있는데 질병 이외의 값이 무엇인지 잘이해가 되지 않습니다. 단어 정의가 이해가 안 되어서 뒤에 말씀하신 inlier를 최대한 많이 학습하여서 outlier값이 들어오더라도 잘 분별한다는 말 또한 이해가 되지 않습니다. ㅜ.ㅜ\n\n다시 제가 이해한대로 이야기를 이어가자면, 명백하게 노란색을 띄는 잎은 앙상블 모델 M,N 모두 A라는 클래스로 잘 학습을 할 것인데 노란색과 갈색 중 애매한 색깔일때는 학습이 잘못될 우려가 있어서 투표를 통해 가장 많은 득표를 한 클래스를 출력하게 될 것입니다. 그런데 outlier의 경우에는 분명히 A클래스로 라벨링이 되어 있는데 거의 갈색에 가까운 데이터라서 앙상블 모델 M,N 모두 학습이 잘못될 가능성이 높을 것 같습니다(흰 색 잎을 가진 데이터의 상황에서도 마찬가지일 것입니다). 해당 데이터가 학습 데이터라면 그래도 학습을 한 데이터니까 제대로 A라고 정답을 출력할 확률이 높겠지만, 테스트 과정에서 outlier가 들어온다면 두 모델 모두 B라고 출력을 할 것 같습니다. 그렇다면 앙상블이 outlier 완화에 어떻게 도움이 되는 것인지 이해가 되지 않는다는 결론이 나옵니다. \n\n여기까지가 제 생각인데 혹시 보시고 제가 잘못 이해하고 있는 부분이 있는지 알려주시면 감사하겠습니다.",
      "votes": null
    },
    {
      "id": "1220652",
      "postDate": "02/28/2021 08:02:49",
      "content": "<p>네 정확하게 이해하셨고, 단일 데이터를 기준으로 봤을때는 yhkim님 말씀이 맞습니다. <br>\n하지만 저희는 단일 데이터만을 사용한게 아니라 무수히 많은 데이터를 훈련시키게됩니다.</p>\n<p>다음과 같이 가정을 했을 때,<br>\nA클래스 - 노란색 잎<br>\nB클래스 - 갈색 잎<br>\nother - 흰색 잎</p>\n<p>전체 30,000개의 데이터 중에 각각 10,000개씩 분포되어있다고 가정합니다.</p>\n<p>각 10,000개 중에는 A클래스이지만 노란색보다는 갈색 잎이나 흰색 잎의 가까운 데이터도 있을 것이고, B클래스이지만 역인 경우도 있을 것입니다.</p>\n<p>하지만 전체적인 분포를 확인해보았을 때는 A클래스는 대부분 노란색의 가까운 잎들일 것이고, B클래스는 대부분 갈색의 가까운 잎일것입니다.</p>\n<p>이 데이터들을 학습시켜 M,N 두 모델을 만들게 된다면 M과 N은 약간은 차이가 있겠지만 어쨌든 노란색의 가까운 잎들을 A클래스, 갈색의 가까운 잎들을 B클래스로 분류하는 모델을 만들게 됩니다.</p>\n<p>여기서 중요한 점은 두 모델이 100% 분류를 해내지는 못한다는 것입니다. 만약 M이라는 모델에 입력으로 cassava1.png라는 데이터를 넣게고 출력을 softmax로 한다면 [0.89, 0.10, 001]라는 결과값이 나올것이고, N이라는 모델에 마찬가지로 데이터를 넣는다면 [0.85, 0.12, 0.03]의 결과값이 나오게 될것입니다.</p>\n<p>그렇다면 두 모델을 일정한 비율로 앙상블을 하게 되면다면 다음과 같은 식이 되게됩니다.<br>\n0.5<em>[0.89, 0.10, 0.01] + 0.5</em>[0.85, 0.12, 0.03] = [0.87, 0.11, 0.02]</p>\n<p>모델의 출력이 [A클래스, B클래스, other]이라고 가정했을 때, cassava1.png의 정답값이 A라면 M모델은 89%로 정답을 맞췄지만, N모델은 85%로 정답을 맞추게 되었습니다. 하지만 두 모델을 앙상블 함으로써 최종적으로 87%라는 결과값을 얻게되는 것입니다.</p>\n<p>이 결과값을 보았을 때는 M모델에서는 손해일 수 있지만, 만약 다른 데이터를 입력으로 넣었을 때 M모델에서 결과값이 반대로 낮게나왔을 때는 보완이 될 수 있을것입니다.</p>\n<p>따라서 처음에 말씀드린 outlier의 크게 영향을 받지않는다는 것의 의미는 모델의 결과값의 클래스의 비율이 높더라도 여러 모델로 판별함으로써 조금더 견고한(robust)한 모델을 만들 수 있다는 의미로 말씀드린것입니다.</p>",
      "rawMarkdown": "네 정확하게 이해하셨고, 단일 데이터를 기준으로 봤을때는 yhkim님 말씀이 맞습니다. \n하지만 저희는 단일 데이터만을 사용한게 아니라 무수히 많은 데이터를 훈련시키게됩니다.\n\n다음과 같이 가정을 했을 때,\nA클래스 - 노란색 잎\nB클래스 - 갈색 잎\nother - 흰색 잎\n\n전체 30,000개의 데이터 중에 각각 10,000개씩 분포되어있다고 가정합니다.\n\n각 10,000개 중에는 A클래스이지만 노란색보다는 갈색 잎이나 흰색 잎의 가까운 데이터도 있을 것이고, B클래스이지만 역인 경우도 있을 것입니다.\n\n하지만 전체적인 분포를 확인해보았을 때는 A클래스는 대부분 노란색의 가까운 잎들일 것이고, B클래스는 대부분 갈색의 가까운 잎일것입니다.\n\n이 데이터들을 학습시켜 M,N 두 모델을 만들게 된다면 M과 N은 약간은 차이가 있겠지만 어쨌든 노란색의 가까운 잎들을 A클래스, 갈색의 가까운 잎들을 B클래스로 분류하는 모델을 만들게 됩니다.\n\n여기서 중요한 점은 두 모델이 100% 분류를 해내지는 못한다는 것입니다. 만약 M이라는 모델에 입력으로 cassava1.png라는 데이터를 넣게고 출력을 softmax로 한다면 [0.89, 0.10, 001]라는 결과값이 나올것이고, N이라는 모델에 마찬가지로 데이터를 넣는다면 [0.85, 0.12, 0.03]의 결과값이 나오게 될것입니다.\n\n그렇다면 두 모델을 일정한 비율로 앙상블을 하게 되면다면 다음과 같은 식이 되게됩니다.\n0.5*[0.89, 0.10, 0.01] + 0.5*[0.85, 0.12, 0.03] = [0.87, 0.11, 0.02]\n\n모델의 출력이 [A클래스, B클래스, other]이라고 가정했을 때, cassava1.png의 정답값이 A라면 M모델은 89%로 정답을 맞췄지만, N모델은 85%로 정답을 맞추게 되었습니다. 하지만 두 모델을 앙상블 함으로써 최종적으로 87%라는 결과값을 얻게되는 것입니다.\n\n이 결과값을 보았을 때는 M모델에서는 손해일 수 있지만, 만약 다른 데이터를 입력으로 넣었을 때 M모델에서 결과값이 반대로 낮게나왔을 때는 보완이 될 수 있을것입니다.\n\n따라서 처음에 말씀드린 outlier의 크게 영향을 받지않는다는 것의 의미는 모델의 결과값의 클래스의 비율이 높더라도 여러 모델로 판별함으로써 조금더 견고한(robust)한 모델을 만들 수 있다는 의미로 말씀드린것입니다.",
      "votes": null
    },
    {
      "id": "1220720",
      "postDate": "02/28/2021 09:40:48",
      "content": "<p>답변 감사합니다!👍</p>",
      "rawMarkdown": "답변 감사합니다!👍",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1209646,
      "author_name": "cdeotte",
      "author_url": "",
      "post_date": "02/19/2021 01:49:45",
      "content": "<p>Great job earning solo silver. When the labels are noisy, robust is good.</p>",
      "votes": null,
      "replies": [
        {
          "id": 1209656,
          "author_name": "wonjunpark",
          "author_url": "",
          "post_date": "02/19/2021 01:59:17",
          "content": "<p>That's right. Congratulations on your medal, too! Thank you 😄</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1209746,
      "author_name": "amiiiney",
      "author_url": "",
      "post_date": "02/19/2021 03:03:26",
      "content": "<p>Congratulations! I think if you would have included a ViT model in your ensemble, you would jump straight to the Top 1%!</p>",
      "votes": null,
      "replies": [
        {
          "id": 1209860,
          "author_name": "wonjunpark",
          "author_url": "",
          "post_date": "02/19/2021 04:34:32",
          "content": "<p>Oh, thank you for a very good idea. Next time, I'll have to try more models of ensemble!</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1209747,
      "author_name": "piantic",
      "author_url": "",
      "post_date": "02/19/2021 03:03:39",
      "content": "<p>Great! And congrats on silver medal.</p>",
      "votes": null,
      "replies": [
        {
          "id": 1209861,
          "author_name": "wonjunpark",
          "author_url": "",
          "post_date": "02/19/2021 04:35:04",
          "content": "<p>Thank you very much! 😄</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1209855,
      "author_name": "chocozzz",
      "author_url": "",
      "post_date": "02/19/2021 04:31:19",
      "content": "<p>Congratulations for silver medal!! 메달 축하드려요~!!</p>",
      "votes": null,
      "replies": [
        {
          "id": 1209859,
          "author_name": "wonjunpark",
          "author_url": "",
          "post_date": "02/19/2021 04:33:00",
          "content": "<p>Congratulations on your medal, too! Thank you!!</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1209950,
      "author_name": "santhoshkumarv",
      "author_url": "",
      "post_date": "02/19/2021 05:56:30",
      "content": "<p>congrats <a href=\"https://www.kaggle.com/wonjunpark\" target=\"_blank\">@wonjunpark</a> great job🤝</p>",
      "votes": null,
      "replies": [
        {
          "id": 1210450,
          "author_name": "wonjunpark",
          "author_url": "",
          "post_date": "02/19/2021 12:54:01",
          "content": "<p>Thank you very much! 😄</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1211820,
      "author_name": "hungkhoi",
      "author_url": "",
      "post_date": "02/20/2021 15:31:33",
      "content": "<p>I am also beginner and also get a silver medal for the first time. Congratulations!</p>",
      "votes": null,
      "replies": [
        {
          "id": 1211868,
          "author_name": "wonjunpark",
          "author_url": "",
          "post_date": "02/20/2021 16:14:02",
          "content": "<p>Congratulations on your medal, too!!! Thank you 👍👍</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1220246,
      "author_name": "yhkim94",
      "author_url": "",
      "post_date": "02/27/2021 19:01:06",
      "content": "<p>안녕하세요~ discussion 둘러보다가 생소한 개념이 보여서 질문남겨요. (이거 한글로 써도 되나요?)<br>\n제가 ensemble 쪽을 잘몰라서 그런데 여기서 쓰신 robust하다는 것의 의미가 어떤 건가요?<br>\n보통 '조명에 robust하다' 이런 식으로 쓰던 단어인데 위에 올려주신 표를 보니 ensemble에서 robust하다는 개념이 있는 것 같네요<br>\n알려주시면 감사하겠습니다! 메달도 축하드려요! </p>",
      "votes": null,
      "replies": [
        {
          "id": 1220509,
          "author_name": "wonjunpark",
          "author_url": "",
          "post_date": "02/28/2021 05:10:28",
          "content": "<p>네 안녕하세요, robust하다는 의미는 모델이 outlier의 크게 영향을 받지않는다는 의미입니다.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1220572,
          "author_name": "yhkim94",
          "author_url": "",
          "post_date": "02/28/2021 05:46:30",
          "content": "<p>답변 감사합니다. 제가 앙상블을 잘몰라서 그런데 앙상블은 여러 모델을 묶어서 투표하는 방식으로(투표하는 방식에도 여러 종류가 있지만) 결과값을 낸다고 이해하고 있습니다. 그런데 말씀하신 outlier문제가 앙상블로 어떻게 해결되는 것인지 이해가 잘 안 돼서 다시 질문드립니다. outlier라면 각 모델이 모두 잘못 학습을 하게 될 확률이 높지 않을까요? 따라서 투표를 해도 모두 잘못된 결과값을 줄 확률이 높을 것 같은데 모델을 결합한다는 개념이 어떻게 outlier 해결(or 완화)로 가는 것인지 설명해주시면 감사하겠습니다!</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1220588,
          "author_name": "wonjunpark",
          "author_url": "",
          "post_date": "02/28/2021 06:02:55",
          "content": "<p>네 말씀하신것처럼 앙상블은 여러 모델을 묶어서 투표하는 방식입니다. </p>\n<p>머신러닝이란 학문 자체가 데이터를 기반으로 모델의 학습하여 통계값으로 정답을 맞추는 학문이고, 여기서 정확한 모델이 만들어지기 위해서는 inlier 분포의 맞게 모델을 만들어야 합니다.</p>\n<p>이 대회를 예시로 들자면 inlier는 카사바 잎의 질병들이고 outlier는 그 외의 값들이겠죠? 그렇다면 우리는 inlier값들을 모델의 최대한 많이 학습하여서 outlier값이 들어오더라도 흔들림없이 분별하는 모델을 만드는것이 목표입니다.</p>\n<p>따라서 앙상블을 통해 더욱 정확한 inlier들을 바탕으로 모델을 만듬으로써 outlier가 들어오더라도 robust하게 분별하는 모델을 만들수 있습니다.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1220616,
          "author_name": "yhkim94",
          "author_url": "",
          "post_date": "02/28/2021 07:02:01",
          "content": "<p>답변 정말 감사합니다. 번거로우시겠지만 답변이 이해가 잘 되지 않아 다시 한 번 질문 남깁니다. </p>\n<p>제가 생각하고 있던 outlier와 원준님께서 말씀하시는 outlier가 다를 수도 있다는 생각을 하고 있습니다 . (혹은 같은 것인데 제가 이해를 못하고 있을 수도 있고요)<br>\n제가 생각하는 outlier는 이 대회를 예시로 들자면,</p>\n<ol>\n<li>보통 A라는 병에 걸린 잎은 노란색이고 B라는 병에 걸린 잎은 갈색인데 A 클래스이지만 색이 갈색에 가까운 데이터</li>\n<li>어떤 클래스에 속해 있는지 상관 없이 노란색도, 갈색도 아닌 흰색 잎을 가진 데이터 <br>\n등등이 될 것 같습니다. </li>\n</ol>\n<p>원준님께서 inlier는 카사바 잎의 질병들이고 outlier는 그 외의 값들이라고 하셨는데, 어떤 예시가 될까요? 질병으로 클래스가 구분되어 있는데 질병 이외의 값이 무엇인지 잘이해가 되지 않습니다. 단어 정의가 이해가 안 되어서 뒤에 말씀하신 inlier를 최대한 많이 학습하여서 outlier값이 들어오더라도 잘 분별한다는 말 또한 이해가 되지 않습니다. ㅜ.ㅜ</p>\n<p>다시 제가 이해한대로 이야기를 이어가자면, 명백하게 노란색을 띄는 잎은 앙상블 모델 M,N 모두 A라는 클래스로 잘 학습을 할 것인데 노란색과 갈색 중 애매한 색깔일때는 학습이 잘못될 우려가 있어서 투표를 통해 가장 많은 득표를 한 클래스를 출력하게 될 것입니다. 그런데 outlier의 경우에는 분명히 A클래스로 라벨링이 되어 있는데 거의 갈색에 가까운 데이터라서 앙상블 모델 M,N 모두 학습이 잘못될 가능성이 높을 것 같습니다(흰 색 잎을 가진 데이터의 상황에서도 마찬가지일 것입니다). 해당 데이터가 학습 데이터라면 그래도 학습을 한 데이터니까 제대로 A라고 정답을 출력할 확률이 높겠지만, 테스트 과정에서 outlier가 들어온다면 두 모델 모두 B라고 출력을 할 것 같습니다. 그렇다면 앙상블이 outlier 완화에 어떻게 도움이 되는 것인지 이해가 되지 않는다는 결론이 나옵니다. </p>\n<p>여기까지가 제 생각인데 혹시 보시고 제가 잘못 이해하고 있는 부분이 있는지 알려주시면 감사하겠습니다.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1220652,
          "author_name": "wonjunpark",
          "author_url": "",
          "post_date": "02/28/2021 08:02:49",
          "content": "<p>네 정확하게 이해하셨고, 단일 데이터를 기준으로 봤을때는 yhkim님 말씀이 맞습니다. <br>\n하지만 저희는 단일 데이터만을 사용한게 아니라 무수히 많은 데이터를 훈련시키게됩니다.</p>\n<p>다음과 같이 가정을 했을 때,<br>\nA클래스 - 노란색 잎<br>\nB클래스 - 갈색 잎<br>\nother - 흰색 잎</p>\n<p>전체 30,000개의 데이터 중에 각각 10,000개씩 분포되어있다고 가정합니다.</p>\n<p>각 10,000개 중에는 A클래스이지만 노란색보다는 갈색 잎이나 흰색 잎의 가까운 데이터도 있을 것이고, B클래스이지만 역인 경우도 있을 것입니다.</p>\n<p>하지만 전체적인 분포를 확인해보았을 때는 A클래스는 대부분 노란색의 가까운 잎들일 것이고, B클래스는 대부분 갈색의 가까운 잎일것입니다.</p>\n<p>이 데이터들을 학습시켜 M,N 두 모델을 만들게 된다면 M과 N은 약간은 차이가 있겠지만 어쨌든 노란색의 가까운 잎들을 A클래스, 갈색의 가까운 잎들을 B클래스로 분류하는 모델을 만들게 됩니다.</p>\n<p>여기서 중요한 점은 두 모델이 100% 분류를 해내지는 못한다는 것입니다. 만약 M이라는 모델에 입력으로 cassava1.png라는 데이터를 넣게고 출력을 softmax로 한다면 [0.89, 0.10, 001]라는 결과값이 나올것이고, N이라는 모델에 마찬가지로 데이터를 넣는다면 [0.85, 0.12, 0.03]의 결과값이 나오게 될것입니다.</p>\n<p>그렇다면 두 모델을 일정한 비율로 앙상블을 하게 되면다면 다음과 같은 식이 되게됩니다.<br>\n0.5<em>[0.89, 0.10, 0.01] + 0.5</em>[0.85, 0.12, 0.03] = [0.87, 0.11, 0.02]</p>\n<p>모델의 출력이 [A클래스, B클래스, other]이라고 가정했을 때, cassava1.png의 정답값이 A라면 M모델은 89%로 정답을 맞췄지만, N모델은 85%로 정답을 맞추게 되었습니다. 하지만 두 모델을 앙상블 함으로써 최종적으로 87%라는 결과값을 얻게되는 것입니다.</p>\n<p>이 결과값을 보았을 때는 M모델에서는 손해일 수 있지만, 만약 다른 데이터를 입력으로 넣었을 때 M모델에서 결과값이 반대로 낮게나왔을 때는 보완이 될 수 있을것입니다.</p>\n<p>따라서 처음에 말씀드린 outlier의 크게 영향을 받지않는다는 것의 의미는 모델의 결과값의 클래스의 비율이 높더라도 여러 모델로 판별함으로써 조금더 견고한(robust)한 모델을 만들 수 있다는 의미로 말씀드린것입니다.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1220720,
          "author_name": "yhkim94",
          "author_url": "",
          "post_date": "02/28/2021 09:40:48",
          "content": "<p>답변 감사합니다!👍</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "1209624": "Hello, I'm a beginner at Kaggle\n\nIn this competition, I focused on making a robust model rather than a public leaderboard score.\n> resnext 384 + resnext 512 + efficientNet_b4\n| Ensemble| Public Score | Private Score |\n| --- | --- | --- |\n|0.35 resnext512 + 0.3 efficientNet + 0.35 * resnext384 | 0.900 | 0.899 |\n|0.35 resnext512 + 0.35 efficientNet + 0.3 * resnext384 | 0.900 | 0.899 |\n|0.4 resnext512 + 0.2 efficientNet + 0.4 * resnext384 | 0.899 | 0.899 |\n|0.4 resnext512 + 0.4 efficientNet + 0.2 * resnext384 | 0.900 | 0.898 |\n|0.45 resnext512 + 0.45 efficientNet + 0.1 * resnext384 | 0.901 | 0.897 |\n|0.5 resnext512 + 0.25 efficientNet + 0.25 * resnext384 | 0.899 | 0.900 |\n|0.2 resnext512 + 0.4 efficientNet + 0.4 * resnext384 | 0.899 | 0.899 |\n|0.33 resnext512 + 0.34 efficientNet + 0.33 * resnext384 | 0.899 | 0.899 |\n|0.45 resnext512 + 0.45 efficientNet + 0.1 * resnext384 | 0.901 | 0.899 |\n|0.7 resnext512 + 0.2 efficientNet + 0.1 * resnext384 | 0.898 | 0.899 |\n\n> resnext 512 + efficientNet_b4\n| Ensemble| Public Score | Private Score |\n| --- | --- | --- |\n|0.48 resnext512 + 0.52 efficientNet | 0.902 | 0.896 |\n|0.5 resnext512 + 0.5 efficientNet | 0.903 | 0.896 |\n|0.52 resnext512 + 0.48 efficientNet | 0.902 | 0.897 |\n|0.51 resnext512 + 0.49 efficientNet | 0.902 | 0.897\n|0.5 resnext384 + 0.5 efficientNet | 0.900 | 0.897 |\n\n\nAs a result, I was able to win a silver medal for the first time! I can't believe it.\n\nGood job, everyone. Thank you.\n\n- Simple My Notebook\nhttps://www.kaggle.com/wonjunpark/multi-scale-resnext50-32x4d-efficientnet\n\n- Custom weight\nhttps://www.kaggle.com/wonjunpark/resnext50-cassava-384size",
    "1209646": "Great job earning solo silver. When the labels are noisy, robust is good.",
    "1209656": "That's right. Congratulations on your medal, too! Thank you 😄",
    "1209746": "Congratulations! I think if you would have included a ViT model in your ensemble, you would jump straight to the Top 1%!",
    "1209747": "Great! And congrats on silver medal.",
    "1209855": "Congratulations for silver medal!! 메달 축하드려요~!!",
    "1209859": "Congratulations on your medal, too! Thank you!!",
    "1209860": "Oh, thank you for a very good idea. Next time, I'll have to try more models of ensemble!",
    "1209861": "Thank you very much! 😄",
    "1209950": "congrats @wonjunpark great job🤝",
    "1210450": "Thank you very much! 😄",
    "1211820": "I am also beginner and also get a silver medal for the first time. Congratulations!",
    "1211868": "Congratulations on your medal, too!!! Thank you 👍👍",
    "1220246": "안녕하세요~ discussion 둘러보다가 생소한 개념이 보여서 질문남겨요. (이거 한글로 써도 되나요?)\n제가 ensemble 쪽을 잘몰라서 그런데 여기서 쓰신 robust하다는 것의 의미가 어떤 건가요?\n보통 '조명에 robust하다' 이런 식으로 쓰던 단어인데 위에 올려주신 표를 보니 ensemble에서 robust하다는 개념이 있는 것 같네요\n알려주시면 감사하겠습니다! 메달도 축하드려요!",
    "1220509": "네 안녕하세요, robust하다는 의미는 모델이 outlier의 크게 영향을 받지않는다는 의미입니다.",
    "1220572": "답변 감사합니다. 제가 앙상블을 잘몰라서 그런데 앙상블은 여러 모델을 묶어서 투표하는 방식으로(투표하는 방식에도 여러 종류가 있지만) 결과값을 낸다고 이해하고 있습니다. 그런데 말씀하신 outlier문제가 앙상블로 어떻게 해결되는 것인지 이해가 잘 안 돼서 다시 질문드립니다. outlier라면 각 모델이 모두 잘못 학습을 하게 될 확률이 높지 않을까요? 따라서 투표를 해도 모두 잘못된 결과값을 줄 확률이 높을 것 같은데 모델을 결합한다는 개념이 어떻게 outlier 해결(or 완화)로 가는 것인지 설명해주시면 감사하겠습니다!",
    "1220588": "네 말씀하신것처럼 앙상블은 여러 모델을 묶어서 투표하는 방식입니다. \n\n머신러닝이란 학문 자체가 데이터를 기반으로 모델의 학습하여 통계값으로 정답을 맞추는 학문이고, 여기서 정확한 모델이 만들어지기 위해서는 inlier 분포의 맞게 모델을 만들어야 합니다.\n\n이 대회를 예시로 들자면 inlier는 카사바 잎의 질병들이고 outlier는 그 외의 값들이겠죠? 그렇다면 우리는 inlier값들을 모델의 최대한 많이 학습하여서 outlier값이 들어오더라도 흔들림없이 분별하는 모델을 만드는것이 목표입니다.\n\n따라서 앙상블을 통해 더욱 정확한 inlier들을 바탕으로 모델을 만듬으로써 outlier가 들어오더라도 robust하게 분별하는 모델을 만들수 있습니다.",
    "1220616": "답변 정말 감사합니다. 번거로우시겠지만 답변이 이해가 잘 되지 않아 다시 한 번 질문 남깁니다. \n\n제가 생각하고 있던 outlier와 원준님께서 말씀하시는 outlier가 다를 수도 있다는 생각을 하고 있습니다 . (혹은 같은 것인데 제가 이해를 못하고 있을 수도 있고요)\n제가 생각하는 outlier는 이 대회를 예시로 들자면,\n1. 보통 A라는 병에 걸린 잎은 노란색이고 B라는 병에 걸린 잎은 갈색인데 A 클래스이지만 색이 갈색에 가까운 데이터\n2. 어떤 클래스에 속해 있는지 상관 없이 노란색도, 갈색도 아닌 흰색 잎을 가진 데이터 \n등등이 될 것 같습니다. \n\n원준님께서 inlier는 카사바 잎의 질병들이고 outlier는 그 외의 값들이라고 하셨는데, 어떤 예시가 될까요? 질병으로 클래스가 구분되어 있는데 질병 이외의 값이 무엇인지 잘이해가 되지 않습니다. 단어 정의가 이해가 안 되어서 뒤에 말씀하신 inlier를 최대한 많이 학습하여서 outlier값이 들어오더라도 잘 분별한다는 말 또한 이해가 되지 않습니다. ㅜ.ㅜ\n\n다시 제가 이해한대로 이야기를 이어가자면, 명백하게 노란색을 띄는 잎은 앙상블 모델 M,N 모두 A라는 클래스로 잘 학습을 할 것인데 노란색과 갈색 중 애매한 색깔일때는 학습이 잘못될 우려가 있어서 투표를 통해 가장 많은 득표를 한 클래스를 출력하게 될 것입니다. 그런데 outlier의 경우에는 분명히 A클래스로 라벨링이 되어 있는데 거의 갈색에 가까운 데이터라서 앙상블 모델 M,N 모두 학습이 잘못될 가능성이 높을 것 같습니다(흰 색 잎을 가진 데이터의 상황에서도 마찬가지일 것입니다). 해당 데이터가 학습 데이터라면 그래도 학습을 한 데이터니까 제대로 A라고 정답을 출력할 확률이 높겠지만, 테스트 과정에서 outlier가 들어온다면 두 모델 모두 B라고 출력을 할 것 같습니다. 그렇다면 앙상블이 outlier 완화에 어떻게 도움이 되는 것인지 이해가 되지 않는다는 결론이 나옵니다. \n\n여기까지가 제 생각인데 혹시 보시고 제가 잘못 이해하고 있는 부분이 있는지 알려주시면 감사하겠습니다.",
    "1220652": "네 정확하게 이해하셨고, 단일 데이터를 기준으로 봤을때는 yhkim님 말씀이 맞습니다. \n하지만 저희는 단일 데이터만을 사용한게 아니라 무수히 많은 데이터를 훈련시키게됩니다.\n\n다음과 같이 가정을 했을 때,\nA클래스 - 노란색 잎\nB클래스 - 갈색 잎\nother - 흰색 잎\n\n전체 30,000개의 데이터 중에 각각 10,000개씩 분포되어있다고 가정합니다.\n\n각 10,000개 중에는 A클래스이지만 노란색보다는 갈색 잎이나 흰색 잎의 가까운 데이터도 있을 것이고, B클래스이지만 역인 경우도 있을 것입니다.\n\n하지만 전체적인 분포를 확인해보았을 때는 A클래스는 대부분 노란색의 가까운 잎들일 것이고, B클래스는 대부분 갈색의 가까운 잎일것입니다.\n\n이 데이터들을 학습시켜 M,N 두 모델을 만들게 된다면 M과 N은 약간은 차이가 있겠지만 어쨌든 노란색의 가까운 잎들을 A클래스, 갈색의 가까운 잎들을 B클래스로 분류하는 모델을 만들게 됩니다.\n\n여기서 중요한 점은 두 모델이 100% 분류를 해내지는 못한다는 것입니다. 만약 M이라는 모델에 입력으로 cassava1.png라는 데이터를 넣게고 출력을 softmax로 한다면 [0.89, 0.10, 001]라는 결과값이 나올것이고, N이라는 모델에 마찬가지로 데이터를 넣는다면 [0.85, 0.12, 0.03]의 결과값이 나오게 될것입니다.\n\n그렇다면 두 모델을 일정한 비율로 앙상블을 하게 되면다면 다음과 같은 식이 되게됩니다.\n0.5*[0.89, 0.10, 0.01] + 0.5*[0.85, 0.12, 0.03] = [0.87, 0.11, 0.02]\n\n모델의 출력이 [A클래스, B클래스, other]이라고 가정했을 때, cassava1.png의 정답값이 A라면 M모델은 89%로 정답을 맞췄지만, N모델은 85%로 정답을 맞추게 되었습니다. 하지만 두 모델을 앙상블 함으로써 최종적으로 87%라는 결과값을 얻게되는 것입니다.\n\n이 결과값을 보았을 때는 M모델에서는 손해일 수 있지만, 만약 다른 데이터를 입력으로 넣었을 때 M모델에서 결과값이 반대로 낮게나왔을 때는 보완이 될 수 있을것입니다.\n\n따라서 처음에 말씀드린 outlier의 크게 영향을 받지않는다는 것의 의미는 모델의 결과값의 클래스의 비율이 높더라도 여러 모델로 판별함으로써 조금더 견고한(robust)한 모델을 만들 수 있다는 의미로 말씀드린것입니다.",
    "1220720": "답변 감사합니다!👍"
  },
  "source": "meta"
}