返回列表

Part of 22nd solution - single LGBM (Private:0.03038)

487. H&M Personalized Fashion Recommendations | h-and-m-personalized-fashion-recommendations

开始: 2022-02-07 结束: 2022-05-09 商品推荐 数据算法赛
第22名方案分享 - 单一LGBM模型 (Private:0.03038)

第22名方案分享 - 单一LGBM模型 (Private:0.03038)

作者:ganchan (iwatatakuya) | 比赛排名:第22名

我要感谢这次精彩比赛的主办方,并祝贺获奖者和所有奖牌获得者!

特别感谢 @myaun@NARI@Moro@minguin,感谢你们作为团队提供的绝佳想法和解决方案。

在这篇文章中,我将向大家展示我的部分解决方案。

我认为我的方案相当简单,但训练和推理需要花费不少时间。

我的解决方案已发布为 Kaggle Notebook。如果您喜欢,请留言评论并点赞。

0. 环境与验证策略

我主要使用 Google Colab Pro+,因为我需要 GPU(cudf, cuml)来进行快速训练和大规模数据处理。

使用 1 个 GPU,训练大约需要 15 小时,推理(验证数据)需要 7 小时,推理(测试数据)需要 100 小时。Google Colab Pro+ 的多会话功能使其速度提高了 2 倍,但仍然非常耗时。

我使用 2020/9/16~9/22 的数据作为验证集,使用 ~2020/9/15 的数据进行训练。

1. 训练数据集

这可能是我的方案中最具特色的部分。

首先,我制作了在 2020/9/9~9/15、9/2~9/8、8/25~9/1 和 8/18~8/24 期间购买了某些商品的顾客数据集。

主键是 customer_id 和 article_id,每一对都有一个目标列,值为 1(购买)或 0(未购买)。

我们不能使用顾客未购买的所有文章作为负样本,因为数量太多,所以我为每位顾客随机选择了 30 篇文章作为负样本。

我认为我构建的特征并不特别,比如顾客和文章的购买次数(n_buy)。详情请参阅我的 Notebook。

2. 训练

我使用了 LGBM Classifier(而不是 Ranker)。在我的情况下,Classifier 的效果比 Ranker 更好。

3. 推理

我对每一对顾客和商品进行评分,并排序以预测顾客似乎会购买的商品。

候选商品是 2020/8/18~2020/9/15 期间销量前 15,000 的商品。候选商品在所有顾客中是相同的。

如此大量的候选商品会使推理变慢,但它对分数有显著影响。

感谢您读到这里。欢迎提问!

同比赛其他方案