{
  "id": 129928,
  "title": "83rd place solution",
  "content": "<p>Github repo: <a href=\"https://github.com/btrotta/kaggle-google-quest\">https://github.com/btrotta/kaggle-google-quest</a></p>\n\n<p>My code relies heavily on the following public notebook: <a href=\"https://www.kaggle.com/akensert/bert-base-tf2-0-now-huggingface-transformer\">https://www.kaggle.com/akensert/bert-base-tf2-0-now-huggingface-transformer</a>\nMy BERT modelling code is almost identical to that kernel; the only change I made was to insert a special token between the question title and body. (I'm not sure whether this had any real effect.) As in the script, I did 5 folds and 3 epochs.</p>\n\n<p>To optimise the Spearman rho metric, I found it was helpful to limit the predicted scores to a smaller number of distinct values. The way I did this was by post-processing using a LightGBM model with small leaf size (3) and few iterations (20). The model just takes a single predictor (the output prediction of the BERT model) and optimises the cross-entropy loss. This gives a boost of around 0.02 on the private leaderboard, for a final score of 0.39507.</p>",
  "comments": [
    {
      "id": 742733,
      "author_name": "CPMP",
      "author_url": "",
      "post_date": "2020-02-11T14:13:45.410000",
      "content": "<p>Thanks for sharing. <a href=\"/dott1718\">@dott1718</a> on our team  also tried using lgb for post processing results, it looked greta on cv but degraded public LB hence we di not keep it for final sub.  But the whole idea is very promising still IMHO.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 742712,
      "author_name": "Chris Deotte",
      "author_url": "",
      "post_date": "2020-02-11T13:57:21.457000",
      "content": "<p>Clever post processing. Great job Belinda.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 742697,
      "author_name": "Aditya Soni",
      "author_url": "",
      "post_date": "2020-02-11T13:48:25.253000",
      "content": "<p>Really Smart Post-Processing!</p>",
      "votes": 0,
      "replies": []
    }
  ],
  "comment_count": 3,
  "messages": [
    {
      "id": 742469,
      "postDate": "2020-02-11T10:06:09.507Z",
      "content": "<p>Github repo: <a href=\"https://github.com/btrotta/kaggle-google-quest\">https://github.com/btrotta/kaggle-google-quest</a></p>\n\n<p>My code relies heavily on the following public notebook: <a href=\"https://www.kaggle.com/akensert/bert-base-tf2-0-now-huggingface-transformer\">https://www.kaggle.com/akensert/bert-base-tf2-0-now-huggingface-transformer</a>\nMy BERT modelling code is almost identical to that kernel; the only change I made was to insert a special token between the question title and body. (I'm not sure whether this had any real effect.) As in the script, I did 5 folds and 3 epochs.</p>\n\n<p>To optimise the Spearman rho metric, I found it was helpful to limit the predicted scores to a smaller number of distinct values. The way I did this was by post-processing using a LightGBM model with small leaf size (3) and few iterations (20). The model just takes a single predictor (the output prediction of the BERT model) and optimises the cross-entropy loss. This gives a boost of around 0.02 on the private leaderboard, for a final score of 0.39507.</p>",
      "rawMarkdown": "Github repo: https://github.com/btrotta/kaggle-google-quest\n\nMy code relies heavily on the following public notebook: https://www.kaggle.com/akensert/bert-base-tf2-0-now-huggingface-transformer\nMy BERT modelling code is almost identical to that kernel; the only change I made was to insert a special token between the question title and body. (I'm not sure whether this had any real effect.) As in the script, I did 5 folds and 3 epochs.\n\nTo optimise the Spearman rho metric, I found it was helpful to limit the predicted scores to a smaller number of distinct values. The way I did this was by post-processing using a LightGBM model with small leaf size (3) and few iterations (20). The model just takes a single predictor (the output prediction of the BERT model) and optimises the cross-entropy loss. This gives a boost of around 0.02 on the private leaderboard, for a final score of 0.39507.\n",
      "votes": 26
    },
    {
      "id": 742733,
      "postDate": "2020-02-11T14:13:45.410Z",
      "content": "<p>Thanks for sharing. <a href=\"/dott1718\">@dott1718</a> on our team  also tried using lgb for post processing results, it looked greta on cv but degraded public LB hence we di not keep it for final sub.  But the whole idea is very promising still IMHO.</p>",
      "rawMarkdown": "Thanks for sharing. @dott1718 on our team  also tried using lgb for post processing results, it looked greta on cv but degraded public LB hence we di not keep it for final sub.  But the whole idea is very promising still IMHO."
    },
    {
      "id": 742712,
      "postDate": "2020-02-11T13:57:21.457Z",
      "content": "<p>Clever post processing. Great job Belinda.</p>",
      "rawMarkdown": "Clever post processing. Great job Belinda."
    },
    {
      "id": 742697,
      "postDate": "2020-02-11T13:48:25.253Z",
      "content": "<p>Really Smart Post-Processing!</p>",
      "rawMarkdown": "Really Smart Post-Processing!"
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-19T19:08:09Z",
  "competition_id": 7968,
  "competition_slug": "google-quest-challenge",
  "team_id": 4304576,
  "solution_url": "/competitions/google-quest-challenge/writeups/belinda-trotta-83rd-place-solution"
}