Apache spark 经过培训的Spark ALS模型预测的最高评级推荐项目不是协作项目

Apache spark 经过培训的Spark ALS模型预测的最高评级推荐项目不是协作项目,apache-spark,pyspark,data-science,apache-spark-mllib,recommender-systems,Apache Spark,Pyspark,Data Science,Apache Spark Mllib,Recommender Systems,我使用了一个显式评分数据集,该数据集对52K个用户和100k个项目的评分约为389K 基本统计数据: 每个项目的平均评分数:3.89 每个用户的平均评分数:7.45 评分最低的用户:1 评分最低的项目:2 使用的ALS模型具有以下设置: als = ALS(userCol="userId", itemCol="vidId", ratingCol="rate", rank=10, maxIter=15, regParam=0.15, coldStartStrategy="dro

我使用了一个显式评分数据集,该数据集对52K个用户和100k个项目的评分约为389K

基本统计数据: 每个项目的平均评分数:3.89 每个用户的平均评分数:7.45 评分最低的用户:1 评分最低的项目:2

使用的ALS模型具有以下设置:

als = ALS(userCol="userId", itemCol="vidId", ratingCol="rate", rank=10, maxIter=15,
          regParam=0.15, coldStartStrategy="drop", nonnegative=True, implicitPrefs=False)
在验证中,我将80%用于培训,20%用于测试。 验证集上的RMSE为:0.32(非常低)

在生产中,我使用整个数据集来训练ALS模型(保持与验证中相同的配置)

为了获得每个用户的前100个用户项目建议,我使用了以下说明:

users_recommendation = model.recommendForAllUsers(100)
但是,大多数情况下,最受推荐的项目并不是来自任何协作用户评分的项目

据我所知,顶级用户项目推荐项目应该来自任何协作用户评分的项目


在没有任何合作的情况下推荐商品毫无意义。

嗨,我不明白你的问题。我能猜到你需要帮助才能得到更精确的模型吗?如果你的模型精度较低。我建议您首先进行特征工程过程,然后生成
ALS模型
。请记住,als模型只不过是一个因式分解矩阵,所以可能有太多的空值。另外,我建议您使用
mse
,这对于像这样的ml模型更准确。你也应该试着理解分数的趋势。嗨@Kenry Sanchez,我用的是RMSE,它是0.32(到目前为止还不错)。我做了一些我在一开始提到的基本特性工程。我的问题是关于预测最高评分项目的用户和测试用户之间的协作。我没有看到预测的最高评分项目的用户和测试用户之间有任何直接合作。我还没有检查他们之间的间接合作。嗨@KenrySanchez,我找到了原因。这是我们数据的稀疏性问题。文献上说最大稀疏度约为99.5%。所用数据的稀疏性为99.9%。在减少稀疏度后,它现在开始工作。非常感谢您与我分享这一见解。