487. H&M Personalized Fashion Recommendations | h-and-m-personalized-fashion-recommendations
我要感谢这次精彩比赛的主办方,并祝贺获奖者和所有奖牌获得者!
特别感谢 @myaun、@NARI、@Moro 和 @minguin,感谢你们作为团队提供的绝佳想法和解决方案。
在这篇文章中,我将向大家展示我的部分解决方案。
我认为我的方案相当简单,但训练和推理需要花费不少时间。
我的解决方案已发布为 Kaggle Notebook。如果您喜欢,请留言评论并点赞。
我主要使用 Google Colab Pro+,因为我需要 GPU(cudf, cuml)来进行快速训练和大规模数据处理。
使用 1 个 GPU,训练大约需要 15 小时,推理(验证数据)需要 7 小时,推理(测试数据)需要 100 小时。Google Colab Pro+ 的多会话功能使其速度提高了 2 倍,但仍然非常耗时。
我使用 2020/9/16~9/22 的数据作为验证集,使用 ~2020/9/15 的数据进行训练。
这可能是我的方案中最具特色的部分。
首先,我制作了在 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。
我使用了 LGBM Classifier(而不是 Ranker)。在我的情况下,Classifier 的效果比 Ranker 更好。
我对每一对顾客和商品进行评分,并排序以预测顾客似乎会购买的商品。
候选商品是 2020/8/18~2020/9/15 期间销量前 15,000 的商品。候选商品在所有顾客中是相同的。
如此大量的候选商品会使推理变慢,但它对分数有显著影响。
感谢您读到这里。欢迎提问!