{
  "id": 411436,
  "title": "13th place solution",
  "content": "<p>First of all, congratulations to the winners!</p>\n<p>My solution is based on LGB models, where I built a separate model for each forecast horizon (0, 6, 12, 24) and target (updrs_1, updrs_2, updrs_3, updrs_4).</p>\n<p>The key variables I utilized for all targets were:</p>\n<ul>\n<li>\"visit_month\"</li>\n<li>\"num_visits\": Number of visits the patient had before the visit_month</li>\n<li>\"relation\" : Relation between these two variables </li>\n</ul>\n<p>The objective function was MAE. </p>\n<p>With these features, I achieved:<br>\n<strong>CV ~ 54.57 (public score: 54.5, private score: 60.3)</strong></p>\n<p>It is worth to say that about 70% of my submissions outperformed the two I eventually selected. (Luckily I got the gold)</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F3147995%2Fa8411134509a98d73b5cedf05178a57c%2FCaptura%20desde%202023-05-19%2009-28-32.png?generation=1684482717080185&amp;alt=media\" alt=\"\"></p>\n<p><strong>FEATURE SELECTION</strong></p>\n<p>I performed an analysis to identify proteins that enhanced my local validation, particularly for updrs_1, updrs_2 and updrs_3. This was done by running multiple fold divisions and taking the average of CV to mitigate randomness.</p>\n<p><strong>OTHERS THINGS</strong></p>\n<ul>\n<li>I introduced random noise to the protein NPX values to prevent overfitting. </li>\n<li>I randomly set 15% of the protein NPX values to Null, also as a precaution against overfitting.</li>\n<li>I did target transformation for updrs_3 and updrs_4 (np.log1p/np.expm1)</li>\n</ul>\n<p>With all this <strong>My best local validation score was 53.46 (public score: 54.8, private score: 60.9).</strong></p>\n<p><strong>THINGS THAT DIDNT WORK FOR ME</strong></p>\n<ul>\n<li>Remove outliers for training</li>\n<li>Customize objective function</li>\n<li>Ensembling with different models</li>\n<li>Predict trend and then predict residuals</li>\n</ul>\n<p><strong>Lessons learned</strong></p>\n<ul>\n<li>I should have chosen one submission based on the public LB and another based on CV, instead of both relying solely on CV. </li>\n<li>Next time, I will dedicate more time to conducting a deeper Exploratory Data Analysis (EDA)./</li>\n</ul>",
  "comments": [
    {
      "id": 2268869,
      "author_name": "Jayanth Sai Marreddi",
      "author_url": "",
      "post_date": "2023-05-22T04:29:22.680000",
      "content": "<p>Thanks for sharing all of your submission scores, Congrats for a solo gold!!</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2267774,
      "author_name": "The Devastator",
      "author_url": "",
      "post_date": "2023-05-21T08:17:37.560000",
      "content": "<p>Amazing that such a simple solution can get such a good score, congrats!</p>\n<p>The Devastator.</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2267635,
      "author_name": "cikir97733",
      "author_url": "",
      "post_date": "2023-05-21T06:25:04.747000",
      "content": "<p>Nice work! </p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2266329,
      "author_name": "Javier Martín",
      "author_url": "",
      "post_date": "2023-05-19T22:56:51.337000",
      "content": "<p>Congratulations on your solo gold medal <a href=\"https://www.kaggle.com/trasibulo\" target=\"_blank\">@trasibulo</a> !!</p>",
      "votes": 1,
      "replies": []
    }
  ],
  "comment_count": 4,
  "messages": [
    {
      "id": 2265379,
      "postDate": "2023-05-19T08:09:28.267Z",
      "content": "<p>First of all, congratulations to the winners!</p>\n<p>My solution is based on LGB models, where I built a separate model for each forecast horizon (0, 6, 12, 24) and target (updrs_1, updrs_2, updrs_3, updrs_4).</p>\n<p>The key variables I utilized for all targets were:</p>\n<ul>\n<li>\"visit_month\"</li>\n<li>\"num_visits\": Number of visits the patient had before the visit_month</li>\n<li>\"relation\" : Relation between these two variables </li>\n</ul>\n<p>The objective function was MAE. </p>\n<p>With these features, I achieved:<br>\n<strong>CV ~ 54.57 (public score: 54.5, private score: 60.3)</strong></p>\n<p>It is worth to say that about 70% of my submissions outperformed the two I eventually selected. (Luckily I got the gold)</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F3147995%2Fa8411134509a98d73b5cedf05178a57c%2FCaptura%20desde%202023-05-19%2009-28-32.png?generation=1684482717080185&amp;alt=media\" alt=\"\"></p>\n<p><strong>FEATURE SELECTION</strong></p>\n<p>I performed an analysis to identify proteins that enhanced my local validation, particularly for updrs_1, updrs_2 and updrs_3. This was done by running multiple fold divisions and taking the average of CV to mitigate randomness.</p>\n<p><strong>OTHERS THINGS</strong></p>\n<ul>\n<li>I introduced random noise to the protein NPX values to prevent overfitting. </li>\n<li>I randomly set 15% of the protein NPX values to Null, also as a precaution against overfitting.</li>\n<li>I did target transformation for updrs_3 and updrs_4 (np.log1p/np.expm1)</li>\n</ul>\n<p>With all this <strong>My best local validation score was 53.46 (public score: 54.8, private score: 60.9).</strong></p>\n<p><strong>THINGS THAT DIDNT WORK FOR ME</strong></p>\n<ul>\n<li>Remove outliers for training</li>\n<li>Customize objective function</li>\n<li>Ensembling with different models</li>\n<li>Predict trend and then predict residuals</li>\n</ul>\n<p><strong>Lessons learned</strong></p>\n<ul>\n<li>I should have chosen one submission based on the public LB and another based on CV, instead of both relying solely on CV. </li>\n<li>Next time, I will dedicate more time to conducting a deeper Exploratory Data Analysis (EDA)./</li>\n</ul>",
      "rawMarkdown": "First of all, congratulations to the winners!\n\nMy solution is based on LGB models, where I built a separate model for each forecast horizon (0, 6, 12, 24) and target (updrs_1, updrs_2, updrs_3, updrs_4).\n\nThe key variables I utilized for all targets were:\n- \"visit_month\"\n- \"num_visits\": Number of visits the patient had before the visit_month\n- \"relation\" : Relation between these two variables \n\nThe objective function was MAE. \n\nWith these features, I achieved:\n**CV ~ 54.57 (public score: 54.5, private score: 60.3)**\n\nIt is worth to say that about 70% of my submissions outperformed the two I eventually selected. (Luckily I got the gold)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F3147995%2Fa8411134509a98d73b5cedf05178a57c%2FCaptura%20desde%202023-05-19%2009-28-32.png?generation=1684482717080185&alt=media)\n\n**FEATURE SELECTION**\n\nI performed an analysis to identify proteins that enhanced my local validation, particularly for updrs_1, updrs_2 and updrs_3. This was done by running multiple fold divisions and taking the average of CV to mitigate randomness.\n\n**OTHERS THINGS**\n- I introduced random noise to the protein NPX values to prevent overfitting. \n- I randomly set 15% of the protein NPX values to Null, also as a precaution against overfitting.\n- I did target transformation for updrs_3 and updrs_4 (np.log1p/np.expm1)\n\n\nWith all this **My best local validation score was 53.46 (public score: 54.8, private score: 60.9).**\n\n**THINGS THAT DIDNT WORK FOR ME**\n\n- Remove outliers for training\n- Customize objective function\n- Ensembling with different models\n- Predict trend and then predict residuals\n\n\n\n**Lessons learned**\n- I should have chosen one submission based on the public LB and another based on CV, instead of both relying solely on CV. \n- Next time, I will dedicate more time to conducting a deeper Exploratory Data Analysis (EDA)./",
      "votes": 21
    },
    {
      "id": 2268869,
      "postDate": "2023-05-22T04:29:22.680Z",
      "content": "<p>Thanks for sharing all of your submission scores, Congrats for a solo gold!!</p>",
      "rawMarkdown": "Thanks for sharing all of your submission scores, Congrats for a solo gold!!",
      "votes": 1
    },
    {
      "id": 2267774,
      "postDate": "2023-05-21T08:17:37.560Z",
      "content": "<p>Amazing that such a simple solution can get such a good score, congrats!</p>\n<p>The Devastator.</p>",
      "rawMarkdown": "Amazing that such a simple solution can get such a good score, congrats!\n\nThe Devastator.\n",
      "votes": 1
    },
    {
      "id": 2267635,
      "postDate": "2023-05-21T06:25:04.747Z",
      "content": "<p>Nice work! </p>",
      "rawMarkdown": "Nice work! ",
      "votes": 1
    },
    {
      "id": 2266329,
      "postDate": "2023-05-19T22:56:51.337Z",
      "content": "<p>Congratulations on your solo gold medal <a href=\"https://www.kaggle.com/trasibulo\" target=\"_blank\">@trasibulo</a> !!</p>",
      "rawMarkdown": "Congratulations on your solo gold medal @trasibulo !!",
      "votes": 1
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-19T14:12:38Z",
  "competition_id": 37794,
  "competition_slug": "amp-parkinsons-disease-progression-prediction",
  "team_id": 10053368,
  "solution_url": "/competitions/amp-parkinsons-disease-progression-prediction/writeups/fnoa-13th-place-solution"
}