Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark MLLib与新用户协同过滤_Apache Spark_Apache Spark Mllib_Collaborative Filtering - Fatal编程技术网

Apache spark Spark MLLib与新用户协同过滤

Apache spark Spark MLLib与新用户协同过滤,apache-spark,apache-spark-mllib,collaborative-filtering,Apache Spark,Apache Spark Mllib,Collaborative Filtering,我正在试用Spark中实现的协同过滤算法,遇到以下问题: 假设我使用以下数据训练模型: u1|p1|3 u1|p2|3 u2|p1|2 u2|p2|3 u1|p1|1 u3|p1|2 u3|p2|3 现在,如果我使用以下数据进行测试: u1|p1|3 u1|p2|3 u2|p1|2 u2|p2|3 u1|p1|1 u3|p1|2 u3|p2|3 我从未看到用户“u3”的任何评分,可能是因为该用户没有出现在培训数据中。这是因为冷启动问题吗?我的印象是,这个问题只适用于新产品。在这种情况下,

我正在试用Spark中实现的协同过滤算法,遇到以下问题:

假设我使用以下数据训练模型:

u1|p1|3
u1|p2|3
u2|p1|2
u2|p2|3
u1|p1|1
u3|p1|2
u3|p2|3
现在,如果我使用以下数据进行测试:

u1|p1|3
u1|p2|3
u2|p1|2
u2|p2|3
u1|p1|1
u3|p1|2
u3|p2|3

我从未看到用户“u3”的任何评分,可能是因为该用户没有出现在培训数据中。这是因为冷启动问题吗?我的印象是,这个问题只适用于新产品。在这种情况下,我会预测“u3”,因为训练数据中的“u1”和“u2”具有与“u3”相似的评级信息。这就是基于模型和基于内存的协同过滤之间的区别吗?

我想你说的是ALS算法吧

“u3”不是您的训练集的一对,因此您的模型对该用户一无所知。我们所能做的就是返回所有用户的平均评分


查看Spark 1.3.0 Scala代码:调用
predict()
时,由
ALS.train()返回的
MatrixFactoryModel
尝试在特征向量中查找用户和产品。当我试图预测未知用户的评级时,我得到了一个
NoTouchElementException
。它就是这样实现的。

谢谢。我就是这么想的。除了ALS,MLLib还支持其他协同过滤算法吗?ALS似乎是Spark 1.3.0中唯一的算法:您是否能够将用户和产品作为非整数进行培训?当我尝试以这种形式进行训练时,我得到一个错误:Rating,(int(self.user)、int(self.product)、float(self.Rating))看起来我们遇到了类似的问题:如何预测新用户而不必重新训练整个模型?