{
  "id": 411546,
  "title": "3rd place solution",
  "content": "<p>First of all, I would like to thank Kaggle and AMP PD for organizing this great competition. I would also like to thank all the kagglers who participated in this competition. I am very happy to have won my first gold medal and also to have won a prize.</p>\n<p>My solution is simple and consists of three main functions.</p>\n<h2>1. Grouping</h2>\n<p>As many have pointed out, I have divided the groups into two, each optimized for a different visit interval (6 or 12 months).<br>\nOne key point is that we need to focus not only on the 6th month, but also on the 18th month. There are patients who are missing the 6th month but have the 18th month present, and this patient is not healthy.<br>\nBy using the cumulative minimum function, I considered patients with either the 6th month or the 18th month present as unhealthy.</p>\n<h4>[Group A : Healthy]</h4>\n<ul>\n<li>Patients with a minimum visit interval of 12 months or more</li>\n</ul>\n<h4>[Group B : Unhealthy]</h4>\n<ul>\n<li>Patients with a minimum visit interval of 6 months or less</li>\n</ul>\n<h2>2. Labeling (mainly Group B)</h2>\n<p>As I looked at the data for Group B, the unhealthy group, I found several patterns. The frequency of protein collection and protein information are linked to the severity of symptoms. I then generated several labels based on protein collection frequency and protein information and used them as features.</p>\n<p>The following 9 labels were finally adopted.</p>\n<h4>[more severe symptoms]</h4>\n<ul>\n<li>Protein was collected at 6 months</li>\n<li>Protein was collected at 6 months and again at 12 months</li>\n<li>Low number of unique \"UniPort\" (approximately the bottom 20%)</li>\n<li>Low number of unique \"UniPort\" (approximately the bottom 10%)</li>\n</ul>\n<h4>[milder symptoms]</h4>\n<ul>\n<li>Protein not collected at 6 months</li>\n<li>Protein was collected at 6 months but not at 12 months</li>\n<li>Protein not collected at 6 months, but collected at 18 months</li>\n<li>High number of unique \"UniPort\" and high change of \"Peptide\" from the previous measurement (approximately the top 20%)</li>\n<li>High number of unique \"UniPort\" and high change of \"Peptide\" from the previous measurement (approximately the top 10%)</li>\n</ul>\n<h2>3. Modeling</h2>\n<p>Initially, I also tried LightGBM using these features, but LB worsened and I did not use them in my final model. In my final model, I used these features to obtain the coefficients (severity) by grid search.<br>\nDue to the small sample size of the train data (248 patients), some labels improved for the train data (248 patients) but worsened for the LB (50 patients). In my various experiments, I decided to adopt only those that improved both train and LB (248 + 50 patients).<br>\nI thought this would be a more robust model. As a result, the final scores were also stable.</p>",
  "comments": [
    {
      "id": 2274336,
      "author_name": "Xiao-Su (Frank) Hu",
      "author_url": "",
      "post_date": "2023-05-25T21:03:42.190000",
      "content": "<p>Thank you very much for sharing! Congrats!</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2268657,
      "author_name": "The Devastator",
      "author_url": "",
      "post_date": "2023-05-21T22:09:21",
      "content": "<p>Extracting domain knowledge patterns by hand is VERY impressive. </p>\n<p>Congratulations, well deserved!</p>\n<p>The Devastator.</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2266133,
      "author_name": "SM Nuruzzaman Nobel",
      "author_url": "",
      "post_date": "2023-05-19T18:25:32.597000",
      "content": "<p>Congratulations!</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2266034,
      "author_name": "Chris Deotte",
      "author_url": "",
      "post_date": "2023-05-19T16:53:14.790000",
      "content": "<p>Congratulations great job solo cash gold! What type of model did you use as your final model?</p>",
      "votes": 1,
      "replies": [
        {
          "id": 2266050,
          "author_name": "Hajime Tamura",
          "author_url": "",
          "post_date": "2023-05-19T17:07:39.520000",
          "content": "<p>Thank you very much. You were my goal during the competition. My final model was a simple linear multiple regression model with partial regression coefficients obtained by grid search.</p>",
          "votes": 4,
          "replies": []
        }
      ]
    },
    {
      "id": 2272666,
      "author_name": "Hajime Tamura",
      "author_url": "",
      "post_date": "2023-05-24T16:26:17.767000",
      "content": "<p>Sorry for the delay. I have published my code. Please forgive me if some parts of the code may be hard to read.</p>\n<p><a href=\"https://www.kaggle.com/code/thajime/amp-pdpp-3rd-place-solution/notebook\" target=\"_blank\">https://www.kaggle.com/code/thajime/amp-pdpp-3rd-place-solution/notebook</a></p>",
      "votes": 0,
      "replies": []
    }
  ],
  "comment_count": 6,
  "messages": [
    {
      "id": 2266023,
      "postDate": "2023-05-19T16:41:20.433Z",
      "content": "<p>First of all, I would like to thank Kaggle and AMP PD for organizing this great competition. I would also like to thank all the kagglers who participated in this competition. I am very happy to have won my first gold medal and also to have won a prize.</p>\n<p>My solution is simple and consists of three main functions.</p>\n<h2>1. Grouping</h2>\n<p>As many have pointed out, I have divided the groups into two, each optimized for a different visit interval (6 or 12 months).<br>\nOne key point is that we need to focus not only on the 6th month, but also on the 18th month. There are patients who are missing the 6th month but have the 18th month present, and this patient is not healthy.<br>\nBy using the cumulative minimum function, I considered patients with either the 6th month or the 18th month present as unhealthy.</p>\n<h4>[Group A : Healthy]</h4>\n<ul>\n<li>Patients with a minimum visit interval of 12 months or more</li>\n</ul>\n<h4>[Group B : Unhealthy]</h4>\n<ul>\n<li>Patients with a minimum visit interval of 6 months or less</li>\n</ul>\n<h2>2. Labeling (mainly Group B)</h2>\n<p>As I looked at the data for Group B, the unhealthy group, I found several patterns. The frequency of protein collection and protein information are linked to the severity of symptoms. I then generated several labels based on protein collection frequency and protein information and used them as features.</p>\n<p>The following 9 labels were finally adopted.</p>\n<h4>[more severe symptoms]</h4>\n<ul>\n<li>Protein was collected at 6 months</li>\n<li>Protein was collected at 6 months and again at 12 months</li>\n<li>Low number of unique \"UniPort\" (approximately the bottom 20%)</li>\n<li>Low number of unique \"UniPort\" (approximately the bottom 10%)</li>\n</ul>\n<h4>[milder symptoms]</h4>\n<ul>\n<li>Protein not collected at 6 months</li>\n<li>Protein was collected at 6 months but not at 12 months</li>\n<li>Protein not collected at 6 months, but collected at 18 months</li>\n<li>High number of unique \"UniPort\" and high change of \"Peptide\" from the previous measurement (approximately the top 20%)</li>\n<li>High number of unique \"UniPort\" and high change of \"Peptide\" from the previous measurement (approximately the top 10%)</li>\n</ul>\n<h2>3. Modeling</h2>\n<p>Initially, I also tried LightGBM using these features, but LB worsened and I did not use them in my final model. In my final model, I used these features to obtain the coefficients (severity) by grid search.<br>\nDue to the small sample size of the train data (248 patients), some labels improved for the train data (248 patients) but worsened for the LB (50 patients). In my various experiments, I decided to adopt only those that improved both train and LB (248 + 50 patients).<br>\nI thought this would be a more robust model. As a result, the final scores were also stable.</p>",
      "rawMarkdown": "First of all, I would like to thank Kaggle and AMP PD for organizing this great competition. I would also like to thank all the kagglers who participated in this competition. I am very happy to have won my first gold medal and also to have won a prize.\n\nMy solution is simple and consists of three main functions.\n\n## 1. Grouping\n\nAs many have pointed out, I have divided the groups into two, each optimized for a different visit interval (6 or 12 months).\nOne key point is that we need to focus not only on the 6th month, but also on the 18th month. There are patients who are missing the 6th month but have the 18th month present, and this patient is not healthy.\nBy using the cumulative minimum function, I considered patients with either the 6th month or the 18th month present as unhealthy.\n\n#### [Group A : Healthy]\n- Patients with a minimum visit interval of 12 months or more\n#### [Group B : Unhealthy]\n- Patients with a minimum visit interval of 6 months or less\n\n## 2. Labeling (mainly Group B)\n\nAs I looked at the data for Group B, the unhealthy group, I found several patterns. The frequency of protein collection and protein information are linked to the severity of symptoms. I then generated several labels based on protein collection frequency and protein information and used them as features.\n\nThe following 9 labels were finally adopted.\n\n#### [more severe symptoms]\n- Protein was collected at 6 months\n- Protein was collected at 6 months and again at 12 months\n- Low number of unique \"UniPort\" (approximately the bottom 20%)\n- Low number of unique \"UniPort\" (approximately the bottom 10%)\n\n#### [milder symptoms]\n- Protein not collected at 6 months\n- Protein was collected at 6 months but not at 12 months\n- Protein not collected at 6 months, but collected at 18 months\n- High number of unique \"UniPort\" and high change of \"Peptide\" from the previous measurement (approximately the top 20%)\n- High number of unique \"UniPort\" and high change of \"Peptide\" from the previous measurement (approximately the top 10%)\n\n## 3. Modeling\n\nInitially, I also tried LightGBM using these features, but LB worsened and I did not use them in my final model. In my final model, I used these features to obtain the coefficients (severity) by grid search.\nDue to the small sample size of the train data (248 patients), some labels improved for the train data (248 patients) but worsened for the LB (50 patients). In my various experiments, I decided to adopt only those that improved both train and LB (248 + 50 patients).\nI thought this would be a more robust model. As a result, the final scores were also stable.",
      "votes": 18
    },
    {
      "id": 2274336,
      "postDate": "2023-05-25T21:03:42.190Z",
      "content": "<p>Thank you very much for sharing! Congrats!</p>",
      "rawMarkdown": "Thank you very much for sharing! Congrats!",
      "votes": 1
    },
    {
      "id": 2268657,
      "postDate": "2023-05-21T22:09:21Z",
      "content": "<p>Extracting domain knowledge patterns by hand is VERY impressive. </p>\n<p>Congratulations, well deserved!</p>\n<p>The Devastator.</p>",
      "rawMarkdown": "Extracting domain knowledge patterns by hand is VERY impressive. \n\nCongratulations, well deserved!\n\nThe Devastator.\n",
      "votes": 1
    },
    {
      "id": 2266133,
      "postDate": "2023-05-19T18:25:32.597Z",
      "content": "<p>Congratulations!</p>",
      "rawMarkdown": "Congratulations!",
      "votes": 1
    },
    {
      "id": 2266034,
      "postDate": "2023-05-19T16:53:14.790Z",
      "content": "<p>Congratulations great job solo cash gold! What type of model did you use as your final model?</p>",
      "rawMarkdown": "Congratulations great job solo cash gold! What type of model did you use as your final model?",
      "votes": 1,
      "replies": [
        {
          "id": 2266050,
          "postDate": "2023-05-19T17:07:39.520Z",
          "content": "<p>Thank you very much. You were my goal during the competition. My final model was a simple linear multiple regression model with partial regression coefficients obtained by grid search.</p>",
          "rawMarkdown": "Thank you very much. You were my goal during the competition. My final model was a simple linear multiple regression model with partial regression coefficients obtained by grid search.",
          "votes": 4
        }
      ]
    },
    {
      "id": 2272666,
      "postDate": "2023-05-24T16:26:17.767Z",
      "content": "<p>Sorry for the delay. I have published my code. Please forgive me if some parts of the code may be hard to read.</p>\n<p><a href=\"https://www.kaggle.com/code/thajime/amp-pdpp-3rd-place-solution/notebook\" target=\"_blank\">https://www.kaggle.com/code/thajime/amp-pdpp-3rd-place-solution/notebook</a></p>",
      "rawMarkdown": "Sorry for the delay. I have published my code. Please forgive me if some parts of the code may be hard to read.\n\n[https://www.kaggle.com/code/thajime/amp-pdpp-3rd-place-solution/notebook](https://www.kaggle.com/code/thajime/amp-pdpp-3rd-place-solution/notebook)"
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-19T14:11:33Z",
  "competition_id": 37794,
  "competition_slug": "amp-parkinsons-disease-progression-prediction",
  "team_id": 10071564,
  "solution_url": "/competitions/amp-parkinsons-disease-progression-prediction/writeups/hajime-tamura-3rd-place-solution"
}