5

Tôi đang cố gắng ra các thuật toán Lọc cộng tác thực hiện trong Spark và đang chạy vào các vấn đề sau:Spark MLLib Lọc cộng tác với người dùng mới

Giả sử tôi đào tạo một mô hình với các dữ liệu sau:

u1|p1|3 
u1|p2|3 
u2|p1|2 
u2|p2|3 

Bây giờ nếu tôi thử nghiệm nó với các dữ liệu sau:

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

tôi chưa bao giờ thấy bất kỳ xếp hạng cho người sử dụng 'u3', có lẽ vì người dùng mà không xuất hiện trong dữ liệu huấn luyện. Đây có phải là do vấn đề bắt đầu lạnh không? Tôi đã ấn tượng rằng vấn đề này sẽ chỉ áp dụng cho một sản phẩm mới. Trong trường hợp này, tôi đã dự kiến ​​một dự đoán cho 'u3' vì 'u1' và 'u2' trong dữ liệu huấn luyện có thông tin xếp hạng tương tự với 'u3'. Đây có phải là sự khác biệt giữa bộ lọc cộng tác dựa trên mô hình và dựa trên bộ nhớ không?

+0

bạn có thể đào tạo với người dùng và sản phẩm không phải là Số nguyên không? Khi tôi cố gắng đào tạo ở định dạng đó tôi nhận được thông báo lỗi: Đánh giá, (int (self.user), int (self.product), float (self.rating)) – jKraut

+0

Có vẻ như chúng tôi đã gặp phải các vấn đề tương tự: cách dự đoán người dùng mới mà không phải đào tạo lại toàn bộ mô hình? –

Trả lời

1

Tôi cho rằng bạn đang nói về thuật toán ALS?

'u3' không phải là cặp tập hợp đào tạo của bạn và do đó mô hình của bạn không biết gì về người dùng đó. Tất cả mọi người có thể là có thể trả lại giá trung bình cho tất cả người dùng.

Nhìn vào mã Scala Spark 1.3.0: MatrixFactorizationModel được trả về bởi ALS.train() cố gắng tra cứu người dùng và sản phẩm trong vectơ nổi bật khi bạn gọi predict(). Tôi nhận được NoSuchElementException khi tôi cố gắng dự đoán xếp hạng của một người dùng không xác định. Nó chỉ được thực hiện theo cách đó.

+0

Cảm ơn. Đó là những gì tôi nghĩ. Có các thuật toán lọc cộng tác nào khác mà MLLib hỗ trợ ngoài ALS không? –

+0

ALS có vẻ là thuật toán duy nhất của Spark 1.3.0: https://spark.apache.org/docs/latest/mllib-guide.html – stholzm

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