487. H&M Personalized Fashion Recommendations | h-and-m-personalized-fashion-recommendations
感谢 H&M、Kaggle 以及我的竞争对手们带来了这场激动人心的比赛。这篇文章是对我解决方案的简要总结。由于是通过谷歌翻译翻译成英文的,我想可能有一些地方连接不畅,如果您有任何问题,请随时提问。
这次,我使用神经网络设计了双塔模型(2-tower model)。双塔模型通过两个部分提供高性能推荐:使用轻量级模型筛选候选者的检索部分,以及使用高精度模型进行预测的排序部分。具体来说,预测/学习的流程如下。
第一阶段(检索部分) 公开榜:0.02137 私有榜:0.02296
使用 Item2Vec 缩小预测日期前后出现的文章数量的排名范围。(1)
基于规则提取过去有历史记录且最近与其他用户有互动的项目。(2)
第二阶段(排序部分) 公开榜:0.2779 私有榜:0.02846
使用 Transformer 对 (1) 和 (2) 进行重排序。
模型将在以下三个部分进行说明。
在嵌入部分,预计算的图像/自然语言模型嵌入与使用 gensim 的 word2vec 初始化的类别嵌入通过 DCNV2 混合。各嵌入的获取方式如下。
图像
自然语言
类别
通过 gensim 实现的 Word2vec
表格数据
由于这些特征是在实现其他效果更好的方法之前引入的,我们没有验证个别效果,但我感觉它们并不是很有效。
在检索部分,我通过搜索向量缩小了范围,该向量采用了文章嵌入的加权平均值与产品嵌入的余弦相似度。
目标嵌入
我将文章的嵌入放入几个全连接层并进行转换。
查询嵌入
我对文章的嵌入使用了按时间等加权的加权平均。关于如何增加权重,权重是通过 (1/2) ^ relu (edge_feature) 计算的,其中以经过时间等特征作为 edge_feature,然后计算加权平均。
我也考虑过使用自注意力的 Transformer,但在这部分没有意义。
我们计算了 SupervisedContrastiveLoss,将有互动的设为1,无互动的负样本设为0。同时,我使用了 AdaCos。边界参数为0。
当边界参数大于0时,所有余弦相似度都会负向发散。另外,我监控了正常情况下的余弦相似度,最终大约是0.3。在排名方面,4096个样本中的正确样本大约排在第600位,我感觉这个任务很难。
批次按10岁年龄段对用户进行分段,确保同年龄同一天的目标在同一个批次中,并按时间顺序训练。在训练期间,我从按10岁分段的组中最近一周文章出现次数最多的前10,000篇中最多采样4096篇文章。采样使用了
同比赛其他方案