{
  "id": 130112,
  "title": "16th Place Solution ",
  "content": "<p>First I would like to thank my teammates <a href=\"/abhishek\">@abhishek</a> , <a href=\"/atsunorifujita\">@atsunorifujita</a> , <a href=\"/pvduy23\">@pvduy23</a> for a very good team work.</p>\n\n<h2>Solution Highlights</h2>\n\n<h2>Preprocessing</h2>\n\n<p>We didn't really do any preprocessing to the text, we tried some cleaning which were aimed especially to make the parts with code more readable (shorter) but it didn't make any difference.</p>\n\n<h3>Loss function</h3>\n\n<p>I'm surprised I didn't see more referance to this in the winning posts, but here we did a little trick. Instead of using the target columns as-is we first ranked and normalized them to [0,1] and then used them as targets, something like\n&gt; target = scipy.stats.rankdata(target,'average')\ntarget = (target-target.min())/ (target.max()-target.min())</p>\n\n<p>(I saw CV improvement of about 0.05 - 0.01)\nAs the loss itself I used MSE and some other teammates used MSE+BCE</p>\n\n<h2>Models</h2>\n\n<p>The models we used where RoBERTa-Large, XLNet, BERT-base-uncased. \nWe also tried some other models, like BERT-large, RoBERTa-base, XLMRoBERTa and others.\n(Not choosing  XLMRoBERTa was a mistake - will be discussed later)\nWe also tried to pre-train and fine-tune bert-base on stackexchange  corpus, but it didn't seem to improve CV.</p>\n\n<p>To handle long text, I used the full <code>question-title</code> + equal parts from <code>question-body</code> and <code>answer</code>, truncated by taking the beginning and the end.</p>\n\n<p>We 5 folds for every model</p>\n\n<h3>Augmentation</h3>\n\n<p>I Tried several augmentations:\n* replacing random tokens with [PAD] or with another token - 20% [PAD} seems to give nice results\n* Translating to German and Back - didn't work (Russian also didn't work)\n* Truncating random parts when the text is too long - didn't do any difference</p>\n\n<h2>Post - Processing</h2>\n\n<p>Postprocessing was very important in this competition due to the special characteristics of spearman correlation</p>\n\n<h3>Spearman</h3>\n\n<p>We ended up with clipping some of the output columns. The columns we clipped where columns were most of the targets values were 0 or where most of them where 1. The clipping threshold value was chosen to preserve the same non zero values in test as there are in train. This method improved CV and LB by ~0.03-0.04</p>\n\n<h3>Question-Type-Spelling</h3>\n\n<p>As the number of unique non-zero examples for this class is very low, we understood no ML model could really do a reliable work here. So we tried some heuristics - we ended -up with setting all question where the host was 'english.stackexchange.com' or  'ell.stackexchange.com' to 1. \nWe also tried a more ambitions trick, by selecting different key words, but this didn't work on Private LB.</p>\n\n<h2>Stacking</h2>\n\n<p>We tried different types of  stacking and averaging. At the end it looks like simple averaging was as good as any other method.</p>\n\n<h2>Where did we fail?</h2>\n\n<ul>\n<li><p>We didn't use enough models - we used 5 folds for every model which limit the amount of different models we could run in 2h, for this reason we (I !) neglected some good models like XLMRoBERTa, which gave good results, but didn't seem better then other models. The best practice if probably more diversified models, and dropping some of the folds from each model.</p></li>\n<li><p>CV - It might be because of the spearman metric or because the training set was too small for 30 classes, or we did something wrong but the CV wasn't reliable enough for us (compared to itself, Public LB and Private LB), which meant we didn't do the right choices in selecting models and parameters</p></li>\n</ul>\n\n<h3>My Last observation</h3>\n\n<p>At some points in this competition it seems like the competition is not about NLP but about tricks. <strong>This is a mistake. This competition is about NLP</strong> and eventually tricks were only a small part of the full picture, and the winning teams were the teams with the best models</p>\n\n<p><strong>As always I want to thank Kaggle and the competition team for a well organized competition.</strong>   </p>",
  "comments": [
    {
      "id": 745017,
      "author_name": "",
      "author_url": "",
      "post_date": "2020-02-13T11:50:59.567000",
      "content": "<p>Thanks for sharing.</p>\n\n<p>Btw, about this:</p>\n\n<blockquote>\n  <p>I'm surprised I didn't see more referance to this in the winning posts, but here we did a little trick. Instead of using the target columns as-is we first ranked and normalized them to [0,1] and then used them as targets, something like</p>\n</blockquote>\n\n<p>6th place also did your trick. He explained it here:\n<a href=\"https://www.kaggle.com/c/google-quest-challenge/discussion/130243\">https://www.kaggle.com/c/google-quest-challenge/discussion/130243</a></p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 744976,
      "author_name": "MaChaogong",
      "author_url": "",
      "post_date": "2020-02-13T10:51:03.323000",
      "content": "<p>Always can learn much from you as in last jigsaw. Surprised that the 20% [pad] augmentation worked for you. I tried another augmentation using wordnet with about 2%, 5% proportion but all failed to work. \nThanks for this nice solution!</p>",
      "votes": 1,
      "replies": [
        {
          "id": 745129,
          "author_name": "yuval reina",
          "author_url": "",
          "post_date": "2020-02-13T14:28:36.947000",
          "content": "<p><a href=\"/mcggood\">@mcggood</a> thanks.\nWhen I didn't replace with [pad] but with a meaningful token, the augmentation failed. I think it worked because these networks are originally trained to fill-in missing tokens</p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 744186,
      "author_name": "Varun Yadav",
      "author_url": "",
      "post_date": "2020-02-12T16:39:07.573000",
      "content": "<p>Thanks for sharing your strategy. It is really helpful to others!</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 744164,
      "author_name": "Gerwyn",
      "author_url": "",
      "post_date": "2020-02-12T16:17:21.263000",
      "content": "<p>Congrats and thanks for sharing!!  :)</p>\n\n<blockquote>\n  <p>This is a mistake. This competition is about NLP and eventually tricks were only a small part of the full picture, and the winning teams were the teams with the best models</p>\n</blockquote>\n\n<p>I agree with you. I'd like to think that these 'tricks' are analogous to how regression can be used to solve classification problems and vice versa. </p>\n\n<p>I'd like to think that the sigmoid outputs (which I assumed many of us have used) do not accurately reflect the true meaning of the targets. In addition, the definition of spearman rho which only looks at rank does not differentiate between the size of difference (an indefinitely small difference may still translate to \"one rank\" difference). Thus, I feel that post-processing <em>was necessary</em> rather than a 'trick'.</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 744152,
      "author_name": "Nirjhar Roy",
      "author_url": "",
      "post_date": "2020-02-12T16:07:01.250000",
      "content": "<p>I actually tried the loss by changing the target values between 0 and 1 but I really was then trying a model with 3 hard answer target and it didn't show much improvement . Damn ! I should have extended it to all the targets and tried .... :( .. this is where experience comes into play I guess .</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 743929,
      "author_name": "ilovescience",
      "author_url": "",
      "post_date": "2020-02-12T12:16:35.527000",
      "content": "<p>Thanks for sharing your solution! Very insightful.</p>\n\n<blockquote>\n  <p>This competition is about NLP and eventually tricks were only a small part of the full picture, and the winning teams were the teams with the best models</p>\n</blockquote>\n\n<p>I disagree, it definitely seems like post-processing tricks is the reason people did well in this competition. A couple teams even have openly admitted that their models were not strong, but the use of tricks allowed them to obtain a good standing in this competition. After the end of competition, we tried one of the tricks on our submission, and our Private LB standing would have been 46th place (rather than 124th) and others have also said how tricks would have led to higher ranks.</p>\n\n<p>However, I will point out that indeed the top 5 or so did have some ingenious and creative models that did contribute to their eventual prize-winning solution. But for the rest of us, it seemed like it was a race to find the best post-processing trick.</p>\n\n<p>P.S. I think your teammate <a href=\"/abhishek\">@abhishek</a> has a similar opinion.  </p>",
      "votes": 1,
      "replies": [
        {
          "id": 744140,
          "author_name": "yuval reina",
          "author_url": "",
          "post_date": "2020-02-12T15:51:20.477000",
          "content": "<p><a href=\"/tanlikesmath\">@tanlikesmath</a> One of the thing I learned from all of my competitions was that getting high places on LB is never only about the model, you always need to really understand the metric and the data and adapt to it. Sometimes the adaption is easier, and sometimes it's more tricky, like in this competition. Sometimes somebody share the adaptation early in the competition, and some times you need to look for it. In this competition the biggest trick - how to handle the Spearman peculiarities, was solved by a lot of teams and it was obvious you need to look for it (<a href=\"https://www.kaggle.com/c/google-quest-challenge/discussion/118724\">The post about Spearman</a> is one of the most read, upvoted and discussed). \nBuilding a good data science solution is always a combination of a good and solid model and the way the training, inputs, and outputs are handled.</p>\n\n<p>And, yes <a href=\"/abhishek\">@abhishek</a> and I don't see eye to eye on that matter, but, he will have to agree that the 15 teams that beat us in this competition did it because they had better models, not better tricks. </p>",
          "votes": 5,
          "replies": []
        },
        {
          "id": 744215,
          "author_name": "Abhishek Thakur",
          "author_url": "",
          "post_date": "2020-02-12T16:58:54.327000",
          "content": "<blockquote>\n  <p><strong>yuval reina wrote:</strong>\n  And, yes <a href=\"/abhishek\">@abhishek</a> and I don't see eye to eye on that matter, but, he will have to agree that the 15 teams that beat us in this competition did it because they had better models, not better tricks. </p>\n</blockquote>\n\n<p>I fully agree with <a href=\"/yuval6967\">@yuval6967</a> :) We missed a few things when it came to modelling and could have done better. There is always a next time. :) </p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 745628,
      "author_name": "Benson Bair",
      "author_url": "",
      "post_date": "2020-02-14T02:40:35.340000",
      "content": "<p>Thanks for sharing!</p>\n\n<p><code>\nCV - It might be because of the spearman metric or because the training set was too small for 30 classes, or we did something wrong but the CV wasn't reliable enough for us (compared to itself, Public LB and Private LB), which meant we didn't do the right choices in selecting models and parameters\n</code>\nWe actually faced the same problem. Our CV only increased by ~0.0004 as we added BERT-large into our final blending classifiers. We ended up excluding BERT-large considering it to be some noises, but, it turned out it would have boosted the blending models by ~0.003 in private score. Perhaps we should have tried to  make the CV more reliable as well. </p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 745033,
      "author_name": "YaGana Sheriff-Hussaini",
      "author_url": "",
      "post_date": "2020-02-13T12:12:01.227000",
      "content": "<p>Congrats <a href=\"/yuval6967\">@yuval6967</a> and team. </p>\n\n<p>&gt; At some points in this competition it seems like the competition is not about NLP but about tricks. This is a mistake. This competition is about NLP and eventually tricks were only a small part of the full picture, and the winning teams were the teams with the best models</p>\n\n<p>I agree 100%. Personally I am more interested in how the best single model of the competition performed. Which is why I find the sharing of mostly ensemble result scripts here disappointing.</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 743724,
      "author_name": "Ailurophile",
      "author_url": "",
      "post_date": "2020-02-12T08:31:08.983000",
      "content": "<p>Congratulations!\nThanks for Sharing your Approach &amp; Insights!! <a href=\"/yuval6967\">@yuval6967</a> </p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 743721,
      "author_name": "Dracarys",
      "author_url": "",
      "post_date": "2020-02-12T08:26:50.607000",
      "content": "<p>Thanks for sharing, you are truly an inspiration.</p>",
      "votes": 0,
      "replies": []
    }
  ],
  "comment_count": 13,
  "messages": [
    {
      "id": 743696,
      "postDate": "2020-02-12T07:51:10.723Z",
      "content": "<p>First I would like to thank my teammates <a href=\"/abhishek\">@abhishek</a> , <a href=\"/atsunorifujita\">@atsunorifujita</a> , <a href=\"/pvduy23\">@pvduy23</a> for a very good team work.</p>\n\n<h2>Solution Highlights</h2>\n\n<h2>Preprocessing</h2>\n\n<p>We didn't really do any preprocessing to the text, we tried some cleaning which were aimed especially to make the parts with code more readable (shorter) but it didn't make any difference.</p>\n\n<h3>Loss function</h3>\n\n<p>I'm surprised I didn't see more referance to this in the winning posts, but here we did a little trick. Instead of using the target columns as-is we first ranked and normalized them to [0,1] and then used them as targets, something like\n&gt; target = scipy.stats.rankdata(target,'average')\ntarget = (target-target.min())/ (target.max()-target.min())</p>\n\n<p>(I saw CV improvement of about 0.05 - 0.01)\nAs the loss itself I used MSE and some other teammates used MSE+BCE</p>\n\n<h2>Models</h2>\n\n<p>The models we used where RoBERTa-Large, XLNet, BERT-base-uncased. \nWe also tried some other models, like BERT-large, RoBERTa-base, XLMRoBERTa and others.\n(Not choosing  XLMRoBERTa was a mistake - will be discussed later)\nWe also tried to pre-train and fine-tune bert-base on stackexchange  corpus, but it didn't seem to improve CV.</p>\n\n<p>To handle long text, I used the full <code>question-title</code> + equal parts from <code>question-body</code> and <code>answer</code>, truncated by taking the beginning and the end.</p>\n\n<p>We 5 folds for every model</p>\n\n<h3>Augmentation</h3>\n\n<p>I Tried several augmentations:\n* replacing random tokens with [PAD] or with another token - 20% [PAD} seems to give nice results\n* Translating to German and Back - didn't work (Russian also didn't work)\n* Truncating random parts when the text is too long - didn't do any difference</p>\n\n<h2>Post - Processing</h2>\n\n<p>Postprocessing was very important in this competition due to the special characteristics of spearman correlation</p>\n\n<h3>Spearman</h3>\n\n<p>We ended up with clipping some of the output columns. The columns we clipped where columns were most of the targets values were 0 or where most of them where 1. The clipping threshold value was chosen to preserve the same non zero values in test as there are in train. This method improved CV and LB by ~0.03-0.04</p>\n\n<h3>Question-Type-Spelling</h3>\n\n<p>As the number of unique non-zero examples for this class is very low, we understood no ML model could really do a reliable work here. So we tried some heuristics - we ended -up with setting all question where the host was 'english.stackexchange.com' or  'ell.stackexchange.com' to 1. \nWe also tried a more ambitions trick, by selecting different key words, but this didn't work on Private LB.</p>\n\n<h2>Stacking</h2>\n\n<p>We tried different types of  stacking and averaging. At the end it looks like simple averaging was as good as any other method.</p>\n\n<h2>Where did we fail?</h2>\n\n<ul>\n<li><p>We didn't use enough models - we used 5 folds for every model which limit the amount of different models we could run in 2h, for this reason we (I !) neglected some good models like XLMRoBERTa, which gave good results, but didn't seem better then other models. The best practice if probably more diversified models, and dropping some of the folds from each model.</p></li>\n<li><p>CV - It might be because of the spearman metric or because the training set was too small for 30 classes, or we did something wrong but the CV wasn't reliable enough for us (compared to itself, Public LB and Private LB), which meant we didn't do the right choices in selecting models and parameters</p></li>\n</ul>\n\n<h3>My Last observation</h3>\n\n<p>At some points in this competition it seems like the competition is not about NLP but about tricks. <strong>This is a mistake. This competition is about NLP</strong> and eventually tricks were only a small part of the full picture, and the winning teams were the teams with the best models</p>\n\n<p><strong>As always I want to thank Kaggle and the competition team for a well organized competition.</strong>   </p>",
      "rawMarkdown": "First I would like to thank my teammates @abhishek , @atsunorifujita , @pvduy23 for a very good team work.\n\n## Solution Highlights\n## Preprocessing\nWe didn't really do any preprocessing to the text, we tried some cleaning which were aimed especially to make the parts with code more readable (shorter) but it didn't make any difference.\n\n### Loss function\nI'm surprised I didn't see more referance to this in the winning posts, but here we did a little trick. Instead of using the target columns as-is we first ranked and normalized them to [0,1] and then used them as targets, something like\n&gt; target = scipy.stats.rankdata(target,'average')\ntarget = (target-target.min())/ (target.max()-target.min())\n\n(I saw CV improvement of about 0.05 - 0.01)\nAs the loss itself I used MSE and some other teammates used MSE+BCE\n\n## Models\nThe models we used where RoBERTa-Large, XLNet, BERT-base-uncased. \nWe also tried some other models, like BERT-large, RoBERTa-base, XLMRoBERTa and others.\n(Not choosing  XLMRoBERTa was a mistake - will be discussed later)\nWe also tried to pre-train and fine-tune bert-base on stackexchange  corpus, but it didn't seem to improve CV.\n\nTo handle long text, I used the full `question-title` + equal parts from `question-body` and `answer`, truncated by taking the beginning and the end.\n\nWe 5 folds for every model\n### Augmentation\nI Tried several augmentations:\n* replacing random tokens with [PAD] or with another token - 20% [PAD} seems to give nice results\n* Translating to German and Back - didn't work (Russian also didn't work)\n* Truncating random parts when the text is too long - didn't do any difference\n\n## Post - Processing \nPostprocessing was very important in this competition due to the special characteristics of spearman correlation\n### Spearman\n We ended up with clipping some of the output columns. The columns we clipped where columns were most of the targets values were 0 or where most of them where 1. The clipping threshold value was chosen to preserve the same non zero values in test as there are in train. This method improved CV and LB by ~0.03-0.04\n### Question-Type-Spelling\nAs the number of unique non-zero examples for this class is very low, we understood no ML model could really do a reliable work here. So we tried some heuristics - we ended -up with setting all question where the host was 'english.stackexchange.com' or  'ell.stackexchange.com' to 1. \nWe also tried a more ambitions trick, by selecting different key words, but this didn't work on Private LB.\n\n## Stacking\nWe tried different types of  stacking and averaging. At the end it looks like simple averaging was as good as any other method.\n\n## Where did we fail?\n* We didn't use enough models - we used 5 folds for every model which limit the amount of different models we could run in 2h, for this reason we (I !) neglected some good models like XLMRoBERTa, which gave good results, but didn't seem better then other models. The best practice if probably more diversified models, and dropping some of the folds from each model.\n\n* CV - It might be because of the spearman metric or because the training set was too small for 30 classes, or we did something wrong but the CV wasn't reliable enough for us (compared to itself, Public LB and Private LB), which meant we didn't do the right choices in selecting models and parameters\n\n### My Last observation\nAt some points in this competition it seems like the competition is not about NLP but about tricks. **This is a mistake. This competition is about NLP** and eventually tricks were only a small part of the full picture, and the winning teams were the teams with the best models\n\n**As always I want to thank Kaggle and the competition team for a well organized competition.**   \n",
      "votes": 34
    },
    {
      "id": 745017,
      "postDate": "2020-02-13T11:50:59.567Z",
      "content": "<p>Thanks for sharing.</p>\n\n<p>Btw, about this:</p>\n\n<blockquote>\n  <p>I'm surprised I didn't see more referance to this in the winning posts, but here we did a little trick. Instead of using the target columns as-is we first ranked and normalized them to [0,1] and then used them as targets, something like</p>\n</blockquote>\n\n<p>6th place also did your trick. He explained it here:\n<a href=\"https://www.kaggle.com/c/google-quest-challenge/discussion/130243\">https://www.kaggle.com/c/google-quest-challenge/discussion/130243</a></p>",
      "rawMarkdown": "Thanks for sharing.\n\nBtw, about this:\n\n&gt; I'm surprised I didn't see more referance to this in the winning posts, but here we did a little trick. Instead of using the target columns as-is we first ranked and normalized them to [0,1] and then used them as targets, something like\n\n6th place also did your trick. He explained it here:\nhttps://www.kaggle.com/c/google-quest-challenge/discussion/130243",
      "votes": 1
    },
    {
      "id": 744976,
      "postDate": "2020-02-13T10:51:03.323Z",
      "content": "<p>Always can learn much from you as in last jigsaw. Surprised that the 20% [pad] augmentation worked for you. I tried another augmentation using wordnet with about 2%, 5% proportion but all failed to work. \nThanks for this nice solution!</p>",
      "rawMarkdown": "Always can learn much from you as in last jigsaw. Surprised that the 20% [pad] augmentation worked for you. I tried another augmentation using wordnet with about 2%, 5% proportion but all failed to work. \nThanks for this nice solution!",
      "votes": 1,
      "replies": [
        {
          "id": 745129,
          "postDate": "2020-02-13T14:28:36.947Z",
          "content": "<p><a href=\"/mcggood\">@mcggood</a> thanks.\nWhen I didn't replace with [pad] but with a meaningful token, the augmentation failed. I think it worked because these networks are originally trained to fill-in missing tokens</p>",
          "rawMarkdown": "@mcggood thanks.\nWhen I didn't replace with [pad] but with a meaningful token, the augmentation failed. I think it worked because these networks are originally trained to fill-in missing tokens",
          "votes": 2
        }
      ]
    },
    {
      "id": 744186,
      "postDate": "2020-02-12T16:39:07.573Z",
      "content": "<p>Thanks for sharing your strategy. It is really helpful to others!</p>",
      "rawMarkdown": "Thanks for sharing your strategy. It is really helpful to others!",
      "votes": 1
    },
    {
      "id": 744164,
      "postDate": "2020-02-12T16:17:21.263Z",
      "content": "<p>Congrats and thanks for sharing!!  :)</p>\n\n<blockquote>\n  <p>This is a mistake. This competition is about NLP and eventually tricks were only a small part of the full picture, and the winning teams were the teams with the best models</p>\n</blockquote>\n\n<p>I agree with you. I'd like to think that these 'tricks' are analogous to how regression can be used to solve classification problems and vice versa. </p>\n\n<p>I'd like to think that the sigmoid outputs (which I assumed many of us have used) do not accurately reflect the true meaning of the targets. In addition, the definition of spearman rho which only looks at rank does not differentiate between the size of difference (an indefinitely small difference may still translate to \"one rank\" difference). Thus, I feel that post-processing <em>was necessary</em> rather than a 'trick'.</p>",
      "rawMarkdown": "Congrats and thanks for sharing!!  :)\n\n&gt; This is a mistake. This competition is about NLP and eventually tricks were only a small part of the full picture, and the winning teams were the teams with the best models\n\nI agree with you. I'd like to think that these 'tricks' are analogous to how regression can be used to solve classification problems and vice versa. \n\nI'd like to think that the sigmoid outputs (which I assumed many of us have used) do not accurately reflect the true meaning of the targets. In addition, the definition of spearman rho which only looks at rank does not differentiate between the size of difference (an indefinitely small difference may still translate to \"one rank\" difference). Thus, I feel that post-processing *was necessary* rather than a 'trick'.\n",
      "votes": 1
    },
    {
      "id": 744152,
      "postDate": "2020-02-12T16:07:01.250Z",
      "content": "<p>I actually tried the loss by changing the target values between 0 and 1 but I really was then trying a model with 3 hard answer target and it didn't show much improvement . Damn ! I should have extended it to all the targets and tried .... :( .. this is where experience comes into play I guess .</p>",
      "rawMarkdown": "I actually tried the loss by changing the target values between 0 and 1 but I really was then trying a model with 3 hard answer target and it didn't show much improvement . Damn ! I should have extended it to all the targets and tried .... :( .. this is where experience comes into play I guess .",
      "votes": 1
    },
    {
      "id": 743929,
      "postDate": "2020-02-12T12:16:35.527Z",
      "content": "<p>Thanks for sharing your solution! Very insightful.</p>\n\n<blockquote>\n  <p>This competition is about NLP and eventually tricks were only a small part of the full picture, and the winning teams were the teams with the best models</p>\n</blockquote>\n\n<p>I disagree, it definitely seems like post-processing tricks is the reason people did well in this competition. A couple teams even have openly admitted that their models were not strong, but the use of tricks allowed them to obtain a good standing in this competition. After the end of competition, we tried one of the tricks on our submission, and our Private LB standing would have been 46th place (rather than 124th) and others have also said how tricks would have led to higher ranks.</p>\n\n<p>However, I will point out that indeed the top 5 or so did have some ingenious and creative models that did contribute to their eventual prize-winning solution. But for the rest of us, it seemed like it was a race to find the best post-processing trick.</p>\n\n<p>P.S. I think your teammate <a href=\"/abhishek\">@abhishek</a> has a similar opinion.  </p>",
      "rawMarkdown": "Thanks for sharing your solution! Very insightful.\n\n&gt; This competition is about NLP and eventually tricks were only a small part of the full picture, and the winning teams were the teams with the best models\n\nI disagree, it definitely seems like post-processing tricks is the reason people did well in this competition. A couple teams even have openly admitted that their models were not strong, but the use of tricks allowed them to obtain a good standing in this competition. After the end of competition, we tried one of the tricks on our submission, and our Private LB standing would have been 46th place (rather than 124th) and others have also said how tricks would have led to higher ranks.\n\nHowever, I will point out that indeed the top 5 or so did have some ingenious and creative models that did contribute to their eventual prize-winning solution. But for the rest of us, it seemed like it was a race to find the best post-processing trick.\n\nP.S. I think your teammate @abhishek has a similar opinion.  ",
      "votes": 1,
      "replies": [
        {
          "id": 744140,
          "postDate": "2020-02-12T15:51:20.477Z",
          "content": "<p><a href=\"/tanlikesmath\">@tanlikesmath</a> One of the thing I learned from all of my competitions was that getting high places on LB is never only about the model, you always need to really understand the metric and the data and adapt to it. Sometimes the adaption is easier, and sometimes it's more tricky, like in this competition. Sometimes somebody share the adaptation early in the competition, and some times you need to look for it. In this competition the biggest trick - how to handle the Spearman peculiarities, was solved by a lot of teams and it was obvious you need to look for it (<a href=\"https://www.kaggle.com/c/google-quest-challenge/discussion/118724\">The post about Spearman</a> is one of the most read, upvoted and discussed). \nBuilding a good data science solution is always a combination of a good and solid model and the way the training, inputs, and outputs are handled.</p>\n\n<p>And, yes <a href=\"/abhishek\">@abhishek</a> and I don't see eye to eye on that matter, but, he will have to agree that the 15 teams that beat us in this competition did it because they had better models, not better tricks. </p>",
          "rawMarkdown": "@tanlikesmath One of the thing I learned from all of my competitions was that getting high places on LB is never only about the model, you always need to really understand the metric and the data and adapt to it. Sometimes the adaption is easier, and sometimes it's more tricky, like in this competition. Sometimes somebody share the adaptation early in the competition, and some times you need to look for it. In this competition the biggest trick - how to handle the Spearman peculiarities, was solved by a lot of teams and it was obvious you need to look for it ([The post about Spearman](https://www.kaggle.com/c/google-quest-challenge/discussion/118724) is one of the most read, upvoted and discussed). \nBuilding a good data science solution is always a combination of a good and solid model and the way the training, inputs, and outputs are handled.\n\nAnd, yes @abhishek and I don't see eye to eye on that matter, but, he will have to agree that the 15 teams that beat us in this competition did it because they had better models, not better tricks. ",
          "votes": 5
        },
        {
          "id": 744215,
          "postDate": "2020-02-12T16:58:54.327Z",
          "content": "<blockquote>\n  <p><strong>yuval reina wrote:</strong>\n  And, yes <a href=\"/abhishek\">@abhishek</a> and I don't see eye to eye on that matter, but, he will have to agree that the 15 teams that beat us in this competition did it because they had better models, not better tricks. </p>\n</blockquote>\n\n<p>I fully agree with <a href=\"/yuval6967\">@yuval6967</a> :) We missed a few things when it came to modelling and could have done better. There is always a next time. :) </p>",
          "rawMarkdown": "&gt; **yuval reina wrote:**\n&gt; And, yes @abhishek and I don't see eye to eye on that matter, but, he will have to agree that the 15 teams that beat us in this competition did it because they had better models, not better tricks. \n\nI fully agree with @yuval6967 :) We missed a few things when it came to modelling and could have done better. There is always a next time. :) \n",
          "votes": 2
        }
      ]
    },
    {
      "id": 745628,
      "postDate": "2020-02-14T02:40:35.340Z",
      "content": "<p>Thanks for sharing!</p>\n\n<p><code>\nCV - It might be because of the spearman metric or because the training set was too small for 30 classes, or we did something wrong but the CV wasn't reliable enough for us (compared to itself, Public LB and Private LB), which meant we didn't do the right choices in selecting models and parameters\n</code>\nWe actually faced the same problem. Our CV only increased by ~0.0004 as we added BERT-large into our final blending classifiers. We ended up excluding BERT-large considering it to be some noises, but, it turned out it would have boosted the blending models by ~0.003 in private score. Perhaps we should have tried to  make the CV more reliable as well. </p>",
      "rawMarkdown": "Thanks for sharing!\n\n```\nCV - It might be because of the spearman metric or because the training set was too small for 30 classes, or we did something wrong but the CV wasn't reliable enough for us (compared to itself, Public LB and Private LB), which meant we didn't do the right choices in selecting models and parameters\n```\nWe actually faced the same problem. Our CV only increased by ~0.0004 as we added BERT-large into our final blending classifiers. We ended up excluding BERT-large considering it to be some noises, but, it turned out it would have boosted the blending models by ~0.003 in private score. Perhaps we should have tried to  make the CV more reliable as well. ",
      "votes": 2
    },
    {
      "id": 745033,
      "postDate": "2020-02-13T12:12:01.227Z",
      "content": "<p>Congrats <a href=\"/yuval6967\">@yuval6967</a> and team. </p>\n\n<p>&gt; At some points in this competition it seems like the competition is not about NLP but about tricks. This is a mistake. This competition is about NLP and eventually tricks were only a small part of the full picture, and the winning teams were the teams with the best models</p>\n\n<p>I agree 100%. Personally I am more interested in how the best single model of the competition performed. Which is why I find the sharing of mostly ensemble result scripts here disappointing.</p>",
      "rawMarkdown": "Congrats @yuval6967 and team. \n\n&gt; At some points in this competition it seems like the competition is not about NLP but about tricks. This is a mistake. This competition is about NLP and eventually tricks were only a small part of the full picture, and the winning teams were the teams with the best models\n\nI agree 100%. Personally I am more interested in how the best single model of the competition performed. Which is why I find the sharing of mostly ensemble result scripts here disappointing.",
      "votes": 2
    },
    {
      "id": 743724,
      "postDate": "2020-02-12T08:31:08.983Z",
      "content": "<p>Congratulations!\nThanks for Sharing your Approach &amp; Insights!! <a href=\"/yuval6967\">@yuval6967</a> </p>",
      "rawMarkdown": "Congratulations!\nThanks for Sharing your Approach &amp; Insights!! @yuval6967 "
    },
    {
      "id": 743721,
      "postDate": "2020-02-12T08:26:50.607Z",
      "content": "<p>Thanks for sharing, you are truly an inspiration.</p>",
      "rawMarkdown": "Thanks for sharing, you are truly an inspiration."
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-19T19:08:54Z",
  "competition_id": 7968,
  "competition_slug": "google-quest-challenge",
  "team_id": 4016763,
  "solution_url": "/competitions/google-quest-challenge/writeups/what-a-questers-16th-place-solution"
}