返回列表

16th Place Solution (Association x UserCF x NN-based x Matrix Factorization x Covisit x LightGBM)

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

开始: 2022-11-01 结束: 2023-01-31 商品推荐 数据算法赛
第16名方案 (Association x UserCF x NN-based x Matrix Factorization x Covisit x LightGBM)
作者:A.Sato (Grandmaster) | 比赛排名:第14名

第16名方案 (Association x UserCF x NN-based x Matrix Factorization x Covisit x LightGBM)

感谢 Otto 和 Kaggle 团队举办了如此具有挑战性的比赛。我尝试了几乎所有我能想到的方法,看着分数一步步提升非常激动人心,尤其是在比赛结束时。

令人遗憾的是,据说有 Grandmaster/Master 涉嫌作弊,许多参与者因此受到伤害/打击,这种不可原谅的行为损害了 Kaggle 的诚信和声誉。

我想分享我的解决方案,目前距离金牌区仅差 0.01% lol。
希望这能有所帮助,我很乐意回答问题。

候选集选择 (Candidate Selection)

  • 重访
  • Top20 共现矩阵 (两种不同的矩阵)
  • 来自共现矩阵的 Top3 3-hop 图
    • 假设会话的最后一个 aid 是 X,X 的 top 3 共现 aid 是 A,B,C。我称它们为来自 X 的 '1-hop'。A 的 top3 共现 aid 是 D,E,F。我称它们为 '2-hop from X'。我做了三个 hop,所以你有 3^3 个候选对应 1 个 aid)
  • 来自 3D-共现矩阵的 Top10
  • 来自简单 itemcf/usercf 的 Top20 (similaripy)
  • 来自 gru4rec 的 Top20 (recbole)

每个会话的平均候选数几乎为 100,验证集的召回率为 0.6396

特征工程

  • aid 和 session 之间的简单交互(例如:从会话最后一次操作到候选 aid 的时间间隔)
  • 仅基于会话(例如:该会话的点击次数)
  • 仅基于 aid(例如:该 aid 的点击次数)
  • 来自四个不同共现矩阵的共现矩阵得分
  • 关联规则得分 (jaccard/dice/lift---)
  • 简单 user/item cf 得分 (使用 'similaripy')
  • item2vec 余弦相似度 (使用 'gensim')
  • 矩阵分解类型相似度 (使用 'implicit')
    • BPR
    • ALS
    • LightFM
    • SVD
  • 基于神经网络的得分 (使用 'recbole')
    • lightGCN
    • GRU4Rec
    • BERT4Rec
    • RecVAE
    • SasREC
    • SRGNN

特征总数为 291。
根据我的观察,没有所谓的“银弹”特征。所有类型的特征都对模型略有贡献。
NN 特征相对昂贵,因为获取它们需要时间和计算资源,但仍然只能获得边际提升。
关联规则和简单的 userCF 易于处理,因为它们的计算量并不大。

单模型最佳 CV 为 .5808,Public .60206 / Private .6017

建模

LightGBM Ranker 配合自定义指标 (Recall at 20)
LightGBM binary / Catboost binary / Catboost Yetirank 都比 LightGBM Ranker 差。

最终提交是来自五个稍微不同的候选集/模型规格的集成。集成对我有一点帮助 (+0.03%)。

为了获得单人金牌我本该做的事

  • Catboost Pairwise (有报告称它效果很好)
  • 更多候选 (可能每个候选 150-200 个)
同比赛其他方案