r语言关联规则为啥只产生了1条规则
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了r语言关联规则为啥只产生了1条规则相关的知识,希望对你有一定的参考价值。
参考技术A 写的很清楚啊,列的类型不对,不是逻辑值或是factor(因子、因素)。 你的那些列不会是数值型的吧,不适用apriori的。R:Apriori 算法没有找到任何关联规则
【中文标题】R:Apriori 算法没有找到任何关联规则【英文标题】:R: Apriori Algorithm does not find any association rules 【发布时间】:2020-08-13 08:57:32 【问题描述】:我生成了一个包含两个不同列的数据集:一个与客户关联的 ID 列和与他/她的活跃产品关联的另一列:
head(df_itemList)
ID PRD_LISTE
1 1 A,B,C
3 2 C,D
4 3 A,B
5 4 A,B,C,D,E
7 5 B,A,D
8 6 A,C,D
我只选择了拥有不止一种产品的客户。我总共有 589.454 行,有 16 种不同的产品。
接下来,我将 data.frame 写入 csv 文件,如下所示:
df_itemList$ID <- NULL
colnames(df_itemList) <- c("itemList")
write.csv(df_itemList, "Basket_List_13-08-2020.csv", row.names = TRUE)
然后,我将 csv 文件转换为篮子格式,以便应用 arules-package 中实现的先验算法。
library(arules)
txn <- read.transactions(file="Basket_List_13-08-2020.csv",
rm.duplicates= TRUE, format="basket",sep=",",cols=1)
txn@itemInfo$labels <- gsub("\"","",txn@itemInfo$labels)
summary-function 产生以下输出:
summary(txn)
transactions as itemMatrix in sparse format with
589455 rows (elements/itemsets/transactions) and
1737 columns (items) and a density of 0.0005757052
most frequent items:
A,C A,B C,F C,D
57894 32150 31367 29434
A,B,C (Other)
29035 409575
element (itemset/transaction) length distribution:
sizes
1
589455
Min. 1st Qu. Median Mean 3rd Qu. Max.
1 1 1 1 1 1
includes extended item information - examples:
labels
1 G,H,I,A,B,C,D,F,J
2 G,H,I,A,B,C,F
3 G,H,I,A,B,K,D
includes extended transaction information - examples:
transactionID
1
2 1
3 3
现在,我尝试运行先验算法:
basket_rules <- apriori(txn, parameter = list(sup = 1e-15,
conf = 1e-15, minlen = 2, target="rules"))
这是输出:
Apriori
Parameter specification:
confidence minval smax arem aval originalSupport maxtime support minlen maxlen target ext
0.01 0.1 1 none FALSE TRUE 5 1e-15 2 10 rules TRUE
Algorithmic control:
filter tree heap memopt load sort verbose
0.1 TRUE TRUE FALSE TRUE 2 TRUE
Absolute minimum support count: 0
set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[1737 item(s), 589455 transaction(s)] done [0.20s].
sorting and recoding items ... [1737 item(s)] done [0.00s].
creating transaction tree ... done [0.16s].
checking subsets of size 1 done [0.00s].
writing ... [0 rule(s)] done [0.00s].
creating S4 object ... done [0.04s].
即使支持度和信心低得离谱,也不会生成任何规则...
summary(basket_rules)
set of 0 rules
这真的是因为我的数据集吗?还是我的代码有错误?
【问题讨论】:
【参考方案1】:您的摘要显示数据未正确读入:
most frequent items:
A,C A,B C,F C,D
57894 32150 31367 29434
A,B,C (Other)
29035 409575
看起来“A,C”被读取为一个项目,但它应该是两个项目“A”和“C”。分隔符不起作用。我认为这可能是因为文件中的引号。确保Basket_List_13-08-2020.csv
看起来正确。此外,您需要在阅读交易时使用skip = 1
跳过第一行(标题)。
【讨论】:
【参考方案2】:@Michael 我现在非常肯定我正在阅读的 .csv 文件有问题。由于其他人遇到过类似的问题,我的猜测是这是错误的常见原因。您能否描述一下 .csv 文件在读入时的样子?
输入data <- read.csv("file.csv", header = TRUE, sep = ",")
时,我得到以下data.frame:
X Prd
1 A
2 A,B
3 B,A
4 B
5 C
如果客户 X 有多个产品 - 这些产品都写在一个列中,这是否正确?还是应该分栏写?
此外,在编写txn <- read.transactions(file="Versicherungen2_ItemList_Short.csv", rm.duplicates= TRUE, format="basket",sep=",",cols=1, skip=1)
和summary(txn)
时,我看到以下问题:
most frequent items:
A B C A,B B,A
1256 1235 456 235 125
(数字随机选择)
所以 read.transaction 函数区分 A,B 和 B,A...所以我猜 .csv 文件有问题。
【讨论】:
我想就是这样。 .csv 需要在不同的列中包含不同的项目。以上是关于r语言关联规则为啥只产生了1条规则的主要内容,如果未能解决你的问题,请参考以下文章
R语言Apriori算法关联规则挖掘:使用interestMeasure函数评估挖掘到的规则(包括覆盖率(coverage)和FishersExactTest)置信度最高的五条规则(top five
R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘)使用subset函数进一步筛选生成的规则去除左侧规则中的冗余信息获取更独特的有新意的关联规则
R语言使用apriori算法进行关联规则挖掘实战:关联规则概念频繁项集支持度(support)置信度(confidence)提升度(lift)apriori算法