使用Spark ML构建推荐系统

我正在按照文档示例构建一个推荐系统,我创建ALS构造函数一切正常

 val als = new ALS()  .setMaxIter(maxIterations)  .setRegParam(regressionParam)  .setUserCol("user_id")  .setItemCol("item_id")  .setRatingCol("rating")val model = als.fit(trainData)val predictions = model.transform(testData)println("predictions"+predictions.show(80))val evaluator = new RegressionEvaluator()  .setMetricName("rmse")  .setLabelCol("rating")  .setPredictionCol("prediction")val rmse = evaluator.evaluate(predictions)println(s"Root-mean-square error = $rmse")predictions

我训练了模型,设置了一切,但我的主要问题是,我可以用测试数据进行预测,这会为我传入的每个项目ID返回预测因子,但我实际上需要的是模型能够根据用户ID向我推荐项目,而不是通过添加预测列来预测某个项目ID的适合程度。org.apache.spark.ml.recommendation.ALS能够做到这一点吗?


回答:

目前,要为用户ID为1的用户推荐10个顶级项目,您必须做类似以下的事情:

val predictionsForUser1 = predictions    .where(col("user_id") === 1)    .orderBy(col("predictions").desc)    .limit(10)

在未来的Spark版本中,这将以更用户友好的方式实现

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注