返回列表

14th Place Solution(Ethan&qyxs part)

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

开始: 2022-11-01 结束: 2023-01-31 商品推荐 数据算法赛
第14名方案(Ethan & qyxs 部分)

第14名方案(Ethan & qyxs 部分)

作者: Ethan | 比赛: OTTO Recommender System | 排名: 第14名

感谢 OTTO 和 Kaggle 举办了这么棒的一场比赛。感谢我优秀的队友 @juzqyxs@rib@ria

验证

使用最后一周的会话数据。

召回

使用了两种传统方法:

  • u2i: 用户之前操作过的商品。
  • i2i: ItemCF(基于物品的协同过滤),我们针对每个任务(点击、加购、下单)分别进行。并且我们使用了多种权重来优化其性能,例如两个商品之间的“时间间隔”、“位置间隔”、“类型差异”。

排序

  • 特征
  1. 基于会话: 计数、最后一次操作的时间间隔(点击/加购/下单)、最后一次操作类型。
  2. 基于商品: 计数、比率(点击率、加购转下单率等)、时间。
  3. 基于会话+商品: 计数、最后一次操作的时间间隔(点击/加购/下单)、最后一次操作类型。
  4. w2v 嵌入: 候选商品与会话历史商品之间的差异和相似度,然后使用 mean、max、min、last、std 等统计量。
  5. 协同过滤分数: i2i 的协同过滤分数,计算候选商品与用户历史商品之间的关联得分。
  6. 窗口统计特征: 在每个会话最后时间点的前后不同窗口(1天、3天)内,商品的计数和比率特征。
  • 数据增强
  1. 使用更多周的数据进行训练,我们在最终提交中使用了 3 周的数据。
  2. 使用不同的随机种子生成更多的训练数据(会话的不同截断点),最后我们使用了 5 个种子。
    这些操作在本地 CV 上带来了 0.001 的提升。
  • 模型
  1. LightGBM 二分类器,学习率:0.05,迭代次数:1000 轮。
  2. CatBoost 二分类器,学习率:0.05,迭代次数:6000 轮。
    融合这两个模型的结果得分 LB: 0.600。

有趣的发现

在优化“下单”任务时:

  1. orders_prob = 0.7 * orders_prob + 0.2 * carts_prob + 0.1 * click_prob,这在“下单”任务的本地 CV 上带来了 0.0004 的提升(在三个任务的同一会话上评估)。
  2. 我的队友 rib 将“加购”和“下单”的训练数据拼接起来,并增加了一个特征(0 或 1)来标记样本是否来自“加购”,这能让“下单”的分数提升 0.0003。

模型融合

对于最终提交,我们使用投票法与 Rib 和 ria 的结果(不同的候选集,LB: 0.601)进行了融合,最终 LB 达到了 0.602。

同比赛其他方案