我对Apache Spark和一般的大数据都很陌生。我使用ALS方法根据用户,项目和评级矩阵创建评级预测。令人困惑的部分是,当我运行脚本来计算预测时,结果每次都不同,没有输入或请求的预测发生变化。这是预期的行为,还是结果应该相同?下面是Python代码供参考。
from pyspark import SparkContext
from pyspark.mllib.recommendation import ALS
sc = SparkContext("local", "CF")
# get ratings from text
def parseRating(line):
fields = line.split(',')
return (int(fields[0]), int(fields[1]), float(fields[2]))
# define input and output files
ratingsFile = 's3n://weburito/data/weburito_ratings.dat'
unratedFile = 's3n://weburito/data/weburito_unrated.dat'
predictionsFile = '/root/weburito/data/weburito_predictions.dat'
# read training set
training = sc.textFile(ratingsFile).map(parseRating).cache()
# get unknown ratings set
predictions = sc.textFile(unratedFile).map(parseRating)
# define model
model = ALS.train(training, rank = 5, iterations = 20)
# generate predictions
predictions = model.predictAll(predictions.map(lambda x: (x[0], x[1]))).collect()
答案 0 :(得分:3)
这是预期的行为。 ALS中的因子矩阵是随机初始化的(实际上其中一个是,而另一个是基于第一步中的初始化来解决的)。
因此,不同的运行会产生略微不同的结果。