第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