返回列表

13th Place Solution

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

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

第13名解决方案

作者: EnricRovira (团队: newteam)
比赛: Otto Recommender System

首先,感谢主办方组织了一场精彩的比赛。我也要感谢所有与我们一同参赛的选手,以及我们团队中共同奋斗的四位成员。

特别感谢我的队友:@trasibulo、@virilo 和 @albert2017。

候选集选择

我们融合了多种模型来生成最终的候选集。每种模型提供不同数量的候选,然后我们基于排名的权重对它们进行集成,最终获得150个候选。我们测试了100个和150个候选,发现150个候选有轻微的提升。

分数:

我们最终 Top 150 的召回率如下:
clicks 召回率 = 0.7241
carts 召回率 = 0.5636
orders 召回率 = 0.7399
整体召回率 (Top 150) = 0.6854

基础模型

  • 按时间和类型加权的过往历史商品。
  • fnoa 候选(根据历史记录生成 50-150 个候选)。
  • 基于 Transformers4Rec 的模型,用于生成候选。(100个)
  • 短期共现。(100个)
  • 共访矩阵。(100个)
  • Word2Vec KNN。(100个)

排序

Fnoa

我开始时使用的是 Pandas,但最后将整个流程改为了 Polars。

我决定针对每种商品类型分别建立一个模型:clicks、carts 和 orders。

使用的特征:

商品特征 (item_features)
会话特征 (session_features)
用户商品特征 (user_items_features)
来自候选生成的特征(概率、相似度等)

模型:

我们尝试了 LightGBM (lgb) 和 CatBoost;虽然 lgb 在 LB(排行榜)上略好一点,但 CatBoost 更快,所以最后我决定只使用 CatBoost。

无效的尝试:

最后我尝试了很多方法来提高验证分数,但我尝试的所有方法似乎都没有帮助:

  • 将 carts 的预测结果作为 orders 的特征
  • 堆叠
  • 不同的模型
  • 使用所有数据进行训练
  • w2vec 相似度特征

Xiao

Xgboost 模型和 lgbm 模型。(详情即将补充)

Virilo

BST Transformer。

集成与堆叠

我们尝试了集成和堆叠两种方法。

堆叠: 我们没能在 LB 上成功应用(虽然我们在验证集上获得了不错的分数,但这并没有反映在 LB 上)。

集成: 看起来更稳定,但也没有给我们带来预期的提升。

最终,我们的提交结果是来自 3 个模型(xgb、lgb、catboost)的概率集成。

LB 结果 -> 单模型 (0.602 低);集成 (0.602 高)

同比赛其他方案