返回列表

28th Place Solution

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

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

第28名解决方案

作者:Anil Ozturk (Team Leader), Tarik Karakas, Gunes Evitan, Ayberk İmir, tetsuro731
比赛:OTTO Recommender System

首先,我们要感谢 OTTO 组织了这次比赛。对于我们大多数人来说,这是第一次 RecSys(推荐系统)经验,我们学到了很多东西。我将尝试谈谈我们在解决方案的每个阶段都尝试过的方法,以及最后那些没有奏效的方法。

此外,@tetsuro731 已经为他应用的堆叠方法开设了一个单独的帖子。

公开代码仓库链接

生成共现矩阵

Anil & Ayberk

  • 为以下链接中给出的三种众所周知的共现方案生成了 Top-100 AIDs。

Gunes

  • 7 个共现矩阵,与公开的类似但略有不同(点击/加购/下单加权,仅点击/加购,点击/下单,加购/下单和时间加权)。
  • 使用 FastText 模型 + Annoy,从 7 个共现矩阵和会话中最后一个 aid 的 50 个最近邻创建了一个计数器。

Tetsuro

  • 基于公开 Notebook,使用多种参数/权重生成了共现矩阵。

数据集划分

Anil & Ayberk

  • 使用了 Radek 提供的本地验证方案。为了避免模型训练和分数计算期间可能出现的泄漏,本地训练数据也按会话分成了两部分。具体实现可以在相应的 Notebook 中看到。

Gunes

  • Radek 的划分用作验证集。每种方法都应用于两个不同的数据集:训练+验证集 和 整个数据集。前者用于验证,后者用于提交。

Tetsuro

  • 没有使用 5 周的数据,而是使用了 4 周进行训练,因为用于预测的数据只有 4 周。

生成共现矩阵

Anil

  • 为所有会话中的所有 AIDs 生成了所有动作对(点击-加购,加购-下单等)的所有配对出现。这用于后续的特征提取。

候选生成

Anil & Ayberk

  • 使用了公开的候选生成脚本并为所有动作类型生成了 100 个候选。具有多种参数/权重的候选生成排名也用作排名模型的特征。

Gunes

  • 生成的共现矩阵与公开分享的略有不同:
    • 12 小时差 15x 点击加权
    • 12 小时差 15x 加购加权
    • 12 小时差 15x 下单加权
    • 12 小时差 仅点击和加购
    • 12 小时差 仅点击和下单
    • 14 天差 仅加购和下单
    • 24 小时差 时间加权
  • 训练并调整了 FastText(0.547 lb 分数)skipgram,效果优于 gensim word2vec,并且由于 C++ 绑定而更快。
  • 使用 FastText 模型和 Annoy(100 棵树),从 7 个共现矩阵和会话中最后一个 aid 的 50 个最近邻创建了一个计数器。
  • 使用上述方法选择了 80-100 个候选,并将会话唯一 aid 连接到每个会话的候选中。

Tetsuro