R 从 Sparklyr 中的 ALS 实现中提取潜在因素
R extract latent factors from ALS implementation in Sparklyr
使用 sparklyr 文档中的 ALS 示例:
library(sparklyr)
sc <- spark_connect(master = "local")
movies <- data.frame(
user = c(1, 2, 0, 1, 2, 0),
item = c(1, 1, 1, 2, 2, 0),
rating = c(3, 1, 2, 4, 5, 4)
)
movies_tbl <- sdf_copy_to(sc, movies)
model <- ml_als(movies_tbl, rating ~ user + item)
然后如何从模型中提取最终的潜在用户和项目因素?
最后 tidy(model)
。
这是一个包含 3 个用户和 4 个项目的更新示例:
library(sparklyr)
sc <- spark_connect(master = "local")
# 3 users, 4 films:
movies <- data.frame(
user = c(1, 1, 1, 1, 2, 2, 3, 3, 3, 3),
item = c(1, 2, 3, 4, 1, 2, 1, 2, 3, 4),
rating = c(3, 1, 2, 5, 1, 5, 1, 1, 5, 4)
)
movies_tbl <- sdf_copy_to(sc, movies, overwrite = TRUE)
movies_tbl <- sdf_copy_to(sc, movies)
model <- ml_als(movies_tbl, rating ~ user + item)
您可以使用以下方法提取用户和项目潜在因素:
model_tidy <- tidy(model) %>% collect
# A tibble: 4 x 3
id user_factors item_factors
<int> <list> <list>
1 1 <list [10]> <list [10]>
2 3 <list [10]> <list [10]>
3 2 <list [10]> <list [10]>
4 4 <lgl [1]> <list [10]>
因此对于用户或项目列表中都不存在的 ID,列表元素是 <lgl[1}>
。
使用 sparklyr 文档中的 ALS 示例:
library(sparklyr)
sc <- spark_connect(master = "local")
movies <- data.frame(
user = c(1, 2, 0, 1, 2, 0),
item = c(1, 1, 1, 2, 2, 0),
rating = c(3, 1, 2, 4, 5, 4)
)
movies_tbl <- sdf_copy_to(sc, movies)
model <- ml_als(movies_tbl, rating ~ user + item)
然后如何从模型中提取最终的潜在用户和项目因素?
最后 tidy(model)
。
这是一个包含 3 个用户和 4 个项目的更新示例:
library(sparklyr)
sc <- spark_connect(master = "local")
# 3 users, 4 films:
movies <- data.frame(
user = c(1, 1, 1, 1, 2, 2, 3, 3, 3, 3),
item = c(1, 2, 3, 4, 1, 2, 1, 2, 3, 4),
rating = c(3, 1, 2, 5, 1, 5, 1, 1, 5, 4)
)
movies_tbl <- sdf_copy_to(sc, movies, overwrite = TRUE)
movies_tbl <- sdf_copy_to(sc, movies)
model <- ml_als(movies_tbl, rating ~ user + item)
您可以使用以下方法提取用户和项目潜在因素:
model_tidy <- tidy(model) %>% collect
# A tibble: 4 x 3
id user_factors item_factors
<int> <list> <list>
1 1 <list [10]> <list [10]>
2 3 <list [10]> <list [10]>
3 2 <list [10]> <list [10]>
4 4 <lgl [1]> <list [10]>
因此对于用户或项目列表中都不存在的 ID,列表元素是 <lgl[1}>
。