2015-02-19 4 views
5

Ich bin sehr neu bei Apache Spark und Big Data im Allgemeinen. Ich verwende die ALS-Methode, um Rating-Vorhersagen basierend auf einer Matrix aus Benutzern, Elementen und Bewertungen zu erstellen. Der verwirrende Teil ist, dass, wenn ich das Skript zur Berechnung der Vorhersagen ausführe, die Ergebnisse jedes Mal anders sind, ohne dass sich die Eingabe oder die angeforderten Vorhersagen ändern. Ist dies das erwartete Verhalten oder sollten die Ergebnisse identisch sein? Im Folgenden finden Sie den Python-Code als Referenz.Inkonsistente Ergebnisse mit ALS in Apache Spark

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() 

Antwort

3

Dies ist das erwartete Verhalten. Die Faktormatrizen in ALS werden zufällig initialisiert (naja, tatsächlich ist einer von ihnen, und der andere wird basierend auf dieser Initialisierung im ersten Schritt gelöst).

So unterschiedliche Läufe geben leicht unterschiedliche Ergebnisse.

+0

OK, gut zu wissen, danke! –