返回列表

10th Place Solution

532. OTTO – Multi-Objective Recommender System | otto-recommender-system

开始: 2022-11-01 结束: 2023-01-31 商品推荐 数据算法赛
第10名方案

第10名方案

作者:MichaelG (MASTER)
比赛排名:第10名

感谢 OTTO 和 Kaggle 举办了如此有趣的比赛,我的方案非常直接,就是候选生成 + 重排序模型,简要总结如下。

候选生成

  • 重访问: 所有访问过的项目。
  • 共访1 (co-visit1): 基于公开 Notebook 并进行了两点改进。感谢 @radek1 和 @cdeotte。
    1. 通过权重衰减生成候选,例如一个会话有 N 个项目(按反向时间戳排序 idx1)且每个项目有 M 对共访项目(按时间权重或类型权重排序 idx2),分数计算为每个项目和候选对的 1 / idx1 / idx2,然后将这些分数求和作为候选分数。
    2. 用于重排序模型的共访特征 —— 成对项目共现的计数和概率、索引距离和时间距离(考虑顺序或不考虑顺序)等。
  • 共访2 (co-visit2/buy2buy): 仅包含购物车或订单。
  • 共访3 (co-visit3/next item): 生成候选时仅考虑最后一个项目。
  • sknn1: 简单的 sknn,选取 100 个最相似且最近的会话。
  • sknn2: sknn 的一种变体,名为序列和时间感知邻域,参考 https://arxiv.org/abs/1910.12781 实现了这两种 sknn。

重排序模型

  • aid 特征: 按时间窗口(7、14、21天)的简单统计。
  • 会话特征: 长度、aid 数量、按类型计数、到预测期结束的时间。
  • 重访问 aid X 会话: 点击/购物车/订单计数、绝对/相对位置。
  • 共访特征: 如前所述,生成大量特征来描述成对项目的共现情况。
  • sknn 特征: 仅包含候选分数/排名。
  • 相似度特征: 通过 word2vec 和 implicit 的 BPR 项目嵌入,计算候选项目与会话之间的相似度。

最后,使用 LightGBM (lambdarank) 训练了 3 个模型(点击/购物车/订单)。

同比赛其他方案