返回列表

10th place solution

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

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

第10名方案

作者:flg (Grandmaster)
比赛:H&M Personalized Fashion Recommendations

首先,感谢 H&M 和 Kaggle 提供了这么棒的比赛。我非常喜欢这次比赛,这是一种非常好的挑战类型,因为它对计算资源的要求不高(不过度依赖算力),并且允许采用广泛的解决方案。

许多 Kagglers 已经分享了他们的方案,由于我遵循了与大多数人相同的框架,我将只提及一些不同之处。

CV-LB 相关性

  1. 许多人报告了 CV(交叉验证)和 LB(排行榜)之间存在差距,或者当模型改进时出现“放缓”现象。我从未遇到过这种情况,我的 CV 和 LB 之间的线性拟合结果为:f(x) = 0.793x + c,R²=98.96%。
  2. 这个问题很可能是由于来自未来的信息泄露造成的。例如,当我使用截止到 9月15日 的所有数据训练一个 CF(协同过滤)模型,然后将其用于预测 9月1日 那周的数据时,我会通过隐式使用未来的购买信息来提高我的 CV 分数。
  3. 我通过为每周训练一套完整的模型来避免这种情况。我用创建模型时使用的最后日期来标记模型。这样就不可能泄露任何信息。
  4. 虽然这听起来不错,但这也就是我的“败笔”。我根本没有足够的算力来针对许多不同的模型和周数进行这项工作。这就是为什么我的召回方法比顶级方案的多样性要差得多,也是为什么我最终只使用了四周的训练数据。

检索策略 / 特征

  1. 除了许多人使用的功能(复购、I2I、CF、热销商品等)之外,我还创建了一个简单的销量预测模型。它根据商品最近的销量来预测下周的销量。
  2. 该模型的主要用途是帮助检测正在逐步上市或退市的商品(因为我们没有该数据)。
  3. 示例:一款仅在短时间内可用的商品(特殊合作款等)的日销量可能如下:0 0 28 431 389 105 32 11。使用最近的流行度会大大高估下周的销量,而预测模型则学会了该商品正在逐步退市(缺货)。
  4. 最终它成为了最常用的特征之一,可能是因为它在一个特征中涵盖了流行度和(未来)可用性。
  5. 我用于相似度计算的主力工具是 LightFM(BPR 和 WARP,包含和不包含商品特征)。我将其用于推荐和商品对商品的相似度计算(通过比较特征嵌入)。

硬件 / 优化

  1. 台式机,12核 CPU 和 64GB 内存。
  2. 我大量使用了特征存储。
  3. 为了将训练数据大小与可用内存解耦,我从 HDF5 文件训练我的 LightGBM 模型。
  4. 最终模型是四个 LightGBM 模型的集成。但改进相当小,与单个最佳模型相比仅提升了约 1%。
同比赛其他方案