{
  "id": 309220,
  "title": "[LB 0.19] LGBM Starter Pack",
  "url": "/competitions/h-and-m-personalized-fashion-recommendations/discussion/309220",
  "author_name": "Radek Osmulski",
  "post_date": "2022-02-22T12:00:20.195000",
  "votes": 115,
  "comment_count": 16,
  "views": 0,
  "content": "<p>Please allow me to share with you a starter pack that I put together. You can find it on github <a href=\"https://github.com/radekosmulski/personalized_fashion_recs\" target=\"_blank\">here</a> 😊</p>\n<p>I have done my share of collaborative filtering toy examples back in the days, but this is my first run-in with a RecSys problem of considerable complexity. This <a href=\"https://www.kaggle.com/c/h-and-m-personalized-fashion-recommendations/discussion/307288\" target=\"_blank\">thread</a> by <a href=\"https://www.kaggle.com/paweljankiewicz\" target=\"_blank\">@paweljankiewicz</a> is legendary (thank you very much for it, Pawel!), it gives you the framework that you need for starting to work on a good solution.</p>\n<p>But it doesn't seem to be all that trivial to go from the description to actual code that works. How do you update the records that live in a pandas df in a fast enough manner? How do you generate negative examples / candidate records? As it turns out, pandas merge functionality is very nice for this, but to write the logic relatively cleanly, where you can look at the code and reason about what it's doing, has definitely been an uphill battle.</p>\n<p>Anyhow, maybe someone will find this useful 🙂</p>\n<p>I would like to give a very big shoutout to <a href=\"https://www.kaggle.com/paweljankiewicz\" target=\"_blank\">@paweljankiewicz</a> -- without his guidance, I don't think a person new to RecSys would stand a chance getting started with this competition. And also a very big shout out to <a href=\"https://www.kaggle.com/cdeotte\" target=\"_blank\">@cdeotte</a>! Chris is sharing some amazing insights and techniques across his multiple threads / kernels, greatly appreciated!</p>\n<p>I am not sure I will have a chance to work on this competition much more, other more pressing code projects call, but wishing all the best to everyone in the competition!!!</p>",
  "messages": [
    {
      "id": 1700951,
      "postDate": "2022-02-22T12:00:20.197Z",
      "content": "<p>Please allow me to share with you a starter pack that I put together. You can find it on github <a href=\"https://github.com/radekosmulski/personalized_fashion_recs\" target=\"_blank\">here</a> 😊</p>\n<p>I have done my share of collaborative filtering toy examples back in the days, but this is my first run-in with a RecSys problem of considerable complexity. This <a href=\"https://www.kaggle.com/c/h-and-m-personalized-fashion-recommendations/discussion/307288\" target=\"_blank\">thread</a> by <a href=\"https://www.kaggle.com/paweljankiewicz\" target=\"_blank\">@paweljankiewicz</a> is legendary (thank you very much for it, Pawel!), it gives you the framework that you need for starting to work on a good solution.</p>\n<p>But it doesn't seem to be all that trivial to go from the description to actual code that works. How do you update the records that live in a pandas df in a fast enough manner? How do you generate negative examples / candidate records? As it turns out, pandas merge functionality is very nice for this, but to write the logic relatively cleanly, where you can look at the code and reason about what it's doing, has definitely been an uphill battle.</p>\n<p>Anyhow, maybe someone will find this useful 🙂</p>\n<p>I would like to give a very big shoutout to <a href=\"https://www.kaggle.com/paweljankiewicz\" target=\"_blank\">@paweljankiewicz</a> -- without his guidance, I don't think a person new to RecSys would stand a chance getting started with this competition. And also a very big shout out to <a href=\"https://www.kaggle.com/cdeotte\" target=\"_blank\">@cdeotte</a>! Chris is sharing some amazing insights and techniques across his multiple threads / kernels, greatly appreciated!</p>\n<p>I am not sure I will have a chance to work on this competition much more, other more pressing code projects call, but wishing all the best to everyone in the competition!!!</p>",
      "rawMarkdown": "Please allow me to share with you a starter pack that I put together. You can find it on github [here](https://github.com/radekosmulski/personalized_fashion_recs) 😊\n\nI have done my share of collaborative filtering toy examples back in the days, but this is my first run-in with a RecSys problem of considerable complexity. This [thread](https://www.kaggle.com/c/h-and-m-personalized-fashion-recommendations/discussion/307288) by @paweljankiewicz is legendary (thank you very much for it, Pawel!), it gives you the framework that you need for starting to work on a good solution.\n\nBut it doesn't seem to be all that trivial to go from the description to actual code that works. How do you update the records that live in a pandas df in a fast enough manner? How do you generate negative examples / candidate records? As it turns out, pandas merge functionality is very nice for this, but to write the logic relatively cleanly, where you can look at the code and reason about what it's doing, has definitely been an uphill battle.\n\nAnyhow, maybe someone will find this useful 🙂\n\nI would like to give a very big shoutout to @paweljankiewicz -- without his guidance, I don't think a person new to RecSys would stand a chance getting started with this competition. And also a very big shout out to @cdeotte! Chris is sharing some amazing insights and techniques across his multiple threads / kernels, greatly appreciated!\n\nI am not sure I will have a chance to work on this competition much more, other more pressing code projects call, but wishing all the best to everyone in the competition!!!",
      "votes": 115
    },
    {
      "id": 1706476,
      "postDate": "2022-02-27T14:11:09.117Z",
      "content": "<p>Thanks! I was also building up a similar approach like yours. </p>\n<p>One of the main issues I was trying was to work by observation weeks rather than observation dates. So, dimensionality is reduced. The question I asked to myself was: Does it really matter if a customers buys on Wednesday or Friday? Lags with weeks become so easy.</p>\n<p>I created <strong>static and dynamic attributes</strong> from the articles (static: article type, article info… dynamic: number of sells previous week, last 2 weeks, mean of sales over last 3 weeks, most common article channel id for this attribute, price mean and standard deviation…) </p>\n<p>And <strong>customer static</strong> (age, Fashion News) and <strong>dynamic</strong> (buys in the last week, last 2 weeks, money spent, prices of products mean and std…) </p>\n<p>All this data is merged to the training data for the ranker model. The columns are:</p>\n<p><code>customer_id , year_week, article_id, (articles attributes), (customer attributes), bought_or_not = RANK</code></p>\n<p>The bought_or_not is the TARGET of this ranker model. I computed with 1 or 0. Being 1 if the client bought it, 0 if they do not. Have you used other numbers? </p>\n<p>If I sample male customers for example and divide the train and test by weeks (being test the last week). And then use most sold products in train to generate the negative candidates in train and test. I get good results (local MAP@12: 0.5). But this result is really tricky.</p>\n<p>In reality, I don't know what articles will be the real bought in the upcoming week (I have no idea how to guess the positive candidates). I did some EDA and articles that were in last percentile of most buys previous week, suddenly become top buys next week. </p>\n<p>So I am at the point that I think ranker model works good, but I have no idea how to give proper article recommendations, because market or customers do not behave like someone would expect. <em>Why does a customer that bought an article would buy the same article again?</em> I don't know if I am biased by my own customer behaviour, but I don't think many people do that. </p>\n<p>Any input, advice or help is welcomed. <a href=\"https://github.com/carlosperez1997/hm_recommendation\" target=\"_blank\">my code. I have to still add some comments</a> I was trying multiple things</p>",
      "rawMarkdown": "Thanks! I was also building up a similar approach like yours. \n\nOne of the main issues I was trying was to work by observation weeks rather than observation dates. So, dimensionality is reduced. The question I asked to myself was: Does it really matter if a customers buys on Wednesday or Friday? Lags with weeks become so easy.\n\nI created **static and dynamic attributes** from the articles (static: article type, article info... dynamic: number of sells previous week, last 2 weeks, mean of sales over last 3 weeks, most common article channel id for this attribute, price mean and standard deviation...) \n\nAnd **customer static** (age, Fashion News) and **dynamic** (buys in the last week, last 2 weeks, money spent, prices of products mean and std...) \n\nAll this data is merged to the training data for the ranker model. The columns are:\n\n`customer_id , year_week, article_id, (articles attributes), (customer attributes), bought_or_not = RANK`\n\nThe bought_or_not is the TARGET of this ranker model. I computed with 1 or 0. Being 1 if the client bought it, 0 if they do not. Have you used other numbers? \n\nIf I sample male customers for example and divide the train and test by weeks (being test the last week). And then use most sold products in train to generate the negative candidates in train and test. I get good results (local MAP@12: 0.5). But this result is really tricky.\n\nIn reality, I don't know what articles will be the real bought in the upcoming week (I have no idea how to guess the positive candidates). I did some EDA and articles that were in last percentile of most buys previous week, suddenly become top buys next week. \n\nSo I am at the point that I think ranker model works good, but I have no idea how to give proper article recommendations, because market or customers do not behave like someone would expect. *Why does a customer that bought an article would buy the same article again?* I don't know if I am biased by my own customer behaviour, but I don't think many people do that. \n\nAny input, advice or help is welcomed. [my code. I have to still add some comments](https://github.com/carlosperez1997/hm_recommendation) I was trying multiple things",
      "votes": 7,
      "replies": [
        {
          "id": 1777751,
          "postDate": "2022-05-04T18:52:42.157Z",
          "content": "<p>Customers are returning products which they bought because of issue with size/color etc. And that's why I think we see that customers end up buying same product again next OR next to next week.</p>",
          "rawMarkdown": "Customers are returning products which they bought because of issue with size/color etc. And that's why I think we see that customers end up buying same product again next OR next to next week."
        },
        {
          "id": 1781184,
          "postDate": "2022-05-08T09:18:25.557Z",
          "content": "<p>Thanks for your sharing about your thought on solution. </p>",
          "rawMarkdown": "Thanks for your sharing about your thought on solution. "
        }
      ]
    },
    {
      "id": 1747588,
      "postDate": "2022-04-06T19:14:06.957Z",
      "content": "<p>I'm using LGBMRanker, and getting a good LB score, but I can't get the cv/LB correlation.<br>\nMoreover, I can't even get the evaluation metric to improve on the training set as it trains - it's as if the training loss is not correlated with the evaluation metrics.</p>\n<p>Can anyone help me with this?</p>",
      "rawMarkdown": "I'm using LGBMRanker, and getting a good LB score, but I can't get the cv/LB correlation.\nMoreover, I can't even get the evaluation metric to improve on the training set as it trains - it's as if the training loss is not correlated with the evaluation metrics.\n\nCan anyone help me with this?",
      "votes": 4,
      "replies": [
        {
          "id": 1747649,
          "postDate": "2022-04-06T20:51:11.113Z",
          "content": "<p>Did you get 0,259 score just by using ranker model? What kind of features do you use, item/user features? Thanks in advance!</p>",
          "rawMarkdown": "Did you get 0,259 score just by using ranker model? What kind of features do you use, item/user features? Thanks in advance!"
        }
      ]
    },
    {
      "id": 1702382,
      "postDate": "2022-02-23T15:04:56.260Z",
      "content": "<p>Thanks, sir. it is very helpful. and very informative</p>",
      "rawMarkdown": "Thanks, sir. it is very helpful. and very informative",
      "votes": 1
    },
    {
      "id": 1701256,
      "postDate": "2022-02-22T16:03:06.990Z",
      "content": "<p>thank you so much, I was trying to look at how to use LGBMRanker and this will definitely going to help ! </p>",
      "rawMarkdown": "thank you so much, I was trying to look at how to use LGBMRanker and this will definitely going to help ! ",
      "votes": 1
    },
    {
      "id": 1707755,
      "postDate": "2022-02-28T18:30:32.153Z",
      "content": "<p>Thank you! Based on your code I created user/item features and wrote simple gbm ranking model. Anyone who is interested can check it <a href=\"https://www.kaggle.com/alexvishnevskiy/gbm-ranking\" target=\"_blank\">here</a>.</p>",
      "rawMarkdown": "Thank you! Based on your code I created user/item features and wrote simple gbm ranking model. Anyone who is interested can check it [here](https://www.kaggle.com/alexvishnevskiy/gbm-ranking).",
      "votes": 2
    },
    {
      "id": 1777595,
      "postDate": "2022-05-04T17:08:12.117Z",
      "content": "<p>I studied your approach and learnt a lot about Rankers. Thank you for sharing this model</p>",
      "rawMarkdown": "I studied your approach and learnt a lot about Rankers. Thank you for sharing this model"
    },
    {
      "id": 1763328,
      "postDate": "2022-04-21T12:44:31.380Z",
      "content": "<p>That's really good! Well done! Thanks for sharing!</p>",
      "rawMarkdown": "That's really good! Well done! Thanks for sharing!"
    },
    {
      "id": 1706061,
      "postDate": "2022-02-27T06:01:11.017Z",
      "content": "<p>Thanks, I was not familiar with how to approach this problem and although I read Pawel's very helpful thread and a few other things, being a bit short of time I was struggling to get started with something practical. Going through your code helped me to actually start to make a little progress with this!</p>\n<p>In particular it was very helpful to see the practical example of LGBM Ranker. I hadn't used it before and I struggled to find decent examples of this online. Maybe just not looking carefully enough (maybe there are now more competition notebooks on this - I haven't checked in last few days).</p>\n<p>Anyway, thanks again for the help.</p>",
      "rawMarkdown": "Thanks, I was not familiar with how to approach this problem and although I read Pawel's very helpful thread and a few other things, being a bit short of time I was struggling to get started with something practical. Going through your code helped me to actually start to make a little progress with this!\n\nIn particular it was very helpful to see the practical example of LGBM Ranker. I hadn't used it before and I struggled to find decent examples of this online. Maybe just not looking carefully enough (maybe there are now more competition notebooks on this - I haven't checked in last few days).\n\nAnyway, thanks again for the help."
    },
    {
      "id": 1705550,
      "postDate": "2022-02-26T15:33:33.860Z",
      "content": "<p>Thank you for sharing a great work! I'm going to learn from your code.</p>",
      "rawMarkdown": "Thank you for sharing a great work! I'm going to learn from your code."
    },
    {
      "id": 1752793,
      "postDate": "2022-04-12T06:22:48.103Z",
      "rawMarkdown": "",
      "isDeleted": true
    },
    {
      "id": 1706076,
      "postDate": "2022-02-27T06:41:48.173Z",
      "rawMarkdown": "",
      "isDeleted": true
    },
    {
      "id": 1701222,
      "postDate": "2022-02-22T15:39:43.703Z",
      "content": "<p>This is gold! Thank you so much!</p>",
      "rawMarkdown": "This is gold! Thank you so much!",
      "votes": 1
    },
    {
      "id": 1747681,
      "postDate": "2022-04-06T21:58:57.303Z",
      "content": "<p>Thanks for sharing </p>",
      "rawMarkdown": "Thanks for sharing "
    }
  ],
  "comments": [
    {
      "id": 1706476,
      "author_name": "Carlos Pérez Ricardo",
      "author_url": "",
      "post_date": "2022-02-27T14:11:09.117000",
      "content": "<p>Thanks! I was also building up a similar approach like yours. </p>\n<p>One of the main issues I was trying was to work by observation weeks rather than observation dates. So, dimensionality is reduced. The question I asked to myself was: Does it really matter if a customers buys on Wednesday or Friday? Lags with weeks become so easy.</p>\n<p>I created <strong>static and dynamic attributes</strong> from the articles (static: article type, article info… dynamic: number of sells previous week, last 2 weeks, mean of sales over last 3 weeks, most common article channel id for this attribute, price mean and standard deviation…) </p>\n<p>And <strong>customer static</strong> (age, Fashion News) and <strong>dynamic</strong> (buys in the last week, last 2 weeks, money spent, prices of products mean and std…) </p>\n<p>All this data is merged to the training data for the ranker model. The columns are:</p>\n<p><code>customer_id , year_week, article_id, (articles attributes), (customer attributes), bought_or_not = RANK</code></p>\n<p>The bought_or_not is the TARGET of this ranker model. I computed with 1 or 0. Being 1 if the client bought it, 0 if they do not. Have you used other numbers? </p>\n<p>If I sample male customers for example and divide the train and test by weeks (being test the last week). And then use most sold products in train to generate the negative candidates in train and test. I get good results (local MAP@12: 0.5). But this result is really tricky.</p>\n<p>In reality, I don't know what articles will be the real bought in the upcoming week (I have no idea how to guess the positive candidates). I did some EDA and articles that were in last percentile of most buys previous week, suddenly become top buys next week. </p>\n<p>So I am at the point that I think ranker model works good, but I have no idea how to give proper article recommendations, because market or customers do not behave like someone would expect. <em>Why does a customer that bought an article would buy the same article again?</em> I don't know if I am biased by my own customer behaviour, but I don't think many people do that. </p>\n<p>Any input, advice or help is welcomed. <a href=\"https://github.com/carlosperez1997/hm_recommendation\" target=\"_blank\">my code. I have to still add some comments</a> I was trying multiple things</p>",
      "votes": 7,
      "replies": [
        {
          "id": 1777751,
          "author_name": "Akhil Ahuja",
          "author_url": "",
          "post_date": "2022-05-04T18:52:42.157000",
          "content": "<p>Customers are returning products which they bought because of issue with size/color etc. And that's why I think we see that customers end up buying same product again next OR next to next week.</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 1781184,
          "author_name": "水彩不好画",
          "author_url": "",
          "post_date": "2022-05-08T09:18:25.557000",
          "content": "<p>Thanks for your sharing about your thought on solution. </p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1747588,
      "author_name": "Clear n' Simple",
      "author_url": "",
      "post_date": "2022-04-06T19:14:06.957000",
      "content": "<p>I'm using LGBMRanker, and getting a good LB score, but I can't get the cv/LB correlation.<br>\nMoreover, I can't even get the evaluation metric to improve on the training set as it trains - it's as if the training loss is not correlated with the evaluation metrics.</p>\n<p>Can anyone help me with this?</p>",
      "votes": 4,
      "replies": [
        {
          "id": 1747649,
          "author_name": "Alex Vishnevskiy",
          "author_url": "",
          "post_date": "2022-04-06T20:51:11.113000",
          "content": "<p>Did you get 0,259 score just by using ranker model? What kind of features do you use, item/user features? Thanks in advance!</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1702382,
      "author_name": "Isharab Ahmed",
      "author_url": "",
      "post_date": "2022-02-23T15:04:56.260000",
      "content": "<p>Thanks, sir. it is very helpful. and very informative</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1701256,
      "author_name": "Mohamed Annis SOUAMES",
      "author_url": "",
      "post_date": "2022-02-22T16:03:06.990000",
      "content": "<p>thank you so much, I was trying to look at how to use LGBMRanker and this will definitely going to help ! </p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1707755,
      "author_name": "Alex Vishnevskiy",
      "author_url": "",
      "post_date": "2022-02-28T18:30:32.153000",
      "content": "<p>Thank you! Based on your code I created user/item features and wrote simple gbm ranking model. Anyone who is interested can check it <a href=\"https://www.kaggle.com/alexvishnevskiy/gbm-ranking\" target=\"_blank\">here</a>.</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 1777595,
      "author_name": "Lore",
      "author_url": "",
      "post_date": "2022-05-04T17:08:12.117000",
      "content": "<p>I studied your approach and learnt a lot about Rankers. Thank you for sharing this model</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1763328,
      "author_name": "LG",
      "author_url": "",
      "post_date": "2022-04-21T12:44:31.380000",
      "content": "<p>That's really good! Well done! Thanks for sharing!</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1706061,
      "author_name": "Dave E",
      "author_url": "",
      "post_date": "2022-02-27T06:01:11.017000",
      "content": "<p>Thanks, I was not familiar with how to approach this problem and although I read Pawel's very helpful thread and a few other things, being a bit short of time I was struggling to get started with something practical. Going through your code helped me to actually start to make a little progress with this!</p>\n<p>In particular it was very helpful to see the practical example of LGBM Ranker. I hadn't used it before and I struggled to find decent examples of this online. Maybe just not looking carefully enough (maybe there are now more competition notebooks on this - I haven't checked in last few days).</p>\n<p>Anyway, thanks again for the help.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1705550,
      "author_name": "Ryo Asashi",
      "author_url": "",
      "post_date": "2022-02-26T15:33:33.860000",
      "content": "<p>Thank you for sharing a great work! I'm going to learn from your code.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1752793,
      "author_name": "",
      "author_url": "",
      "post_date": "2022-04-12T06:22:48.103000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1706076,
      "author_name": "",
      "author_url": "",
      "post_date": "2022-02-27T06:41:48.173000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1701222,
      "author_name": "Mohamad Jaallouk",
      "author_url": "",
      "post_date": "2022-02-22T15:39:43.703000",
      "content": "<p>This is gold! Thank you so much!</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1747681,
      "author_name": "stallone",
      "author_url": "",
      "post_date": "2022-04-06T21:58:57.303000",
      "content": "<p>Thanks for sharing </p>",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1700951": "Please allow me to share with you a starter pack that I put together. You can find it on github [here](https://github.com/radekosmulski/personalized_fashion_recs) 😊\n\nI have done my share of collaborative filtering toy examples back in the days, but this is my first run-in with a RecSys problem of considerable complexity. This [thread](https://www.kaggle.com/c/h-and-m-personalized-fashion-recommendations/discussion/307288) by @paweljankiewicz is legendary (thank you very much for it, Pawel!), it gives you the framework that you need for starting to work on a good solution.\n\nBut it doesn't seem to be all that trivial to go from the description to actual code that works. How do you update the records that live in a pandas df in a fast enough manner? How do you generate negative examples / candidate records? As it turns out, pandas merge functionality is very nice for this, but to write the logic relatively cleanly, where you can look at the code and reason about what it's doing, has definitely been an uphill battle.\n\nAnyhow, maybe someone will find this useful 🙂\n\nI would like to give a very big shoutout to @paweljankiewicz -- without his guidance, I don't think a person new to RecSys would stand a chance getting started with this competition. And also a very big shout out to @cdeotte! Chris is sharing some amazing insights and techniques across his multiple threads / kernels, greatly appreciated!\n\nI am not sure I will have a chance to work on this competition much more, other more pressing code projects call, but wishing all the best to everyone in the competition!!!",
    "1706476": "Thanks! I was also building up a similar approach like yours. \n\nOne of the main issues I was trying was to work by observation weeks rather than observation dates. So, dimensionality is reduced. The question I asked to myself was: Does it really matter if a customers buys on Wednesday or Friday? Lags with weeks become so easy.\n\nI created **static and dynamic attributes** from the articles (static: article type, article info... dynamic: number of sells previous week, last 2 weeks, mean of sales over last 3 weeks, most common article channel id for this attribute, price mean and standard deviation...) \n\nAnd **customer static** (age, Fashion News) and **dynamic** (buys in the last week, last 2 weeks, money spent, prices of products mean and std...) \n\nAll this data is merged to the training data for the ranker model. The columns are:\n\n`customer_id , year_week, article_id, (articles attributes), (customer attributes), bought_or_not = RANK`\n\nThe bought_or_not is the TARGET of this ranker model. I computed with 1 or 0. Being 1 if the client bought it, 0 if they do not. Have you used other numbers? \n\nIf I sample male customers for example and divide the train and test by weeks (being test the last week). And then use most sold products in train to generate the negative candidates in train and test. I get good results (local MAP@12: 0.5). But this result is really tricky.\n\nIn reality, I don't know what articles will be the real bought in the upcoming week (I have no idea how to guess the positive candidates). I did some EDA and articles that were in last percentile of most buys previous week, suddenly become top buys next week. \n\nSo I am at the point that I think ranker model works good, but I have no idea how to give proper article recommendations, because market or customers do not behave like someone would expect. *Why does a customer that bought an article would buy the same article again?* I don't know if I am biased by my own customer behaviour, but I don't think many people do that. \n\nAny input, advice or help is welcomed. [my code. I have to still add some comments](https://github.com/carlosperez1997/hm_recommendation) I was trying multiple things",
    "1747588": "I'm using LGBMRanker, and getting a good LB score, but I can't get the cv/LB correlation.\nMoreover, I can't even get the evaluation metric to improve on the training set as it trains - it's as if the training loss is not correlated with the evaluation metrics.\n\nCan anyone help me with this?",
    "1702382": "Thanks, sir. it is very helpful. and very informative",
    "1701256": "thank you so much, I was trying to look at how to use LGBMRanker and this will definitely going to help ! ",
    "1707755": "Thank you! Based on your code I created user/item features and wrote simple gbm ranking model. Anyone who is interested can check it [here](https://www.kaggle.com/alexvishnevskiy/gbm-ranking).",
    "1777595": "I studied your approach and learnt a lot about Rankers. Thank you for sharing this model",
    "1763328": "That's really good! Well done! Thanks for sharing!",
    "1706061": "Thanks, I was not familiar with how to approach this problem and although I read Pawel's very helpful thread and a few other things, being a bit short of time I was struggling to get started with something practical. Going through your code helped me to actually start to make a little progress with this!\n\nIn particular it was very helpful to see the practical example of LGBM Ranker. I hadn't used it before and I struggled to find decent examples of this online. Maybe just not looking carefully enough (maybe there are now more competition notebooks on this - I haven't checked in last few days).\n\nAnyway, thanks again for the help.",
    "1705550": "Thank you for sharing a great work! I'm going to learn from your code.",
    "1752793": "",
    "1706076": "",
    "1701222": "This is gold! Thank you so much!",
    "1747681": "Thanks for sharing "
  }
}