{
  "id": 364721,
  "title": "Recommendation Systems for Large Datasets",
  "url": "/competitions/otto-recommender-system/discussion/364721",
  "author_name": "",
  "post_date": "2022-11-07T23:30:03.184315Z",
  "votes": 275,
  "comment_count": 39,
  "views": 0,
  "content": "<h1>The Concept</h1>\n<p>If you didn't realize, this dataset it quite large. In fact the train dataset consists of:</p>\n<ul>\n<li>12,899,779 sessions</li>\n<li>1,855,603 items</li>\n<li>216,716,096    events</li>\n<li>194,720,954 clicks</li>\n<li>16,896,191 carts</li>\n<li>5,098,951 orders</li>\n</ul>\n<p><a href=\"https://github.com/otto-de/recsys-dataset\" target=\"_blank\">more info about the dataset</a></p>\n<p>So as you might expect, just dumping the raw data into a model is not going to very very effective or efficient. That is why sites like YouTube with billions of items of content use a technique known as candidates generation. This technique has been applied in previous recommendation system challenges on Kaggle, and I think it can be applied here to.</p>\n<p>This image should give you an overview of the process:</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6537187%2F674c8697b7d108e4e7db1074d3ccee1c%2Frec_candidate.PNG?generation=1667924915386305&amp;alt=media\" alt=\"\"></p>\n<h1>Candidate Generation</h1>\n<p>Here are some criteria you can use to select you candidates:</p>\n<ul>\n<li>previously purchased items</li>\n<li>repurchased items</li>\n<li>overall most popular items</li>\n<li>similar items based on some sort of clustering technique</li>\n<li>similar items based on something such as a co-visitation matrix</li>\n</ul>\n<p>After using techniques like these, you should have much fewer items for each session, so you should be able to input these into a ranker model.</p>\n<h1>Ranking</h1>\n<p>Now that you have your candidates, you need to generate features for your items. This is kind of tricky in this competition because we only have the article id (we don't have the product name, price, or other useful info). Thus, your features will probably be the reason the item was selected as a candidate. You can also make numerical features related to the candidates generation such as the number of times a item was viewed or repurchased, etc.</p>\n<p>Now that you have feature engineered items, you want to feed your options to a ranker models. Examples of ranker models include:</p>\n<ul>\n<li><a href=\"https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMRanker.html\" target=\"_blank\">LGBMRanker</a></li>\n<li><a href=\"https://medium.com/predictly-on-tech/learning-to-rank-using-xgboost-83de0166229d\" target=\"_blank\">XGBRanker</a></li>\n<li><a href=\"https://towardsdatascience.com/learning-to-rank-with-python-scikit-learn-327a5cfd81f\" target=\"_blank\">Ranking with sklearn</a></li>\n<li><a href=\"https://maroo.cs.umass.edu/getpdf.php?id=1373\" target=\"_blank\">Neural Network Ranker</a></li>\n</ul>\n<p>You can then take your highest ranked items and submit them as your recommendations.</p>",
  "messages": [
    {
      "id": "2021030",
      "postDate": "11/07/2022 23:30:03",
      "content": "<h1>The Concept</h1>\n<p>If you didn't realize, this dataset it quite large. In fact the train dataset consists of:</p>\n<ul>\n<li>12,899,779 sessions</li>\n<li>1,855,603 items</li>\n<li>216,716,096    events</li>\n<li>194,720,954 clicks</li>\n<li>16,896,191 carts</li>\n<li>5,098,951 orders</li>\n</ul>\n<p><a href=\"https://github.com/otto-de/recsys-dataset\" target=\"_blank\">more info about the dataset</a></p>\n<p>So as you might expect, just dumping the raw data into a model is not going to very very effective or efficient. That is why sites like YouTube with billions of items of content use a technique known as candidates generation. This technique has been applied in previous recommendation system challenges on Kaggle, and I think it can be applied here to.</p>\n<p>This image should give you an overview of the process:</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6537187%2F674c8697b7d108e4e7db1074d3ccee1c%2Frec_candidate.PNG?generation=1667924915386305&amp;alt=media\" alt=\"\"></p>\n<h1>Candidate Generation</h1>\n<p>Here are some criteria you can use to select you candidates:</p>\n<ul>\n<li>previously purchased items</li>\n<li>repurchased items</li>\n<li>overall most popular items</li>\n<li>similar items based on some sort of clustering technique</li>\n<li>similar items based on something such as a co-visitation matrix</li>\n</ul>\n<p>After using techniques like these, you should have much fewer items for each session, so you should be able to input these into a ranker model.</p>\n<h1>Ranking</h1>\n<p>Now that you have your candidates, you need to generate features for your items. This is kind of tricky in this competition because we only have the article id (we don't have the product name, price, or other useful info). Thus, your features will probably be the reason the item was selected as a candidate. You can also make numerical features related to the candidates generation such as the number of times a item was viewed or repurchased, etc.</p>\n<p>Now that you have feature engineered items, you want to feed your options to a ranker models. Examples of ranker models include:</p>\n<ul>\n<li><a href=\"https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMRanker.html\" target=\"_blank\">LGBMRanker</a></li>\n<li><a href=\"https://medium.com/predictly-on-tech/learning-to-rank-using-xgboost-83de0166229d\" target=\"_blank\">XGBRanker</a></li>\n<li><a href=\"https://towardsdatascience.com/learning-to-rank-with-python-scikit-learn-327a5cfd81f\" target=\"_blank\">Ranking with sklearn</a></li>\n<li><a href=\"https://maroo.cs.umass.edu/getpdf.php?id=1373\" target=\"_blank\">Neural Network Ranker</a></li>\n</ul>\n<p>You can then take your highest ranked items and submit them as your recommendations.</p>",
      "rawMarkdown": "# The Concept\n\nIf you didn't realize, this dataset it quite large. In fact the train dataset consists of:\n- 12,899,779 sessions\n- 1,855,603 items\n- 216,716,096\tevents\n- 194,720,954 clicks\n- 16,896,191 carts\n- 5,098,951 orders\n\n[more info about the dataset](https://github.com/otto-de/recsys-dataset)\n\nSo as you might expect, just dumping the raw data into a model is not going to very very effective or efficient. That is why sites like YouTube with billions of items of content use a technique known as candidates generation. This technique has been applied in previous recommendation system challenges on Kaggle, and I think it can be applied here to.\n\nThis image should give you an overview of the process:\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6537187%2F674c8697b7d108e4e7db1074d3ccee1c%2Frec_candidate.PNG?generation=1667924915386305&alt=media)\n\n# Candidate Generation\n\nHere are some criteria you can use to select you candidates:\n- previously purchased items\n- repurchased items\n- overall most popular items\n- similar items based on some sort of clustering technique\n- similar items based on something such as a co-visitation matrix\n\nAfter using techniques like these, you should have much fewer items for each session, so you should be able to input these into a ranker model.\n\n# Ranking\n\nNow that you have your candidates, you need to generate features for your items. This is kind of tricky in this competition because we only have the article id (we don't have the product name, price, or other useful info). Thus, your features will probably be the reason the item was selected as a candidate. You can also make numerical features related to the candidates generation such as the number of times a item was viewed or repurchased, etc.\n\nNow that you have feature engineered items, you want to feed your options to a ranker models. Examples of ranker models include:\n- [LGBMRanker](https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMRanker.html)\n- [XGBRanker](https://medium.com/predictly-on-tech/learning-to-rank-using-xgboost-83de0166229d)\n- [Ranking with sklearn](https://towardsdatascience.com/learning-to-rank-with-python-scikit-learn-327a5cfd81f)\n- [Neural Network Ranker](https://maroo.cs.umass.edu/getpdf.php?id=1373)\n\nYou can then take your highest ranked items and submit them as your recommendations.",
      "votes": null
    },
    {
      "id": "2021333",
      "postDate": "11/08/2022 07:12:31",
      "content": "<p>Very informative! Thanks for shearing🙂</p>",
      "rawMarkdown": "Very informative! Thanks for shearing🙂",
      "votes": null
    },
    {
      "id": "2021971",
      "postDate": "11/08/2022 15:45:39",
      "content": "<p>Great post. This is a great way to build a model in this competition!</p>",
      "rawMarkdown": "Great post. This is a great way to build a model in this competition!",
      "votes": null
    },
    {
      "id": "2022089",
      "postDate": "11/08/2022 17:26:11",
      "content": "<p>This is really helpful, thanks <a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> </p>",
      "rawMarkdown": "This is really helpful, thanks @ravishah1",
      "votes": null
    },
    {
      "id": "2022174",
      "postDate": "11/08/2022 19:22:07",
      "content": "<p>fantastic post, <a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a>! Great to elucidate this approach as you did here!!! 😊</p>",
      "rawMarkdown": "fantastic post, @ravishah1! Great to elucidate this approach as you did here!!! 😊",
      "votes": null
    },
    {
      "id": "2022186",
      "postDate": "11/08/2022 19:35:21",
      "content": "<p>great approach to try out. tnx so much :)</p>",
      "rawMarkdown": "great approach to try out. tnx so much :)",
      "votes": null
    },
    {
      "id": "2023723",
      "postDate": "11/10/2022 01:32:09",
      "content": "<p>good insight of building recommender system. Candidate generation of maybe candidate selection? yeah, its just the choice of word. But that is a good way of thinking. Appreciate for the idea!</p>",
      "rawMarkdown": "good insight of building recommender system. Candidate generation of maybe candidate selection? yeah, its just the choice of word. But that is a good way of thinking. Appreciate for the idea!",
      "votes": null
    },
    {
      "id": "2023742",
      "postDate": "11/10/2022 01:59:43",
      "content": "<p>Great insights <a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a>! Thanks for sharing!</p>",
      "rawMarkdown": "Great insights @ravishah1! Thanks for sharing!",
      "votes": null
    },
    {
      "id": "2024945",
      "postDate": "11/10/2022 22:23:45",
      "content": "<p>Awesome post..</p>",
      "rawMarkdown": "Awesome post..",
      "votes": null
    },
    {
      "id": "2025068",
      "postDate": "11/11/2022 00:45:04",
      "content": "<p>This is a great post with useful details. Thanks for sharing👍</p>",
      "rawMarkdown": "This is a great post with useful details. Thanks for sharing👍",
      "votes": null
    },
    {
      "id": "2027567",
      "postDate": "11/13/2022 01:07:25",
      "content": "<p>Hi <a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> thanks for sharing. This is a great overview showing us a way to move forward step by step.</p>",
      "rawMarkdown": "Hi @ravishah1 thanks for sharing. This is a great overview showing us a way to move forward step by step.",
      "votes": null
    },
    {
      "id": "2028129",
      "postDate": "11/13/2022 14:47:51",
      "content": "<p><a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> Thank you for sharing such informative work. Keep it up. Upvoted. </p>\n<p>When you have time just look at my work. </p>",
      "rawMarkdown": "ravishah1 Thank you for sharing such informative work. Keep it up. Upvoted. \n\nWhen you have time just look at my work.",
      "votes": null
    },
    {
      "id": "2029114",
      "postDate": "11/14/2022 13:09:34",
      "content": "<p>Great post!</p>",
      "rawMarkdown": "Great post!",
      "votes": null
    },
    {
      "id": "2030518",
      "postDate": "11/15/2022 13:39:51",
      "content": "<p>Informative post <a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> thanks for sharing</p>",
      "rawMarkdown": "Informative post @ravishah1 thanks for sharing",
      "votes": null
    },
    {
      "id": "2030520",
      "postDate": "11/15/2022 13:40:47",
      "content": "<p>Useful post! Thanks for sharing <a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> </p>",
      "rawMarkdown": "Useful post! Thanks for sharing @ravishah1",
      "votes": null
    },
    {
      "id": "2031164",
      "postDate": "11/15/2022 22:57:34",
      "content": "<p>Great insight.. thanks for sharing.</p>",
      "rawMarkdown": "Great insight.. thanks for sharing.",
      "votes": null
    },
    {
      "id": "2031344",
      "postDate": "11/16/2022 02:39:35",
      "content": "<p>thank you for sharing. This helps me a lot.</p>",
      "rawMarkdown": "thank you for sharing. This helps me a lot.",
      "votes": null
    },
    {
      "id": "2031642",
      "postDate": "11/16/2022 07:37:59",
      "content": "<p>Thanks for sharing!</p>",
      "rawMarkdown": "Thanks for sharing!",
      "votes": null
    },
    {
      "id": "2034162",
      "postDate": "11/17/2022 21:39:13",
      "content": "<p>Very useful, thank you!</p>",
      "rawMarkdown": "Very useful, thank you!",
      "votes": null
    },
    {
      "id": "2034590",
      "postDate": "11/18/2022 08:59:47",
      "content": "<p>Thank you so much</p>",
      "rawMarkdown": "Thank you so much",
      "votes": null
    },
    {
      "id": "2035614",
      "postDate": "11/19/2022 04:17:48",
      "content": "<p>Thanks a lot for sharing!</p>",
      "rawMarkdown": "Thanks a lot for sharing!",
      "votes": null
    },
    {
      "id": "2037896",
      "postDate": "11/21/2022 03:28:43",
      "content": "<p>Great post! It helps clarify what we need to do in this competition</p>",
      "rawMarkdown": "Great post! It helps clarify what we need to do in this competition",
      "votes": null
    },
    {
      "id": "2053092",
      "postDate": "12/02/2022 20:09:04",
      "content": "<p>I started with an EDA notebook, which crushed me a lot.<br>\nAfter ready your sharing, I am more apparent. Thank you very much for sharing! </p>",
      "rawMarkdown": "I started with an EDA notebook, which crushed me a lot.\nAfter ready your sharing, I am more apparent. Thank you very much for sharing!",
      "votes": null
    },
    {
      "id": "2055062",
      "postDate": "12/04/2022 17:42:22",
      "content": "<p>Thank you very much!</p>",
      "rawMarkdown": "Thank you very much!",
      "votes": null
    },
    {
      "id": "2063645",
      "postDate": "12/13/2022 06:35:22",
      "content": "<p>These information are so helpful to us. Thank you very much ! Good luck .</p>",
      "rawMarkdown": "These information are so helpful to us. Thank you very much ! Good luck .",
      "votes": null
    },
    {
      "id": "2068116",
      "postDate": "12/17/2022 14:25:01",
      "content": "<p>Here is a notebook on how to deal with a huge number of image data on small hardware <a href=\"https://www.kaggle.com/code/ezzzio/large-datasets-on-limited-hardware\" target=\"_blank\">large datasets of images</a></p>",
      "rawMarkdown": "Here is a notebook on how to deal with a huge number of image data on small hardware [large datasets of images](https://www.kaggle.com/code/ezzzio/large-datasets-on-limited-hardware)",
      "votes": null
    },
    {
      "id": "2073214",
      "postDate": "12/22/2022 19:02:06",
      "content": "<p>thanks for sharing</p>",
      "rawMarkdown": "thanks for sharing",
      "votes": null
    },
    {
      "id": "2079605",
      "postDate": "12/29/2022 13:25:19",
      "content": "<p>Thank you, your great post!<br>\nI had never heard of LightGBMRanker before.<br>\nThis is a big find for me!!!</p>",
      "rawMarkdown": "Thank you, your great post!\nI had never heard of LightGBMRanker before.\nThis is a big find for me!!!",
      "votes": null
    },
    {
      "id": "2079643",
      "postDate": "12/29/2022 14:10:11",
      "content": "<p>Rankers are great models. I posted a tutorial about how to use GBTRankers <a href=\"https://www.kaggle.com/competitions/otto-recommender-system/discussion/370210\" target=\"_blank\">here</a></p>",
      "rawMarkdown": "Rankers are great models. I posted a tutorial about how to use GBTRankers [here][1]\n\n[1]: https://www.kaggle.com/competitions/otto-recommender-system/discussion/370210",
      "votes": null
    },
    {
      "id": "2079676",
      "postDate": "12/29/2022 14:23:37",
      "content": "<p>Thanks for the great sharing here too!<br>\nThanks for answering my questions as a newbie in various NOTEBOOK and DISCUSSIONS.</p>",
      "rawMarkdown": "Thanks for the great sharing here too!\nThanks for answering my questions as a newbie in various NOTEBOOK and DISCUSSIONS.",
      "votes": null
    },
    {
      "id": "2081810",
      "postDate": "12/31/2022 16:57:25",
      "content": "<p>Thank you for sharing!</p>",
      "rawMarkdown": "Thank you for sharing!",
      "votes": null
    },
    {
      "id": "2081819",
      "postDate": "12/31/2022 17:18:43",
      "content": "<p>great post</p>",
      "rawMarkdown": "great post",
      "votes": null
    },
    {
      "id": "2090606",
      "postDate": "01/07/2023 14:04:58",
      "content": "<p>Thank you for this introduction. It is very easy for someone that is cold starting the competition to get insights if following posts like yours. I got here from Radek's Notebook here: <a href=\"https://www.kaggle.com/code/radek1/polars-proof-of-concept-lgbm-ranker\" target=\"_blank\">https://www.kaggle.com/code/radek1/polars-proof-of-concept-lgbm-ranker</a>. Please extend my token of appreciation also to him, he did a very good work to advertise also your contribution.</p>",
      "rawMarkdown": "Thank you for this introduction. It is very easy for someone that is cold starting the competition to get insights if following posts like yours. I got here from Radek's Notebook here: https://www.kaggle.com/code/radek1/polars-proof-of-concept-lgbm-ranker. Please extend my token of appreciation also to him, he did a very good work to advertise also your contribution.",
      "votes": null
    },
    {
      "id": "2090983",
      "postDate": "01/07/2023 22:04:22",
      "content": "<p>It is all a team effort! 🙂 Thank you <a href=\"https://www.kaggle.com/gpreda\" target=\"_blank\">@gpreda</a> for your kind words and for the shoutout! 🙏</p>",
      "rawMarkdown": "It is all a team effort! 🙂 Thank you @gpreda for your kind words and for the shoutout! 🙏",
      "votes": null
    },
    {
      "id": "2094520",
      "postDate": "01/10/2023 19:50:31",
      "content": "<p>very useful, Thanks for sharing</p>",
      "rawMarkdown": "very useful, Thanks for sharing",
      "votes": null
    },
    {
      "id": "2096427",
      "postDate": "01/12/2023 03:36:54",
      "content": "<p>Awesome insights! It's really helpful. </p>",
      "rawMarkdown": "Awesome insights! It's really helpful.",
      "votes": null
    },
    {
      "id": "2099835",
      "postDate": "01/14/2023 17:55:55",
      "content": "<p>Great post! I will learn how to use the rankers.</p>",
      "rawMarkdown": "Great post! I will learn how to use the rankers.",
      "votes": null
    },
    {
      "id": "2466737",
      "postDate": "10/04/2023 04:38:11",
      "content": "<p>thanks for your clarification</p>",
      "rawMarkdown": "thanks for your clarification",
      "votes": null
    },
    {
      "id": "3037706",
      "postDate": "11/06/2024 03:13:05",
      "content": "<p>Thanks for your explaination!</p>",
      "rawMarkdown": "Thanks for your explaination!",
      "votes": null
    },
    {
      "id": "3037742",
      "postDate": "11/06/2024 04:48:20",
      "content": "<p>Thanks for this wonderful information.</p>",
      "rawMarkdown": "Thanks for this wonderful information.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 2021333,
      "author_name": "rijudhara",
      "author_url": "",
      "post_date": "11/08/2022 07:12:31",
      "content": "<p>Very informative! Thanks for shearing🙂</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2021971,
      "author_name": "cdeotte",
      "author_url": "",
      "post_date": "11/08/2022 15:45:39",
      "content": "<p>Great post. This is a great way to build a model in this competition!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2022089,
      "author_name": "priyanshuprajapatis",
      "author_url": "",
      "post_date": "11/08/2022 17:26:11",
      "content": "<p>This is really helpful, thanks <a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2022174,
      "author_name": "radek1",
      "author_url": "",
      "post_date": "11/08/2022 19:22:07",
      "content": "<p>fantastic post, <a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a>! Great to elucidate this approach as you did here!!! 😊</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2022186,
      "author_name": "simonveitner",
      "author_url": "",
      "post_date": "11/08/2022 19:35:21",
      "content": "<p>great approach to try out. tnx so much :)</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2023723,
      "author_name": "dzikrifudholi",
      "author_url": "",
      "post_date": "11/10/2022 01:32:09",
      "content": "<p>good insight of building recommender system. Candidate generation of maybe candidate selection? yeah, its just the choice of word. But that is a good way of thinking. Appreciate for the idea!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2023742,
      "author_name": "hlgdatascience",
      "author_url": "",
      "post_date": "11/10/2022 01:59:43",
      "content": "<p>Great insights <a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a>! Thanks for sharing!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2024945,
      "author_name": "saha8631",
      "author_url": "",
      "post_date": "11/10/2022 22:23:45",
      "content": "<p>Awesome post..</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2025068,
      "author_name": "oscarm524",
      "author_url": "",
      "post_date": "11/11/2022 00:45:04",
      "content": "<p>This is a great post with useful details. Thanks for sharing👍</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2027567,
      "author_name": "danielliao",
      "author_url": "",
      "post_date": "11/13/2022 01:07:25",
      "content": "<p>Hi <a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> thanks for sharing. This is a great overview showing us a way to move forward step by step.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2028129,
      "author_name": "muzammalnawaz",
      "author_url": "",
      "post_date": "11/13/2022 14:47:51",
      "content": "<p><a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> Thank you for sharing such informative work. Keep it up. Upvoted. </p>\n<p>When you have time just look at my work. </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2029114,
      "author_name": "fukuchan19",
      "author_url": "",
      "post_date": "11/14/2022 13:09:34",
      "content": "<p>Great post!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2030518,
      "author_name": "rajeevkhanna",
      "author_url": "",
      "post_date": "11/15/2022 13:39:51",
      "content": "<p>Informative post <a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> thanks for sharing</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2030520,
      "author_name": "shreyamishra0307",
      "author_url": "",
      "post_date": "11/15/2022 13:40:47",
      "content": "<p>Useful post! Thanks for sharing <a href=\"https://www.kaggle.com/ravishah1\" target=\"_blank\">@ravishah1</a> </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2031164,
      "author_name": "cid007",
      "author_url": "",
      "post_date": "11/15/2022 22:57:34",
      "content": "<p>Great insight.. thanks for sharing.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2031344,
      "author_name": "takashifujiwara",
      "author_url": "",
      "post_date": "11/16/2022 02:39:35",
      "content": "<p>thank you for sharing. This helps me a lot.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2031642,
      "author_name": "jm3837",
      "author_url": "",
      "post_date": "11/16/2022 07:37:59",
      "content": "<p>Thanks for sharing!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2034162,
      "author_name": "agnesgubicza",
      "author_url": "",
      "post_date": "11/17/2022 21:39:13",
      "content": "<p>Very useful, thank you!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2034590,
      "author_name": "quocvinh",
      "author_url": "",
      "post_date": "11/18/2022 08:59:47",
      "content": "<p>Thank you so much</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2035614,
      "author_name": "radityanurfadillah",
      "author_url": "",
      "post_date": "11/19/2022 04:17:48",
      "content": "<p>Thanks a lot for sharing!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2037896,
      "author_name": "jsmithperera",
      "author_url": "",
      "post_date": "11/21/2022 03:28:43",
      "content": "<p>Great post! It helps clarify what we need to do in this competition</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2053092,
      "author_name": "leiwong",
      "author_url": "",
      "post_date": "12/02/2022 20:09:04",
      "content": "<p>I started with an EDA notebook, which crushed me a lot.<br>\nAfter ready your sharing, I am more apparent. Thank you very much for sharing! </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2055062,
      "author_name": "lycoming",
      "author_url": "",
      "post_date": "12/04/2022 17:42:22",
      "content": "<p>Thank you very much!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2063645,
      "author_name": "chenjunchao",
      "author_url": "",
      "post_date": "12/13/2022 06:35:22",
      "content": "<p>These information are so helpful to us. Thank you very much ! Good luck .</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2068116,
      "author_name": "ezzzio",
      "author_url": "",
      "post_date": "12/17/2022 14:25:01",
      "content": "<p>Here is a notebook on how to deal with a huge number of image data on small hardware <a href=\"https://www.kaggle.com/code/ezzzio/large-datasets-on-limited-hardware\" target=\"_blank\">large datasets of images</a></p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2073214,
      "author_name": "sayedmm",
      "author_url": "",
      "post_date": "12/22/2022 19:02:06",
      "content": "<p>thanks for sharing</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2079605,
      "author_name": "takuma0306",
      "author_url": "",
      "post_date": "12/29/2022 13:25:19",
      "content": "<p>Thank you, your great post!<br>\nI had never heard of LightGBMRanker before.<br>\nThis is a big find for me!!!</p>",
      "votes": null,
      "replies": [
        {
          "id": 2079643,
          "author_name": "cdeotte",
          "author_url": "",
          "post_date": "12/29/2022 14:10:11",
          "content": "<p>Rankers are great models. I posted a tutorial about how to use GBTRankers <a href=\"https://www.kaggle.com/competitions/otto-recommender-system/discussion/370210\" target=\"_blank\">here</a></p>",
          "votes": null,
          "replies": [
            {
              "id": 2079676,
              "author_name": "takuma0306",
              "author_url": "",
              "post_date": "12/29/2022 14:23:37",
              "content": "<p>Thanks for the great sharing here too!<br>\nThanks for answering my questions as a newbie in various NOTEBOOK and DISCUSSIONS.</p>",
              "votes": null,
              "replies": []
            },
            {
              "id": 2081810,
              "author_name": "leiwong",
              "author_url": "",
              "post_date": "12/31/2022 16:57:25",
              "content": "<p>Thank you for sharing!</p>",
              "votes": null,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2081819,
      "author_name": "arpitlariya",
      "author_url": "",
      "post_date": "12/31/2022 17:18:43",
      "content": "<p>great post</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2090606,
      "author_name": "gpreda",
      "author_url": "",
      "post_date": "01/07/2023 14:04:58",
      "content": "<p>Thank you for this introduction. It is very easy for someone that is cold starting the competition to get insights if following posts like yours. I got here from Radek's Notebook here: <a href=\"https://www.kaggle.com/code/radek1/polars-proof-of-concept-lgbm-ranker\" target=\"_blank\">https://www.kaggle.com/code/radek1/polars-proof-of-concept-lgbm-ranker</a>. Please extend my token of appreciation also to him, he did a very good work to advertise also your contribution.</p>",
      "votes": null,
      "replies": [
        {
          "id": 2090983,
          "author_name": "radek1",
          "author_url": "",
          "post_date": "01/07/2023 22:04:22",
          "content": "<p>It is all a team effort! 🙂 Thank you <a href=\"https://www.kaggle.com/gpreda\" target=\"_blank\">@gpreda</a> for your kind words and for the shoutout! 🙏</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 2094520,
      "author_name": "abolfazlsavarniko",
      "author_url": "",
      "post_date": "01/10/2023 19:50:31",
      "content": "<p>very useful, Thanks for sharing</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2096427,
      "author_name": "juliankim",
      "author_url": "",
      "post_date": "01/12/2023 03:36:54",
      "content": "<p>Awesome insights! It's really helpful. </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2099835,
      "author_name": "mikiokobayashi",
      "author_url": "",
      "post_date": "01/14/2023 17:55:55",
      "content": "<p>Great post! I will learn how to use the rankers.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2466737,
      "author_name": "michaelminhpham",
      "author_url": "",
      "post_date": "10/04/2023 04:38:11",
      "content": "<p>thanks for your clarification</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 3037706,
      "author_name": "horiki",
      "author_url": "",
      "post_date": "11/06/2024 03:13:05",
      "content": "<p>Thanks for your explaination!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 3037742,
      "author_name": "sumit08",
      "author_url": "",
      "post_date": "11/06/2024 04:48:20",
      "content": "<p>Thanks for this wonderful information.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "2021030": "# The Concept\n\nIf you didn't realize, this dataset it quite large. In fact the train dataset consists of:\n- 12,899,779 sessions\n- 1,855,603 items\n- 216,716,096\tevents\n- 194,720,954 clicks\n- 16,896,191 carts\n- 5,098,951 orders\n\n[more info about the dataset](https://github.com/otto-de/recsys-dataset)\n\nSo as you might expect, just dumping the raw data into a model is not going to very very effective or efficient. That is why sites like YouTube with billions of items of content use a technique known as candidates generation. This technique has been applied in previous recommendation system challenges on Kaggle, and I think it can be applied here to.\n\nThis image should give you an overview of the process:\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6537187%2F674c8697b7d108e4e7db1074d3ccee1c%2Frec_candidate.PNG?generation=1667924915386305&alt=media)\n\n# Candidate Generation\n\nHere are some criteria you can use to select you candidates:\n- previously purchased items\n- repurchased items\n- overall most popular items\n- similar items based on some sort of clustering technique\n- similar items based on something such as a co-visitation matrix\n\nAfter using techniques like these, you should have much fewer items for each session, so you should be able to input these into a ranker model.\n\n# Ranking\n\nNow that you have your candidates, you need to generate features for your items. This is kind of tricky in this competition because we only have the article id (we don't have the product name, price, or other useful info). Thus, your features will probably be the reason the item was selected as a candidate. You can also make numerical features related to the candidates generation such as the number of times a item was viewed or repurchased, etc.\n\nNow that you have feature engineered items, you want to feed your options to a ranker models. Examples of ranker models include:\n- [LGBMRanker](https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMRanker.html)\n- [XGBRanker](https://medium.com/predictly-on-tech/learning-to-rank-using-xgboost-83de0166229d)\n- [Ranking with sklearn](https://towardsdatascience.com/learning-to-rank-with-python-scikit-learn-327a5cfd81f)\n- [Neural Network Ranker](https://maroo.cs.umass.edu/getpdf.php?id=1373)\n\nYou can then take your highest ranked items and submit them as your recommendations.",
    "2021333": "Very informative! Thanks for shearing🙂",
    "2021971": "Great post. This is a great way to build a model in this competition!",
    "2022089": "This is really helpful, thanks @ravishah1",
    "2022174": "fantastic post, @ravishah1! Great to elucidate this approach as you did here!!! 😊",
    "2022186": "great approach to try out. tnx so much :)",
    "2023723": "good insight of building recommender system. Candidate generation of maybe candidate selection? yeah, its just the choice of word. But that is a good way of thinking. Appreciate for the idea!",
    "2023742": "Great insights @ravishah1! Thanks for sharing!",
    "2024945": "Awesome post..",
    "2025068": "This is a great post with useful details. Thanks for sharing👍",
    "2027567": "Hi @ravishah1 thanks for sharing. This is a great overview showing us a way to move forward step by step.",
    "2028129": "ravishah1 Thank you for sharing such informative work. Keep it up. Upvoted. \n\nWhen you have time just look at my work.",
    "2029114": "Great post!",
    "2030518": "Informative post @ravishah1 thanks for sharing",
    "2030520": "Useful post! Thanks for sharing @ravishah1",
    "2031164": "Great insight.. thanks for sharing.",
    "2031344": "thank you for sharing. This helps me a lot.",
    "2031642": "Thanks for sharing!",
    "2034162": "Very useful, thank you!",
    "2034590": "Thank you so much",
    "2035614": "Thanks a lot for sharing!",
    "2037896": "Great post! It helps clarify what we need to do in this competition",
    "2053092": "I started with an EDA notebook, which crushed me a lot.\nAfter ready your sharing, I am more apparent. Thank you very much for sharing!",
    "2055062": "Thank you very much!",
    "2063645": "These information are so helpful to us. Thank you very much ! Good luck .",
    "2068116": "Here is a notebook on how to deal with a huge number of image data on small hardware [large datasets of images](https://www.kaggle.com/code/ezzzio/large-datasets-on-limited-hardware)",
    "2073214": "thanks for sharing",
    "2079605": "Thank you, your great post!\nI had never heard of LightGBMRanker before.\nThis is a big find for me!!!",
    "2079643": "Rankers are great models. I posted a tutorial about how to use GBTRankers [here][1]\n\n[1]: https://www.kaggle.com/competitions/otto-recommender-system/discussion/370210",
    "2079676": "Thanks for the great sharing here too!\nThanks for answering my questions as a newbie in various NOTEBOOK and DISCUSSIONS.",
    "2081810": "Thank you for sharing!",
    "2081819": "great post",
    "2090606": "Thank you for this introduction. It is very easy for someone that is cold starting the competition to get insights if following posts like yours. I got here from Radek's Notebook here: https://www.kaggle.com/code/radek1/polars-proof-of-concept-lgbm-ranker. Please extend my token of appreciation also to him, he did a very good work to advertise also your contribution.",
    "2090983": "It is all a team effort! 🙂 Thank you @gpreda for your kind words and for the shoutout! 🙏",
    "2094520": "very useful, Thanks for sharing",
    "2096427": "Awesome insights! It's really helpful.",
    "2099835": "Great post! I will learn how to use the rankers.",
    "2466737": "thanks for your clarification",
    "3037706": "Thanks for your explaination!",
    "3037742": "Thanks for this wonderful information."
  },
  "source": "meta"
}