Рекомендовать несколько предметов с помощью SparkR ALS

Я следую примеру sparkR для ALS:

# Load training data
data <- list(list(0, 0, 4.0), list(0, 1, 2.0), list(1, 1, 3.0),
             list(1, 2, 4.0), list(2, 1, 1.0), list(2, 2, 5.0))
df <- createDataFrame(data, c("userId", "movieId", "rating"))
training <- df
test <- df

# Fit a recommendation model using ALS with spark.als
model <- spark.als(training, maxIter = 5, regParam = 0.01, userCol = "userId",
                   itemCol = "movieId", ratingCol = "rating")

# Model summary
summary(model)

# Prediction
predictions <- predict(model, test)
head(predictions)

Который отлично работает, но у меня следующая проблема:

Как указать количество рекомендуемых товаров?

В примере с питоном все ясно:

movieSubSetRecs = model.recommendForItemSubset(movies, 10)

Но для sparkR я этого не нахожу.

Также я не могу изменить на sparklyr, это должно быть сделано с помощью sparkR.


person Luis Ramon Ramirez Rodriguez    schedule 24.03.2020    source источник


Ответы (1)


Разработчики SparkR не предоставили доступ к этому методу. Они используют ALSWrapper, чтобы скрыть большинство методов. Итак, вот хак для вызова этого метода.

# get alsModel from wrapper and call recommendForAllUsers method from it
jdf<-sparkR.callJMethod( sparkR.callJMethod(model@jobj, "alsModel"), "recommendForAllUsers", as.integer(10))
# create R object from java object, is there better way?
df <- new("SparkDataFrame", jdf, FALSE)
person Artem Aliev    schedule 27.03.2020