Посоветуйте несколько предметов с sparkR ALS - PullRequest
1 голос
/ 24 марта 2020

Я следую примеру 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)

, который работает нормально, но у меня возникает следующая проблема:

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

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

movieSubSetRecs = model.recommendForItemSubset(movies, 10)

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

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

1 Ответ

1 голос
/ 27 марта 2020

Разработчики 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)
...