arules
пакет не совместим с SparkR.Если вы хотите изучить правила ассоциации на Spark, вы должны использовать его собственные утилиты.Сначала используйте collect_set
для объединения записей:
library(magrittr)
df <- createDataFrame(data.frame(
CUSTOMER_KEY_h = c(
1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, 5, 5, 5, 5, 5, 6, 6),
PRODUCT_CODE = c(
"SAVE","CHEQ","LOAN","LOAN","CARD","SAVE","CHEQ","LOAN","CTSAV","SAVE",
"CHEQ","SAVE","CARD","CARD","LOAN","CTSAV","SAVE","CHEQ","SAVE","CARD","LOAN",
"CARD","CHEQ","CHEQ")
))
baskets <- df %>%
groupBy("CUSTOMER_KEY_h") %>%
agg(alias(collect_set(column("PRODUCT_CODE")), "items"))
Установите модель (пожалуйста, проверьте spark.fpGrowth
документы для получения полного списка доступных опций):
fpgrowth <- spark.fpGrowth(baskets)
и используйте его для извлечения правил ассоциации:
arules <- fpgrowth <- spark.fpGrowth(baskets)
arules %>% head()
antecedent consequent confidence lift
1 CARD, LOAN SAVE 1 1.5
2 CARD, LOAN CHEQ 1 1.5
3 LOAN, SAVE, CHEQ CARD 1 2.0
4 SAVE, CHEQ LOAN 1 1.5
5 SAVE, CHEQ CARD 1 2.0
6 CARD, SAVE LOAN 1 1.5
Если вы используете Spark <2.3.0, вы можете попробовать заменить: </p>
alias(collect_set(column("PRODUCT_CODE")), "items")
на
expr("collect_set(PRODUCT_CODE) AS items")