{
  "id": 394855,
  "title": "Godday's Solution that didn't Appear in Public Notebooks.",
  "content": "<p>This competition is full of positions, and I don't know if I can get a good result in the end. But I figured I'd forget about the game if I waited another 3 months, so I decided to share my solution anyway.</p>\n<h2>0. Preface:</h2>\n<p>Hi all people diving in this competition,</p>\n<p>We had a very memorable racing experience together (at least for me). I learned a lot from this competition, and to be honest, I'm just a newbie in machine learning and time series research. I met a lot of talent here <a href=\"https://www.kaggle.com/cdeotte\" target=\"_blank\">@cdeotte</a> <a href=\"https://www.kaggle.com/kaggleqrdl\" target=\"_blank\">@kaggleqrdl</a> <a href=\"https://www.kaggle.com/joshuascj\" target=\"_blank\">@joshuascj</a> <a href=\"https://www.kaggle.com/titericz\" target=\"_blank\">@titericz</a> <a href=\"https://www.kaggle.com/batprem\" target=\"_blank\">@batprem</a> <a href=\"https://www.kaggle.com/vitalykudelya\" target=\"_blank\">@vitalykudelya</a> . Too many friends for me to put them all here.<br>\nThey kindly shared good baselines, ideas and data, which taught me a lot. I must say that we have reached such score by standing on the shoulders of giants.</p>\n<h2>1. solution:</h2>\n<h3>1.1. ideas</h3>\n<p>Our team used GRU blending with XGBoost as a solution.<br>\nThe composition of time series data is probably: (this is my understanding, I hope there is no error in expression)</p>\n<p>$$timeseries=trend+otherinformantion+noise$$</p>\n<p>The general idea is to use GRU to capture the \"trend\" information of the data, and XGBoost to capture \"other information\".</p>\n<p>Expressed in pseudocode:</p>\n<p><strong>Fit stage</strong></p>\n<p><code>GRU. fit(trend_data)</code><br>\n<code>XGB.train(X_XGB[other_information_features], residual_data)</code></p>\n<p><strong>Inference stage</strong><br>\n<code>residual_data_pred=XGB.predict(X_XGB[other_information_features])</code><br>\n<code>trend_data_pred = GRU. predict(X_GRU)</code><br>\n<code>sub_data_pred=trend_data_pred +residual_data_pred</code></p>\n<h3>1.2. Cross-validation</h3>\n<ol>\n<li>When we train GRU, I predict 5 months totally. I use rolling-window CV method for 5 times.</li>\n</ol>\n<p><strong>Results:</strong> 1st month: 1.333; 3rd month: 2.47; 4th month: 2.95; 5th month: 3.39</p>\n<ol>\n<li>When we train XGB, we use Group CV results for 3 times.<br>\n<strong>Results:</strong> 1st month: Nan; 3rd month: 2.34; 4th month: 2.74; 5th month: 3.12</li>\n<li>Improve:</li>\n<li><strong>Results:</strong> 1st month: Nan; 3rd month: 0.13; 4th month: 0.20; 5th month: 0.26</li>\n</ol>\n<h3>1.3. LB tests:</h3>\n<p>Also, I use LB to determine my CV’s performance.<br>\nI treat January (LB) as \"March\", \"April\" and \"May\" respectively to output the results. (Just slide the GRU forecast starting point backwards from 2022-12-01.)</p>\n<p><strong>Only GRU results:</strong> 3rd month: 2.82, 4th month: 3.15, 5th month: 3.4</p>\n<p><strong>GRU blending XGB</strong>: 3rd month: 2.66, 4th month:2.8, 5th month: 2.5</p>\n<p><strong>Improve</strong>: 3rd month: 0.16, 4th month:0.35, 5th month: 0.9 (Maybe this is somehow the luck)</p>\n<h3>1.4. Conclusion</h3>\n<p>Both CV score and LB score all get improvement. XGB can help GRU. Thank you. <br>\nGood luck to us.</p>",
  "comments": [
    {
      "id": 2184020,
      "author_name": "Siddharth Kumar",
      "author_url": "",
      "post_date": "2023-03-16T05:04:09.440000",
      "content": "<p>Thank you for sharing your solution! It's great to see how your team combined GRU and XGBoost to capture both trend and other information in the data. Your cross-validation and LB tests demonstrate the improvement achieved by blending the two models. It's always interesting to see different approaches to a problem, and your solution offers valuable insights. Good luck, and I hope your solution performs well on the private leaderboard!</p>",
      "votes": 3,
      "replies": [
        {
          "id": 2184035,
          "author_name": "Shiner",
          "author_url": "",
          "post_date": "2023-03-16T05:13:29.367000",
          "content": "<p>thank you for your good wishes! <a href=\"https://www.kaggle.com/siddharthkumarsah\" target=\"_blank\">@siddharthkumarsah</a> . I hope my solution can get a satisfied result, but there are so many talents in this competition. Anyway, wish us good luck.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 2183891,
      "author_name": "@kaggleqrdl",
      "author_url": "",
      "post_date": "2023-03-16T02:26:20.697000",
      "content": "<p>I found this to be the most intriguing solution.   However, I think the devil is somewhat in the details.  I tried similar things, but couldn't quite figure out how to predict 'trend' or when I did, the improvements were somewhat marginal.  </p>\n<p><a href=\"https://www.kaggle.com/judith007\" target=\"_blank\">@judith007</a> Is the trend here global or per county? </p>",
      "votes": 1,
      "replies": [
        {
          "id": 2184014,
          "author_name": "Shiner",
          "author_url": "",
          "post_date": "2023-03-16T05:01:57.227000",
          "content": "<p>Trends do not exist in every county, but most counties with high active/popularity have trends, (up or down). But there are a small number of (very few) towns with very low activity that also have a relatively stable upward trend. </p>\n<p>My model tells me that the overall/global trend is all up, but slightly. Somehow it is similar to the Linear Model results, that's why linear model works well in this competition I guess.</p>\n<p>As analyzed by many Kagglers, last value is a good choice for small counties, because small county didn't have a stable trend. Instead of guessing whether they will rise or fall in the future, it is better to keep the current value unchanged and you may get more Good SMAPE.</p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 2182445,
      "author_name": "DongYK",
      "author_url": "",
      "post_date": "2023-03-15T05:39:20.787000",
      "content": "<p>Thank you for sharing your solution.<br>\nI wanted to use LSTM+XGBoost, but I couldn't come up with a way. <br>\nNow, I can figure out.</p>",
      "votes": 1,
      "replies": [
        {
          "id": 2182458,
          "author_name": "Shiner",
          "author_url": "",
          "post_date": "2023-03-15T05:47:21.953000",
          "content": "<p>Thank you that you like it. If my solution works well in Private LB, I will share my code.</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 2182354,
      "author_name": "tarick.morty",
      "author_url": "",
      "post_date": "2023-03-15T04:26:14.953000",
      "content": "<p>Great job <a href=\"https://www.kaggle.com/judith007\" target=\"_blank\">@judith007</a> congratulations for making the ensemble work in your favour. Interesting to see the 5th month outperforming 3 and 4month sMAPE. </p>",
      "votes": 1,
      "replies": [
        {
          "id": 2182394,
          "author_name": "Shiner",
          "author_url": "",
          "post_date": "2023-03-15T05:02:15.977000",
          "content": "<p>Thank you. I think your work gets a much better  CV score than mine, congrats. <a href=\"https://www.kaggle.com/tarique7\" target=\"_blank\">@tarique7</a> </p>",
          "votes": 1,
          "replies": [
            {
              "id": 2182444,
              "author_name": "tarick.morty",
              "author_url": "",
              "post_date": "2023-03-15T05:38:46.897000",
              "content": "<p>Well it's really hard to gauge, CV looks good so we will see 😄</p>",
              "votes": 1,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2182327,
      "author_name": "@kaggleqrdl",
      "author_url": "",
      "post_date": "2023-03-15T04:02:25.307000",
      "content": "<p>This is a really great result for 5th month - GRU blending XGB: 3rd month: 2.66, 4th month:2.80, 5th month: 2.50</p>\n<p>Curious though that it performs better than your 4th and 3rd month.  Sort of the opposite to what I saw.</p>",
      "votes": 1,
      "replies": [
        {
          "id": 2182392,
          "author_name": "Shiner",
          "author_url": "",
          "post_date": "2023-03-15T05:01:10.260000",
          "content": "<p>Yes, it is quite strange. However, my CV result on 5th month is 3.15, which is more reasonable and reliable.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 2183021,
      "author_name": "CPMP",
      "author_url": "",
      "post_date": "2023-03-15T12:36:07.673000",
      "content": "<p>Interesting solution. I used a similar one for web traffic forecasting competition (WTF), i.e. trained a NN, then trained XGB on the residuals. I did not have time to explore this here unfortunately. I tis good to see it worked for you.</p>\n<p>My WTF solution is at <a href=\"https://github.com/jfpuget/Kaggle\" target=\"_blank\">https://github.com/jfpuget/Kaggle</a></p>",
      "votes": 2,
      "replies": [
        {
          "id": 2184030,
          "author_name": "Shiner",
          "author_url": "",
          "post_date": "2023-03-16T05:09:54.250000",
          "content": "<p>Thank you for your comment! <a href=\"https://www.kaggle.com/cpmpml\" target=\"_blank\">@cpmpml</a> Yes, my solution is quite similar to yours, because I did browse your code before I implement my solution. It did work to improve GRU.</p>",
          "votes": 2,
          "replies": []
        }
      ]
    }
  ],
  "comment_count": 13,
  "messages": [
    {
      "id": 2182292,
      "postDate": "2023-03-15T03:36:21.003Z",
      "content": "<p>This competition is full of positions, and I don't know if I can get a good result in the end. But I figured I'd forget about the game if I waited another 3 months, so I decided to share my solution anyway.</p>\n<h2>0. Preface:</h2>\n<p>Hi all people diving in this competition,</p>\n<p>We had a very memorable racing experience together (at least for me). I learned a lot from this competition, and to be honest, I'm just a newbie in machine learning and time series research. I met a lot of talent here <a href=\"https://www.kaggle.com/cdeotte\" target=\"_blank\">@cdeotte</a> <a href=\"https://www.kaggle.com/kaggleqrdl\" target=\"_blank\">@kaggleqrdl</a> <a href=\"https://www.kaggle.com/joshuascj\" target=\"_blank\">@joshuascj</a> <a href=\"https://www.kaggle.com/titericz\" target=\"_blank\">@titericz</a> <a href=\"https://www.kaggle.com/batprem\" target=\"_blank\">@batprem</a> <a href=\"https://www.kaggle.com/vitalykudelya\" target=\"_blank\">@vitalykudelya</a> . Too many friends for me to put them all here.<br>\nThey kindly shared good baselines, ideas and data, which taught me a lot. I must say that we have reached such score by standing on the shoulders of giants.</p>\n<h2>1. solution:</h2>\n<h3>1.1. ideas</h3>\n<p>Our team used GRU blending with XGBoost as a solution.<br>\nThe composition of time series data is probably: (this is my understanding, I hope there is no error in expression)</p>\n<p>$$timeseries=trend+otherinformantion+noise$$</p>\n<p>The general idea is to use GRU to capture the \"trend\" information of the data, and XGBoost to capture \"other information\".</p>\n<p>Expressed in pseudocode:</p>\n<p><strong>Fit stage</strong></p>\n<p><code>GRU. fit(trend_data)</code><br>\n<code>XGB.train(X_XGB[other_information_features], residual_data)</code></p>\n<p><strong>Inference stage</strong><br>\n<code>residual_data_pred=XGB.predict(X_XGB[other_information_features])</code><br>\n<code>trend_data_pred = GRU. predict(X_GRU)</code><br>\n<code>sub_data_pred=trend_data_pred +residual_data_pred</code></p>\n<h3>1.2. Cross-validation</h3>\n<ol>\n<li>When we train GRU, I predict 5 months totally. I use rolling-window CV method for 5 times.</li>\n</ol>\n<p><strong>Results:</strong> 1st month: 1.333; 3rd month: 2.47; 4th month: 2.95; 5th month: 3.39</p>\n<ol>\n<li>When we train XGB, we use Group CV results for 3 times.<br>\n<strong>Results:</strong> 1st month: Nan; 3rd month: 2.34; 4th month: 2.74; 5th month: 3.12</li>\n<li>Improve:</li>\n<li><strong>Results:</strong> 1st month: Nan; 3rd month: 0.13; 4th month: 0.20; 5th month: 0.26</li>\n</ol>\n<h3>1.3. LB tests:</h3>\n<p>Also, I use LB to determine my CV’s performance.<br>\nI treat January (LB) as \"March\", \"April\" and \"May\" respectively to output the results. (Just slide the GRU forecast starting point backwards from 2022-12-01.)</p>\n<p><strong>Only GRU results:</strong> 3rd month: 2.82, 4th month: 3.15, 5th month: 3.4</p>\n<p><strong>GRU blending XGB</strong>: 3rd month: 2.66, 4th month:2.8, 5th month: 2.5</p>\n<p><strong>Improve</strong>: 3rd month: 0.16, 4th month:0.35, 5th month: 0.9 (Maybe this is somehow the luck)</p>\n<h3>1.4. Conclusion</h3>\n<p>Both CV score and LB score all get improvement. XGB can help GRU. Thank you. <br>\nGood luck to us.</p>",
      "rawMarkdown": "This competition is full of positions, and I don't know if I can get a good result in the end. But I figured I'd forget about the game if I waited another 3 months, so I decided to share my solution anyway.\n\n## 0. Preface:\nHi all people diving in this competition,\n\nWe had a very memorable racing experience together (at least for me). I learned a lot from this competition, and to be honest, I'm just a newbie in machine learning and time series research. I met a lot of talent here @cdeotte @kaggleqrdl @joshuascj @titericz @batprem @vitalykudelya . Too many friends for me to put them all here.\nThey kindly shared good baselines, ideas and data, which taught me a lot. I must say that we have reached such score by standing on the shoulders of giants.\n\n## 1. solution:\n### 1.1. ideas\n\nOur team used GRU blending with XGBoost as a solution.\nThe composition of time series data is probably: (this is my understanding, I hope there is no error in expression)\n\n$$timeseries=trend+otherinformantion+noise$$\n\nThe general idea is to use GRU to capture the \"trend\" information of the data, and XGBoost to capture \"other information\".\n\nExpressed in pseudocode:\n\n**Fit stage**\n\n`GRU. fit(trend_data)`\n`XGB.train(X_XGB[other_information_features], residual_data)`\n\n**Inference stage**\n`residual_data_pred=XGB.predict(X_XGB[other_information_features])`\n`trend_data_pred = GRU. predict(X_GRU)`\n`sub_data_pred=trend_data_pred +residual_data_pred`\n\n### 1.2. Cross-validation\n1.\tWhen we train GRU, I predict 5 months totally. I use rolling-window CV method for 5 times.\n \n**Results:** 1st month: 1.333; 3rd month: 2.47; 4th month: 2.95; 5th month: 3.39\n2.\tWhen we train XGB, we use Group CV results for 3 times.\n**Results:** 1st month: Nan; 3rd month: 2.34; 4th month: 2.74; 5th month: 3.12\n3.\tImprove:\n4.\t**Results:** 1st month: Nan; 3rd month: 0.13; 4th month: 0.20; 5th month: 0.26\n\n### 1.3. LB tests:\n\nAlso, I use LB to determine my CV’s performance.\nI treat January (LB) as \"March\", \"April\" and \"May\" respectively to output the results. (Just slide the GRU forecast starting point backwards from 2022-12-01.)\n\n**Only GRU results:** 3rd month: 2.82, 4th month: 3.15, 5th month: 3.4\n\n**GRU blending XGB**: 3rd month: 2.66, 4th month:2.8, 5th month: 2.5\n\n**Improve**: 3rd month: 0.16, 4th month:0.35, 5th month: 0.9 (Maybe this is somehow the luck)\n\n### 1.4. Conclusion\n\nBoth CV score and LB score all get improvement. XGB can help GRU. Thank you. \nGood luck to us.\n\n",
      "votes": 18
    },
    {
      "id": 2184020,
      "postDate": "2023-03-16T05:04:09.440Z",
      "content": "<p>Thank you for sharing your solution! It's great to see how your team combined GRU and XGBoost to capture both trend and other information in the data. Your cross-validation and LB tests demonstrate the improvement achieved by blending the two models. It's always interesting to see different approaches to a problem, and your solution offers valuable insights. Good luck, and I hope your solution performs well on the private leaderboard!</p>",
      "rawMarkdown": "Thank you for sharing your solution! It's great to see how your team combined GRU and XGBoost to capture both trend and other information in the data. Your cross-validation and LB tests demonstrate the improvement achieved by blending the two models. It's always interesting to see different approaches to a problem, and your solution offers valuable insights. Good luck, and I hope your solution performs well on the private leaderboard!",
      "votes": 3,
      "replies": [
        {
          "id": 2184035,
          "postDate": "2023-03-16T05:13:29.367Z",
          "content": "<p>thank you for your good wishes! <a href=\"https://www.kaggle.com/siddharthkumarsah\" target=\"_blank\">@siddharthkumarsah</a> . I hope my solution can get a satisfied result, but there are so many talents in this competition. Anyway, wish us good luck.</p>",
          "rawMarkdown": "thank you for your good wishes! @siddharthkumarsah . I hope my solution can get a satisfied result, but there are so many talents in this competition. Anyway, wish us good luck."
        }
      ]
    },
    {
      "id": 2183891,
      "postDate": "2023-03-16T02:26:20.697Z",
      "content": "<p>I found this to be the most intriguing solution.   However, I think the devil is somewhat in the details.  I tried similar things, but couldn't quite figure out how to predict 'trend' or when I did, the improvements were somewhat marginal.  </p>\n<p><a href=\"https://www.kaggle.com/judith007\" target=\"_blank\">@judith007</a> Is the trend here global or per county? </p>",
      "rawMarkdown": "I found this to be the most intriguing solution.   However, I think the devil is somewhat in the details.  I tried similar things, but couldn't quite figure out how to predict 'trend' or when I did, the improvements were somewhat marginal.  \n\n@judith007 Is the trend here global or per county? \n",
      "votes": 1,
      "replies": [
        {
          "id": 2184014,
          "postDate": "2023-03-16T05:01:57.227Z",
          "content": "<p>Trends do not exist in every county, but most counties with high active/popularity have trends, (up or down). But there are a small number of (very few) towns with very low activity that also have a relatively stable upward trend. </p>\n<p>My model tells me that the overall/global trend is all up, but slightly. Somehow it is similar to the Linear Model results, that's why linear model works well in this competition I guess.</p>\n<p>As analyzed by many Kagglers, last value is a good choice for small counties, because small county didn't have a stable trend. Instead of guessing whether they will rise or fall in the future, it is better to keep the current value unchanged and you may get more Good SMAPE.</p>",
          "rawMarkdown": "Trends do not exist in every county, but most counties with high active/popularity have trends, (up or down). But there are a small number of (very few) towns with very low activity that also have a relatively stable upward trend. \n\nMy model tells me that the overall/global trend is all up, but slightly. Somehow it is similar to the Linear Model results, that's why linear model works well in this competition I guess.\n\nAs analyzed by many Kagglers, last value is a good choice for small counties, because small county didn't have a stable trend. Instead of guessing whether they will rise or fall in the future, it is better to keep the current value unchanged and you may get more Good SMAPE.",
          "votes": 2
        }
      ]
    },
    {
      "id": 2182445,
      "postDate": "2023-03-15T05:39:20.787Z",
      "content": "<p>Thank you for sharing your solution.<br>\nI wanted to use LSTM+XGBoost, but I couldn't come up with a way. <br>\nNow, I can figure out.</p>",
      "rawMarkdown": "Thank you for sharing your solution.\nI wanted to use LSTM+XGBoost, but I couldn't come up with a way. \nNow, I can figure out.",
      "votes": 1,
      "replies": [
        {
          "id": 2182458,
          "postDate": "2023-03-15T05:47:21.953Z",
          "content": "<p>Thank you that you like it. If my solution works well in Private LB, I will share my code.</p>",
          "rawMarkdown": "Thank you that you like it. If my solution works well in Private LB, I will share my code.",
          "votes": 1
        }
      ]
    },
    {
      "id": 2182354,
      "postDate": "2023-03-15T04:26:14.953Z",
      "content": "<p>Great job <a href=\"https://www.kaggle.com/judith007\" target=\"_blank\">@judith007</a> congratulations for making the ensemble work in your favour. Interesting to see the 5th month outperforming 3 and 4month sMAPE. </p>",
      "rawMarkdown": "Great job @judith007 congratulations for making the ensemble work in your favour. Interesting to see the 5th month outperforming 3 and 4month sMAPE. ",
      "votes": 1,
      "replies": [
        {
          "id": 2182394,
          "postDate": "2023-03-15T05:02:15.977Z",
          "content": "<p>Thank you. I think your work gets a much better  CV score than mine, congrats. <a href=\"https://www.kaggle.com/tarique7\" target=\"_blank\">@tarique7</a> </p>",
          "rawMarkdown": "Thank you. I think your work gets a much better  CV score than mine, congrats. @tarique7 ",
          "votes": 1,
          "replies": [
            {
              "id": 2182444,
              "postDate": "2023-03-15T05:38:46.897Z",
              "content": "<p>Well it's really hard to gauge, CV looks good so we will see 😄</p>",
              "rawMarkdown": "Well it's really hard to gauge, CV looks good so we will see 😄",
              "votes": 1
            }
          ]
        }
      ]
    },
    {
      "id": 2182327,
      "postDate": "2023-03-15T04:02:25.307Z",
      "content": "<p>This is a really great result for 5th month - GRU blending XGB: 3rd month: 2.66, 4th month:2.80, 5th month: 2.50</p>\n<p>Curious though that it performs better than your 4th and 3rd month.  Sort of the opposite to what I saw.</p>",
      "rawMarkdown": "This is a really great result for 5th month - GRU blending XGB: 3rd month: 2.66, 4th month:2.80, 5th month: 2.50\n\nCurious though that it performs better than your 4th and 3rd month.  Sort of the opposite to what I saw.",
      "votes": 1,
      "replies": [
        {
          "id": 2182392,
          "postDate": "2023-03-15T05:01:10.260Z",
          "content": "<p>Yes, it is quite strange. However, my CV result on 5th month is 3.15, which is more reasonable and reliable.</p>",
          "rawMarkdown": "Yes, it is quite strange. However, my CV result on 5th month is 3.15, which is more reasonable and reliable."
        }
      ]
    },
    {
      "id": 2183021,
      "postDate": "2023-03-15T12:36:07.673Z",
      "content": "<p>Interesting solution. I used a similar one for web traffic forecasting competition (WTF), i.e. trained a NN, then trained XGB on the residuals. I did not have time to explore this here unfortunately. I tis good to see it worked for you.</p>\n<p>My WTF solution is at <a href=\"https://github.com/jfpuget/Kaggle\" target=\"_blank\">https://github.com/jfpuget/Kaggle</a></p>",
      "rawMarkdown": "Interesting solution. I used a similar one for web traffic forecasting competition (WTF), i.e. trained a NN, then trained XGB on the residuals. I did not have time to explore this here unfortunately. I tis good to see it worked for you.\n\nMy WTF solution is at https://github.com/jfpuget/Kaggle",
      "votes": 2,
      "replies": [
        {
          "id": 2184030,
          "postDate": "2023-03-16T05:09:54.250Z",
          "content": "<p>Thank you for your comment! <a href=\"https://www.kaggle.com/cpmpml\" target=\"_blank\">@cpmpml</a> Yes, my solution is quite similar to yours, because I did browse your code before I implement my solution. It did work to improve GRU.</p>",
          "rawMarkdown": "Thank you for your comment! @cpmpml Yes, my solution is quite similar to yours, because I did browse your code before I implement my solution. It did work to improve GRU.",
          "votes": 2
        }
      ]
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-19T19:27:40Z",
  "competition_id": 41881,
  "competition_slug": "godaddy-microbusiness-density-forecasting",
  "team_id": 9832840,
  "solution_url": "/competitions/godaddy-microbusiness-density-forecasting/writeups/s-g-d-godday-s-solution-that-didn-t-appear-in-publ"
}