532. OTTO – Multi-Objective Recommender System | otto-recommender-system
首先,我要感谢 OTTO 组织了这场精彩的比赛。它非常有挑战性且数据干净 :)
其次,我要感谢所有在 kernels 或论坛中分享想法的人。这对我帮助很大。
我会在几天内把代码放到 GitHub 上,需要清理一下截止日期前的混乱代码。
我使用 max-recall@200 作为召回质量指标,但来自不同来源的候选者可能与用户历史的重合度不同,因此将候选者与历史记录进行外连接来计算 max-recall 似乎更公平。仅使用共访候选者即可达到 0.598 LB
我对点击和购物车/订单使用了不同的候选者组合。
clicks:
history_rank: 100
cooc_rank: 200
buy2buy_rank: 0
cooc_tw_rank: 0
mfc_rank: 100
transformer_rank: 50
carts/oders: # 平均约 190 个候选者, 0.685+ WR
history_rank: 100
cooc_rank: 100
cooc_tw_rank: 100
buy2buy_rank: 100
mfc_rank: 50
transformer_rank: 50
会话间隔、时间基数和排名权重函数等超参数是通过 optuna 优化的,因此该方法的 max-recall@200 大约为 67.6。
这很大程度上受到了最近 Yandex.Cup Recsys 赛道冠军方案 (by @chubasik) 的启发(我在那里用经典的二阶段方法拿了第2名)。
其思想是训练一个掩码语言模型 (MLM),然后预测用户会话中“伪造”的最后一个被掩盖的物品。此外,我将动作类型(点击、订单、购物车)作为 token_type_ids 输入(主要用于 NLP 任务中的上下文分离)。
我在训练会话上训练了 MLM,使用了