532. OTTO – Multi-Objective Recommender System | 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
我开始时使用的是 Pandas,但最后将整个流程改为了 Polars。
我决定针对每种商品类型分别建立一个模型:clicks、carts 和 orders。
商品特征 (item_features)
会话特征 (session_features)
用户商品特征 (user_items_features)
来自候选生成的特征(概率、相似度等)
我们尝试了 LightGBM (lgb) 和 CatBoost;虽然 lgb 在 LB(排行榜)上略好一点,但 CatBoost 更快,所以最后我决定只使用 CatBoost。
最后我尝试了很多方法来提高验证分数,但我尝试的所有方法似乎都没有帮助:
Xgboost 模型和 lgbm 模型。(详情即将补充)
BST Transformer。
我们尝试了集成和堆叠两种方法。
堆叠: 我们没能在 LB 上成功应用(虽然我们在验证集上获得了不错的分数,但这并没有反映在 LB 上)。
集成: 看起来更稳定,但也没有给我们带来预期的提升。
最终,我们的提交结果是来自 3 个模型(xgb、lgb、catboost)的概率集成。
LB 结果 -> 单模型 (0.602 低);集成 (0.602 高)