使用eclat挖掘频繁项目集时“零频繁项目”

时间:2018-05-27 13:10:04

标签: r data-mining

所以我想找到基于什么项目一起购买的模式和“集群”,并根据eclat的wiki:

  

Eclat算法用于执行项集挖掘。项目集挖掘让我们在数据中找到频繁的模式,就像消费者购买牛奶一样,他也会购买面包。这种类型的模式称为关联规则,用于许多应用程序域。

但是,当我在R中使用eclat时,在通过tidLists检索结果时,我得到“零频繁项”和“NULL”。任何人都可以看到我做错了什么?

完整数据集:https://pastebin.com/8GbjnHK2

每一行都是一个事务,包含列中的不同项目。快速捕捉数据:

3060615;;;;;;;;;;;;;;;
3060612;3060616;;;;;;;;;;;;;;
3020703;;;;;;;;;;;;;;;
3002469;;;;;;;;;;;;;;;
3062800;;;;;;;;;;;;;;;
3061943;3061965;;;;;;;;;;;;;;

代码

trans = read.transactions("Transactions.csv", format = "basket", sep = ";")

f <- eclat(trans, parameter = list(supp = 0.1, maxlen = 17, tidLists = TRUE))

dim(tidLists(f))

as(tidLists(f), "list")

可能是由于数据结构?在那种情况下,我应该如何改变它?此外,我该怎么做才能获得建议的项目集?我无法从维基中找到答案。

编辑:我使用0.004作为supp,正如@ hpesoj626所建议的那样。但似乎功能是对订单/用户进行分组而不是对项目进行分组。我不知道如何导出数据,所以这里是tidLists的图片:

enter image description here

1 个答案:

答案 0 :(得分:1)

问题是你的支持率过高。尝试调整supp说,supp = .001,我们得到

dim(tidLists(f))

# [1]   928 15840

对于您的数据集,最高支持为0.08239,低于0.1。这就是supp = 0.1没有结果的原因。

inspect(head(sort(f, by = "support"), 10))

#      items             support count
# [1]  {3060620}         0.08239 1305 
# [2]  {3060619}         0.07260 1150 
# [3]  {3061124}         0.05688  901 
# [4]  {3060618}         0.05663  897 
# [5]  {4027039}         0.04975  788 
# [6]  {3060617}         0.04564  723 
# [7]  {3061697}         0.04306  682 
# [8]  {3060619,3060620} 0.03087  489 
# [9]  {3039715}         0.02727  432 
# [10] {3045117}         0.02708  429