487. H&M Personalized Fashion Recommendations | h-and-m-personalized-fashion-recommendations
在介绍我们的解决方案之前,我要感谢 Kaggle 工作人员和 H&M 团队,以及排行榜上所有与我们竞争的选手。当然,特别感谢我的队友 @A.Sato、@taksai 和 @tomo20180402,感谢他们的出色努力。我们很荣幸能获得金牌!
我们解决方案的总体策略基于四个步骤:
我们训练了三个具有不同候选选择方法的 LightGBM 排序模型,并最终使用集成技术来提高我们的分数。
我们解决方案的核心思想是利用 item2vec 嵌入,这是一种受 word2vec 启发的算法。
商品嵌入直接使用 item2vec 嵌入,而客户嵌入是通过对每个客户过去购买的所有商品在所有维度上取平均值来创建的。
在候选选择阶段,我们尝试为每个客户采样正样本和负样本。三个模型的候选选择方法各不相同,模型之间候选的多样性在集成后提升了我们的分数。
模型 1 的集成方法结合了 4 种策略。使用过去 14 周的数据来训练该模型。
除了最近购买的商品(以及与最近购买商品具有相同产品代码的商品)外,我的主要模型完全依赖于最近 10,000 名客户中的局部流行度。
就单模型而言,这种方法在三个模型中得分最高(Private LB 330 名左右)。
首先,我根据以下技术为每个客户创建了 4 种类型的聚类。(基于商品的嵌入通过过去购买商品的每个维度取平均值来创建客户嵌入)
在聚类过程之后,每个客户将属于 4 个不同的聚类。
对于每个聚类,我创建了过去 30 天的商品排名,并根据每个客户所属的聚类制定加权的总体排名。
根据客户情况,最近购买的 article_ids 和 product_codes 被赋予更高的权重。模型 3 从总体排名中选取每个用户的前 350 件商品。
对于每个候选,我们创建了以下特征: