{
  "id": 369373,
  "title": "10th place solution...my quick write-up!",
  "content": "<p><strong>Acknowledgement</strong></p>\n<p>Phew, the shakeup was massive! :) I want to thank the organizers, the Kaggle community, and the Kaggle team for this competition. Competitions like this are great opportunities for me to learn new things and update my machine-learning knowledge.</p>\n<p>I also want to thank my teammates, <a href=\"https://www.kaggle.com/runningz\" target=\"_blank\">@runningz</a>, <a href=\"https://www.kaggle.com/kunihikofurugori\" target=\"_blank\">@kunihikofurugori</a>, and <a href=\"https://www.kaggle.com/habedi\" target=\"_blank\">@habedi</a>, for their efforts and cooperation in this competition. </p>\n<p><strong>Quick Summary</strong></p>\n<p>Our final submission was a blend of two submissions files:</p>\n<ul>\n<li>The first one was the model trained by <a href=\"https://www.kaggle.com/runningz\" target=\"_blank\">@runningz</a>, which was an ensemble of three deberta-v3-base models trained (his models were trained in PyTorch, and he used pseudo-labeling to improve the results). His models were based on his knowledge of the previous feedback competitions.</li>\n<li>The second one was the stacked ensemble of 22 models from the rest of the team. The information about the stacking process is as follows:<ul>\n<li>We used <code>iterativestratification</code> with the number of folds set to four and the seed set to 42.</li>\n<li>A set of oofs based on<ul>\n<li>a model trained with deberta-v3-small, </li>\n<li>two models trained with deberta-v3-base, </li>\n<li>a model trained with deberta-v3-xsmall ,</li>\n<li>a model trained with distilroberta-base,</li>\n<li>a model trained with opt-125m,</li>\n<li>a model trained with roberta-base,</li>\n<li>two models trained with opt-350m,</li>\n<li>a model trained with electra-base-discriminator.</li></ul></li>\n<li>We used a couple of transformers without training, just embedded the text, and trained simple regressors on the numerical vectors. These models where<ul>\n<li>a model based on deberta-v3-base embeddings along with a BayesianRidge regressor,</li>\n<li>a model based on deberta-base-mnli embeddings along with a BayesianRidge regressor,</li>\n<li>a model based on deberta-v3-large embeddings along with a BayesianRidge regressor,</li>\n<li>seven models based on deberta-v3-large embeddings along with a KNN regressor with different values of k (k=2, 4, 8, 16, 32, 64, 128),</li>\n<li>a model based on deberta-base-mnli embeddings along with a BayesianRidge regressor,</li>\n<li>a model based on google-electra-base-discriminator embeddings along with a BayesianRidge regressor,</li></ul></li>\n<li>Finally, we trained a Lasso regressor on the oofs. </li>\n<li>The CV of the stacked model was 0.4473, and LB was 0.43.</li>\n<li>In the case of the models trained based on different transformers, the CV ranged in from 0.45+ to 0.49+, with deberta-v3-base being the best model in terms of CV and LB</li>\n<li>In the case of the text embedding models, the CV of our oofs (even the KNN models) was between 0.45+ to 0.54+, and the best CV belonged to deberta-v3-large with CV equal to 0.4518 and LB of 0.44 (it is fascinating to see that with just embedding and no training one can get to 0.44!)</li>\n<li>We tried different regression models as the stacker, and the best in terms of CV was Lasso</li>\n<li>Performing log transformation on the oofs and running the RobustScaler from SKlearn improved the CV a bit</li></ul></li>\n</ul>",
  "comments": [
    {
      "id": 2062727,
      "author_name": "Hassan Abedi",
      "author_url": "",
      "post_date": "2022-12-12T10:42:58.983000",
      "content": "<p>10th Place Solution (Additional content)</p>\n<p><a href=\"https://www.kaggle.com/kainsama\" target=\"_blank\">@kainsama</a> already gave an overview of our team’s top solution. Nevertheless, I added some extra information in the format mentioned in <a href=\"https://www.kaggle.com/competitions/feedback-prize-english-language-learning/discussion/369307\" target=\"_blank\">this post</a>.</p>\n<p>Overview </p>\n<p>Our top solution is the blend of the output of two ensembles. The first ensemble consists of three models: one deberta-v3-base model and two deberta-v3-large. Models were tuned separately with different hyper-parameters, such as different learning rates. Furthermore, the data used to tune them were augmented with pseudo-labels created using a separate good-performing single model. The predictions by the deberta-v3-base were given a weight of 0.4, and the predictions by the two remaining models were given a weight of 0.3 (per model) to make the out of the first ensemble. Moreover, detailed information about the second ensemble can be found in the parent post (top).</p>\n<p>Main things that worked and didn’t work</p>\n<p>Although pseudo-labelling was used in the final solution, it didn’t perform best in most cases. (See <a href=\"https://www.kaggle.com/code/kunihikofurugori/efficiency-prize-tensorflow?scriptVersionId=111796962\" target=\"_blank\">this notebook</a>; PB:~0.438 in single debate-v3-base.) Moreover, hyper-parameter tuning using Optuna also didn’t significantly boost the score on the CV. (See <a href=\"https://www.kaggle.com/code/kunihikofurugori/fb3-error-analysis/notebook\" target=\"_blank\">this notebook</a>; an improvement of about 0.001). For the models used in the stacking, their CVs ranged from 0.45 to 0.46. The models were trained and tuned separately, so model diversity was influential in improving the stacked models' average CV, which was about 0.447.</p>\n<p>Thanks and Acknowledgements<br>\nPlease see <a href=\"https://www.kaggle.com/kainsama\" target=\"_blank\">@kainsama</a>’s quick summary post (parent post; top).</p>\n<p>Team Members<br>\n<a href=\"https://www.kaggle.com/habedi\" target=\"_blank\">@habedi</a><br>\n<a href=\"https://www.kaggle.com/runningz\" target=\"_blank\">@runningz</a><br>\n<a href=\"https://www.kaggle.com/kainsama\" target=\"_blank\">@kainsama</a><br>\n<a href=\"https://www.kaggle.com/kunihikofurugori\" target=\"_blank\">@kunihikofurugori</a></p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2049473,
      "author_name": "Trushant Kalyanpur",
      "author_url": "",
      "post_date": "2022-11-30T07:10:40.327000",
      "content": "<p>Congratulations <a href=\"https://www.kaggle.com/kainsama\" target=\"_blank\">@kainsama</a> ! It seems like your team had a lot of base/small models. Did you try larger models? </p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2049336,
      "author_name": "happymentee",
      "author_url": "",
      "post_date": "2022-11-30T04:06:45.327000",
      "content": "<p>Great Work! Congrats, and Thanks for your sharing! <br>\nI am new to Kaggle, so I want to reimplement your solution. So what is the minimum GPU needed to train what your team did? </p>",
      "votes": 1,
      "replies": [
        {
          "id": 2049388,
          "author_name": "Hassan Abedi",
          "author_url": "",
          "post_date": "2022-11-30T05:27:15.237000",
          "content": "<p>We had access to an NVIDIA RTX 3090 GPU and a small cluster of V100 GPUs. Plus, Kaggle environments and Google Colab Pro. I think having an RTX 3090 is a good minimum requirement. (For training or tuning larger language models  you will need a cluster probbaly.)</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 2049422,
          "author_name": "happymentee",
          "author_url": "",
          "post_date": "2022-11-30T06:16:44.633000",
          "content": "<p>Thanks for your reply.</p>\n<p>Does GPU T4x2 only enough to train your team's model?<br>\nDoes it take a long training time, or is it unable to train?</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 2049268,
      "author_name": "Fatebinder",
      "author_url": "",
      "post_date": "2022-11-30T03:02:05.290000",
      "content": "<p>Congratulation! <br>\nInteresting solution. I did not spent much time in fb3, and not join discussion, so Idk I can update regressor. It's look like ML regressor can align linear output. Before this time, I still think CNN/RNN/ML cannot learn well to MLM's embedding output, use pooling/attention + linear that' ok. BUT maybe that only classification, regression is different.</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2049278,
      "author_name": "E-Max AI",
      "author_url": "",
      "post_date": "2022-11-30T03:08:53.667000",
      "content": "<p>LB is inaccurate<br>\nCV is inaccurate<br>\nMight come true the old saying: Older ginger is more pungent.</p>",
      "votes": 0,
      "replies": [
        {
          "id": 2049472,
          "author_name": "Trushant Kalyanpur",
          "author_url": "",
          "post_date": "2022-11-30T07:09:36.177000",
          "content": "<blockquote>\n  <p>CV is inaccurate</p>\n</blockquote>\n<p>It wasnt inaccurate though. I am not sure how you were measuring this but CV and private LB had good correlation for us. </p>",
          "votes": 1,
          "replies": []
        }
      ]
    }
  ],
  "comment_count": 8,
  "messages": [
    {
      "id": 2049179,
      "postDate": "2022-11-30T01:33:39.093Z",
      "content": "<p><strong>Acknowledgement</strong></p>\n<p>Phew, the shakeup was massive! :) I want to thank the organizers, the Kaggle community, and the Kaggle team for this competition. Competitions like this are great opportunities for me to learn new things and update my machine-learning knowledge.</p>\n<p>I also want to thank my teammates, <a href=\"https://www.kaggle.com/runningz\" target=\"_blank\">@runningz</a>, <a href=\"https://www.kaggle.com/kunihikofurugori\" target=\"_blank\">@kunihikofurugori</a>, and <a href=\"https://www.kaggle.com/habedi\" target=\"_blank\">@habedi</a>, for their efforts and cooperation in this competition. </p>\n<p><strong>Quick Summary</strong></p>\n<p>Our final submission was a blend of two submissions files:</p>\n<ul>\n<li>The first one was the model trained by <a href=\"https://www.kaggle.com/runningz\" target=\"_blank\">@runningz</a>, which was an ensemble of three deberta-v3-base models trained (his models were trained in PyTorch, and he used pseudo-labeling to improve the results). His models were based on his knowledge of the previous feedback competitions.</li>\n<li>The second one was the stacked ensemble of 22 models from the rest of the team. The information about the stacking process is as follows:<ul>\n<li>We used <code>iterativestratification</code> with the number of folds set to four and the seed set to 42.</li>\n<li>A set of oofs based on<ul>\n<li>a model trained with deberta-v3-small, </li>\n<li>two models trained with deberta-v3-base, </li>\n<li>a model trained with deberta-v3-xsmall ,</li>\n<li>a model trained with distilroberta-base,</li>\n<li>a model trained with opt-125m,</li>\n<li>a model trained with roberta-base,</li>\n<li>two models trained with opt-350m,</li>\n<li>a model trained with electra-base-discriminator.</li></ul></li>\n<li>We used a couple of transformers without training, just embedded the text, and trained simple regressors on the numerical vectors. These models where<ul>\n<li>a model based on deberta-v3-base embeddings along with a BayesianRidge regressor,</li>\n<li>a model based on deberta-base-mnli embeddings along with a BayesianRidge regressor,</li>\n<li>a model based on deberta-v3-large embeddings along with a BayesianRidge regressor,</li>\n<li>seven models based on deberta-v3-large embeddings along with a KNN regressor with different values of k (k=2, 4, 8, 16, 32, 64, 128),</li>\n<li>a model based on deberta-base-mnli embeddings along with a BayesianRidge regressor,</li>\n<li>a model based on google-electra-base-discriminator embeddings along with a BayesianRidge regressor,</li></ul></li>\n<li>Finally, we trained a Lasso regressor on the oofs. </li>\n<li>The CV of the stacked model was 0.4473, and LB was 0.43.</li>\n<li>In the case of the models trained based on different transformers, the CV ranged in from 0.45+ to 0.49+, with deberta-v3-base being the best model in terms of CV and LB</li>\n<li>In the case of the text embedding models, the CV of our oofs (even the KNN models) was between 0.45+ to 0.54+, and the best CV belonged to deberta-v3-large with CV equal to 0.4518 and LB of 0.44 (it is fascinating to see that with just embedding and no training one can get to 0.44!)</li>\n<li>We tried different regression models as the stacker, and the best in terms of CV was Lasso</li>\n<li>Performing log transformation on the oofs and running the RobustScaler from SKlearn improved the CV a bit</li></ul></li>\n</ul>",
      "rawMarkdown": "**Acknowledgement**\n\nPhew, the shakeup was massive! :) I want to thank the organizers, the Kaggle community, and the Kaggle team for this competition. Competitions like this are great opportunities for me to learn new things and update my machine-learning knowledge.\n\nI also want to thank my teammates, @runningz, @kunihikofurugori, and @habedi, for their efforts and cooperation in this competition. \n\n**Quick Summary**\n\nOur final submission was a blend of two submissions files:\n- The first one was the model trained by @runningz, which was an ensemble of three deberta-v3-base models trained (his models were trained in PyTorch, and he used pseudo-labeling to improve the results). His models were based on his knowledge of the previous feedback competitions.\n- The second one was the stacked ensemble of 22 models from the rest of the team. The information about the stacking process is as follows:\n     - We used `iterativestratification` with the number of folds set to four and the seed set to 42.\n     - A set of oofs based on\n        - a model trained with deberta-v3-small, \n        - two models trained with deberta-v3-base, \n        - a model trained with deberta-v3-xsmall ,\n        - a model trained with distilroberta-base,\n        - a model trained with opt-125m,\n        - a model trained with roberta-base,\n        - two models trained with opt-350m,\n        - a model trained with electra-base-discriminator.\n     - We used a couple of transformers without training, just embedded the text, and trained simple regressors on the numerical vectors. These models where\n        - a model based on deberta-v3-base embeddings along with a BayesianRidge regressor,\n        - a model based on deberta-base-mnli embeddings along with a BayesianRidge regressor,\n        - a model based on deberta-v3-large embeddings along with a BayesianRidge regressor,\n        - seven models based on deberta-v3-large embeddings along with a KNN regressor with different values of k (k=2, 4, 8, 16, 32, 64, 128),\n        - a model based on deberta-base-mnli embeddings along with a BayesianRidge regressor,\n       - a model based on google-electra-base-discriminator embeddings along with a BayesianRidge regressor,\n     - Finally, we trained a Lasso regressor on the oofs. \n     - The CV of the stacked model was 0.4473, and LB was 0.43.\n     - In the case of the models trained based on different transformers, the CV ranged in from 0.45+ to 0.49+, with deberta-v3-base being the best model in terms of CV and LB\n     - In the case of the text embedding models, the CV of our oofs (even the KNN models) was between 0.45+ to 0.54+, and the best CV belonged to deberta-v3-large with CV equal to 0.4518 and LB of 0.44 (it is fascinating to see that with just embedding and no training one can get to 0.44!)\n     - We tried different regression models as the stacker, and the best in terms of CV was Lasso\n     - Performing log transformation on the oofs and running the RobustScaler from SKlearn improved the CV a bit\n\n\n\n\n\n\n\n",
      "votes": 30
    },
    {
      "id": 2062727,
      "postDate": "2022-12-12T10:42:58.983Z",
      "content": "<p>10th Place Solution (Additional content)</p>\n<p><a href=\"https://www.kaggle.com/kainsama\" target=\"_blank\">@kainsama</a> already gave an overview of our team’s top solution. Nevertheless, I added some extra information in the format mentioned in <a href=\"https://www.kaggle.com/competitions/feedback-prize-english-language-learning/discussion/369307\" target=\"_blank\">this post</a>.</p>\n<p>Overview </p>\n<p>Our top solution is the blend of the output of two ensembles. The first ensemble consists of three models: one deberta-v3-base model and two deberta-v3-large. Models were tuned separately with different hyper-parameters, such as different learning rates. Furthermore, the data used to tune them were augmented with pseudo-labels created using a separate good-performing single model. The predictions by the deberta-v3-base were given a weight of 0.4, and the predictions by the two remaining models were given a weight of 0.3 (per model) to make the out of the first ensemble. Moreover, detailed information about the second ensemble can be found in the parent post (top).</p>\n<p>Main things that worked and didn’t work</p>\n<p>Although pseudo-labelling was used in the final solution, it didn’t perform best in most cases. (See <a href=\"https://www.kaggle.com/code/kunihikofurugori/efficiency-prize-tensorflow?scriptVersionId=111796962\" target=\"_blank\">this notebook</a>; PB:~0.438 in single debate-v3-base.) Moreover, hyper-parameter tuning using Optuna also didn’t significantly boost the score on the CV. (See <a href=\"https://www.kaggle.com/code/kunihikofurugori/fb3-error-analysis/notebook\" target=\"_blank\">this notebook</a>; an improvement of about 0.001). For the models used in the stacking, their CVs ranged from 0.45 to 0.46. The models were trained and tuned separately, so model diversity was influential in improving the stacked models' average CV, which was about 0.447.</p>\n<p>Thanks and Acknowledgements<br>\nPlease see <a href=\"https://www.kaggle.com/kainsama\" target=\"_blank\">@kainsama</a>’s quick summary post (parent post; top).</p>\n<p>Team Members<br>\n<a href=\"https://www.kaggle.com/habedi\" target=\"_blank\">@habedi</a><br>\n<a href=\"https://www.kaggle.com/runningz\" target=\"_blank\">@runningz</a><br>\n<a href=\"https://www.kaggle.com/kainsama\" target=\"_blank\">@kainsama</a><br>\n<a href=\"https://www.kaggle.com/kunihikofurugori\" target=\"_blank\">@kunihikofurugori</a></p>",
      "rawMarkdown": "10th Place Solution (Additional content)\n\n@kainsama already gave an overview of our team’s top solution. Nevertheless, I added some extra information in the format mentioned in [this post]( https://www.kaggle.com/competitions/feedback-prize-english-language-learning/discussion/369307).\n\nOverview \n\nOur top solution is the blend of the output of two ensembles. The first ensemble consists of three models: one deberta-v3-base model and two deberta-v3-large. Models were tuned separately with different hyper-parameters, such as different learning rates. Furthermore, the data used to tune them were augmented with pseudo-labels created using a separate good-performing single model. The predictions by the deberta-v3-base were given a weight of 0.4, and the predictions by the two remaining models were given a weight of 0.3 (per model) to make the out of the first ensemble. Moreover, detailed information about the second ensemble can be found in the parent post (top).\n\nMain things that worked and didn’t work\n\nAlthough pseudo-labelling was used in the final solution, it didn’t perform best in most cases. (See [this notebook](https://www.kaggle.com/code/kunihikofurugori/efficiency-prize-tensorflow?scriptVersionId=111796962); PB:~0.438 in single debate-v3-base.) Moreover, hyper-parameter tuning using Optuna also didn’t significantly boost the score on the CV. (See [this notebook](https://www.kaggle.com/code/kunihikofurugori/fb3-error-analysis/notebook); an improvement of about 0.001). For the models used in the stacking, their CVs ranged from 0.45 to 0.46. The models were trained and tuned separately, so model diversity was influential in improving the stacked models' average CV, which was about 0.447.\n\nThanks and Acknowledgements\nPlease see @kainsama’s quick summary post (parent post; top).\n\nTeam Members\n@habedi\n@runningz\n@kainsama\n@kunihikofurugori",
      "votes": 1
    },
    {
      "id": 2049473,
      "postDate": "2022-11-30T07:10:40.327Z",
      "content": "<p>Congratulations <a href=\"https://www.kaggle.com/kainsama\" target=\"_blank\">@kainsama</a> ! It seems like your team had a lot of base/small models. Did you try larger models? </p>",
      "rawMarkdown": "Congratulations @kainsama ! It seems like your team had a lot of base/small models. Did you try larger models? ",
      "votes": 1
    },
    {
      "id": 2049336,
      "postDate": "2022-11-30T04:06:45.327Z",
      "content": "<p>Great Work! Congrats, and Thanks for your sharing! <br>\nI am new to Kaggle, so I want to reimplement your solution. So what is the minimum GPU needed to train what your team did? </p>",
      "rawMarkdown": "Great Work! Congrats, and Thanks for your sharing! \nI am new to Kaggle, so I want to reimplement your solution. So what is the minimum GPU needed to train what your team did? ",
      "votes": 1,
      "replies": [
        {
          "id": 2049388,
          "postDate": "2022-11-30T05:27:15.237Z",
          "content": "<p>We had access to an NVIDIA RTX 3090 GPU and a small cluster of V100 GPUs. Plus, Kaggle environments and Google Colab Pro. I think having an RTX 3090 is a good minimum requirement. (For training or tuning larger language models  you will need a cluster probbaly.)</p>",
          "rawMarkdown": "We had access to an NVIDIA RTX 3090 GPU and a small cluster of V100 GPUs. Plus, Kaggle environments and Google Colab Pro. I think having an RTX 3090 is a good minimum requirement. (For training or tuning larger language models  you will need a cluster probbaly.)",
          "votes": 2
        },
        {
          "id": 2049422,
          "postDate": "2022-11-30T06:16:44.633Z",
          "content": "<p>Thanks for your reply.</p>\n<p>Does GPU T4x2 only enough to train your team's model?<br>\nDoes it take a long training time, or is it unable to train?</p>",
          "rawMarkdown": "Thanks for your reply.\n\nDoes GPU T4x2 only enough to train your team's model?\nDoes it take a long training time, or is it unable to train?",
          "votes": 1
        }
      ]
    },
    {
      "id": 2049268,
      "postDate": "2022-11-30T03:02:05.290Z",
      "content": "<p>Congratulation! <br>\nInteresting solution. I did not spent much time in fb3, and not join discussion, so Idk I can update regressor. It's look like ML regressor can align linear output. Before this time, I still think CNN/RNN/ML cannot learn well to MLM's embedding output, use pooling/attention + linear that' ok. BUT maybe that only classification, regression is different.</p>",
      "rawMarkdown": "Congratulation! \nInteresting solution. I did not spent much time in fb3, and not join discussion, so Idk I can update regressor. It's look like ML regressor can align linear output. Before this time, I still think CNN/RNN/ML cannot learn well to MLM's embedding output, use pooling/attention + linear that' ok. BUT maybe that only classification, regression is different.",
      "votes": 1
    },
    {
      "id": 2049278,
      "postDate": "2022-11-30T03:08:53.667Z",
      "content": "<p>LB is inaccurate<br>\nCV is inaccurate<br>\nMight come true the old saying: Older ginger is more pungent.</p>",
      "rawMarkdown": "LB is inaccurate\nCV is inaccurate\nMight come true the old saying: Older ginger is more pungent.",
      "replies": [
        {
          "id": 2049472,
          "postDate": "2022-11-30T07:09:36.177Z",
          "content": "<blockquote>\n  <p>CV is inaccurate</p>\n</blockquote>\n<p>It wasnt inaccurate though. I am not sure how you were measuring this but CV and private LB had good correlation for us. </p>",
          "rawMarkdown": "> CV is inaccurate\n\nIt wasnt inaccurate though. I am not sure how you were measuring this but CV and private LB had good correlation for us. \n",
          "votes": 1
        }
      ]
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-19T19:58:03Z",
  "competition_id": 38321,
  "competition_slug": "feedback-prize-english-language-learning",
  "team_id": 9253614,
  "solution_url": "/competitions/feedback-prize-english-language-learning/writeups/team-meliora-10th-place-solution-my-quick-write-up"
}