如何使用R的apriori算法生成RHS长度大于1的关联规则
R语言arules包挖掘RHS长度大于1的关联规则的解决方法
问题原因
arules包的apriori()函数默认生成关联规则时,为了降低计算复杂度,仅生成右侧(RHS)仅包含1个项的规则,因此会缺失{Milk} => {Bread, Butter}这类RHS长度大于1的符合阈值的规则。
解决方法
先生成所有满足支持度阈值的频繁项集,再通过规则诱导功能生成所有满足置信度阈值的规则,不会限制RHS的长度,修改后的代码如下:
library('arules') library('arulesViz') dataset = list( c("Bread", "Butter", "Milk"), c("Bread", "Butter"), c("Beer", "Cookies", "Diapers"), c("Milk", "Diapers", "Bread", "Butter"), c("Beer", "Diapers") ) Groceries = transactions(dataset) # 挖掘满足最小支持度的所有频繁项集 freq_itemsets <- apriori(Groceries, parameter = list( support = 0.4, target = "frequent itemsets", maxlen = 3 )) # 从频繁项集诱导生成满足最小置信度的规则,无RHS长度限制 rules <- ruleInduction(freq_itemsets, confidence = 0.7) # 查看所有排序后的规则 inspect(sort(rules, by = "support"))
运行代码后即可得到包含{Milk} => {Bread, Butter}在内的共8条符合阈值的关联规则。
内容的提问来源于stack exchange,提问作者Prashin Jeevaganth
相关产品推荐
相关产品推荐

