写在开头
本人为推荐小白,虽然很早之前在某音做过一段时间的算法实习,但是对整体的推荐流程也只有简答的概念印象,kaggle最近推出了一个推荐系统的竞赛:OTTO – Multi-Objective Recommender System,https://www.kaggle.com/competitions/otto-recommender-system ,正好借此机会熟悉推荐系统。
任务目标与数据集介绍
otto数据集是一个用于多目标推荐研究的大规模数据集,来源于otto网站和程序中的匿名行为日志,主要包含用户(session)与物品(aid)之间的交互行为,我们需要根据用户历史行为数据,预测用户之后会对哪些物品进行click(点击)、cart(添加购物车)、order(下订单)三种类型的操作。
otto数据集总共包含1200万的匿名用户(session),180万个不同物品(aid),以及2.2亿规模的事件(click、cart、order),原始数据由jsonl格式数据存储。
任务目标:对每个位于测试集中的待预测用户,对于每个推荐目标(click、cart、order),我们需要分别返回20个物品作为提交。
评价指标:多目标召回率加权平均,click、cart、order权重占比分别为0.1、0.3、0.6。
解决方案
总体来讲,方案整个流程可以分为以下几部分:
- 数据集划分(划分训练和验证集,构建稳定可靠的本地CV)
- 候选物品召回(为每个用户召回超过20个,例如50/100/200个候选物品)
- 用户特征和物品特征生成(从事件中建构多个维度的特征用于模型训练)
- ranker模型训练(对召回的物品结合生成的特征进行二次训练,得到更优的排序结果)
- 推理和模型集成(获得更优的推荐结果)

文章介绍了Kaggle的OTTO推荐系统竞赛,包括数据集特点、任务目标、解决方案的详细步骤,如数据集划分、候选物品召回方法(word2vec和co-visitation)、特征生成、ranker模型训练(LGBM和XGBoost)及模型集成策略。同时,强调了内存管理、数据类型优化和使用如polars库提高效率的重要性。
449

被折叠的 条评论
为什么被折叠?



