Próba zbudowania systemu rekomendacji za pomocą ALS Spark MLLib.Zalecenia Apache Spark ALS podejście
Obecnie staramy się na bieżąco budować rekomendacje dla wszystkich użytkowników. Używamy prostych niejawnych komentarzy i ALS.
Problem polega na tym, że mamy 20 milionów użytkowników i 30 milionów produktów, i aby wywołać metodę main predict(), potrzebujemy połączenia kartezjańskiego dla użytkowników i produktów, który jest zbyt duży i może zająć kilka dni. tylko dołączenie. Czy istnieje sposób na uniknięcie łączenia kartezjańskiego, aby przyspieszyć proces?
Obecnie mamy 8 węzłów z 64 GB pamięci RAM, myślę, że powinno wystarczyć dla danych.
val users: RDD[Int] = ??? // RDD with 20M userIds
val products: RDD[Int] = ??? // RDD with 30M productIds
val ratings : RDD[Rating] = ??? // RDD with all user->product feedbacks
val model = new ALS().setRank(10).setIterations(10)
.setLambda(0.0001).setImplicitPrefs(true)
.setAlpha(40).run(ratings)
val usersProducts = users.cartesian(products)
val recommendations = model.predict(usersProducts)
Pokaż nam kod, abyśmy mogli pomóc –
Dzięki, zaktualizowałem swój pierwszy wpis. –