2015-02-19 15 views
5

Tôi rất mới với Apache Spark và dữ liệu lớn nói chung. Tôi đang sử dụng phương pháp ALS để tạo dự đoán xếp hạng dựa trên ma trận người dùng, mục và xếp hạng. Phần khó hiểu là khi tôi chạy kịch bản để tính toán các dự đoán, kết quả là khác nhau mỗi lần, mà không có đầu vào hoặc các dự đoán được yêu cầu thay đổi. Đây có phải là hành vi mong đợi hay kết quả giống hệt nhau không? Dưới đây là mã Python để tham khảo.Kết quả không nhất quán khi sử dụng ALS trong 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() 

Trả lời

3

Đây là hành vi mong đợi. Các ma trận yếu tố trong ALS được khởi tạo ngẫu nhiên (thực tế là một trong số chúng là, và phần còn lại được giải quyết dựa trên khởi tạo đó trong bước đầu tiên).

Vì vậy, các lần chạy khác nhau sẽ cho kết quả hơi khác nhau.

+0

OK, rất vui được biết, cảm ơn bạn! –

Các vấn đề liên quan