返回列表

11th place solution

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

开始: 2022-02-07 结束: 2022-05-09 商品推荐 数据算法赛
第11名方案

第11名方案

作者: oks (队友: NIWATORI) | 比赛: H&M Personalized Fashion Recommendations

感谢 Kaggle 和 H&M 主办这场激动人心的比赛,感谢我的队友 @niwatori 以及所有与我们竞争的参赛者。

以下是我们方案的简要总结。

1. 候选生成

正如论坛中所讨论的,我们使用了多种召回方法来生成候选。

  • 复购
  • 复购中具有相同产品代码的商品
  • 热门商品
  • 类别热门商品
    • 列出每个 department_no 的热门商品
    • 如果客户购买过相同 department_no 的商品,则添加这些热门商品
  • Item2item 协同过滤
  • 基于标签 OHE 向量的相似度
    • 根据标签(product_type_no, product_group_name 等)创建商品的 OHE 向量
    • 创建用户向量,即该客户购买的商品向量的平均值
    • 根据用户向量和商品向量之间的相似度选择 top-k 商品

我们保留了在候选生成阶段添加的大部分列,以便将它们作为特征利用。

2. 特征工程

除了上述阶段生成的列外,我们还添加了如下特征:

  • 用户静态特征
  • 商品静态特征
  • 动态特征(用户和商品相同)
    • 价格、sales_channel_id 的均值和标准差
    • 距离上次交易的日期差
    • 过去几周的销量/销量排名
  • 用户-商品特征
    • 距离 (用户, 商品) 对上次出现的日期差
    • 过去几周内 (用户, 商品)、(用户年龄, 商品) 对出现的次数
  • 商品 OHE 向量与用户向量的点积
  • 来自 Light-FM 的用户嵌入

3. 训练

我们使用了 CatBoost Ranker (YetiRank)。我们也尝试过使用 LGBMRanker,但在我们的案例中 CatBoost 给出了更好的结果。我们发现与调参后的模型相比,默认参数给出了不错的结果。

我们使用了 6、8 和 12 周的数据进行训练,并留出最后一周作为验证。在一台 224 核的机器上训练单个模型最多需要 20 小时。

我们最好的单模型成绩为 CV: 0.03589, Public: 0.03381, Private: 0.03391。

在整个比赛过程中,我们的验证集/公共榜基本呈正相关,但我们观察到更改训练周数会带来负相关。(CV 分数变差,Public/Private 分数变好)

4. 模型融合

我们采用了 此处介绍 的融合方法。

我们融合了 4 个使用不同训练周数和不同参数训练的模型。

备注

更新 这是我们的源代码:https://github.com/ryowk/kaggle-h-and-m-personalized-fashion-recommendations

同比赛其他方案