You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让PySpark ALS推荐系统返回测试集用户的推荐结果

PySpark ALS 冷启动用户推荐获取方案

Spark MLlib 中的ALS模型是基于隐式/显式反馈的矩阵分解实现,训练阶段只会为在训练集中出现过交互行为的用户、物品生成对应的隐向量。model.recommendForAllUsers(N) API的逻辑是遍历所有模型已存储的用户隐向量,和全量物品隐向量做内积计算后取TopN结果,自然只会返回训练集中存在的58971位用户的推荐结果,测试集中未在训练集出现的44819位用户属于「用户冷启动」范畴,默认不会生成推荐。

两个问题的明确回答

1. 如何获取测试集用户的推荐结果

分两种场景处理:

  • 场景1:测试集用户存在历史交互行为,只是拆分数据集时被划分到测试集
    这是最常见的情况,你提到的全量重训练方案就是最优解法,具体操作如下:
    1. 复用你之前通过交叉验证/留出法验证得到的最优ALS参数,包括rank、regParam、maxIter、implicitPrefs等
    2. 将训练集、测试集的所有交互数据合并为全量数据集,重新训练ALS模型
    3. 训练完成后调用model.recommendForAllUsers(3)即可获取全部103790位用户的推荐结果
  • 场景2:测试集用户为无任何历史交互的纯新用户
    ALS模型本身无法解决纯冷启动问题,你需要额外做兜底策略,比如给新用户推荐全站TopN热门物品,或者基于用户的年龄、性别、标签等属性做规则召回,兜底策略的结果不需要通过ALS模型生成。

2. 全量数据集重新训练是否合理

完全合理,这是推荐系统上线的标准流程:

  • 前期拆分数据集的核心目的是调参和评估模型的泛化能力,避免参数过拟合到训练集数据
  • 参数验证有效后,使用全量交互数据训练可以让模型学习到所有用户、物品的交互特征,最终的推荐效果会优于仅在部分数据集上训练的模型,不存在额外的风险。

内容的提问来源于stack exchange,提问作者Ad Astra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 19:27:04