r - 从 SQL Server 获取数据时使用 arules 的关联规则

标签 r data-mining arules market-basket-analysis

也许我只是愚蠢,但即便如此,我还是很感激一些有用的评论。

我确实有一个包含 ID、文章和文章属性(即分组)的数据集。使用 RODBC ,我从 SQL Server 数据库中获取表(使用 sqlFetch )。因此,我找不到使用 read.transactions 的方法。来自 arules 包。该格式构造为每行是文章+分组组合的ID。该表有 2200 万行,大约有 1100 万个唯一 ID。文章库大约有 500,000 篇文章。出于说明目的,我创建了一个这样的示例数据框

dat <- data.frame(id <- rep(paste0("id", 1:5),1, each=3),
                  article <- rep(paste0("A", sample(1051:1069,15,T))), 
                  groupA <- paste0(sample(LETTERS[1:3],15,TRUE), sample(1:3, 15,T))
)
colnames(dat) <- c("id", "article", "groupA")
dat$groupB[dat$groupA == "A1"|dat$groupA == "A2"|dat$groupA =="A3"] <- 1
dat$groupB[dat$groupA == "B1"|dat$groupA == "B2"|dat$groupA =="B3"] <- 2
dat$groupB[dat$groupA == "C1"|dat$groupA == "C2"|dat$groupA =="C3"] <- 3

导致类似于此的数据框

    id article groupA groupB
1  id1   A1053     B3      2
2  id1   A1051     B1      2
3  id1   A1067     B2      2
4  id2   A1054     B1      2
5  id2   A1069     B1      2
6  id2   A1068     A3      1
7  id3   A1053     C3      3
8  id3   A1066     B3      2
9  id3   A1057     A2      1
10 id4   A1056     B1      2
11 id4   A1065     C1      3
12 id4   A1069     A3      1
13 id5   A1066     A3      1
14 id5   A1062     A3      1
15 id5   A1059     B2      2

我想使用 arules 包进行购物篮分析。但是,如果我使用 txn <- as(dat, "transactions") 将 data.frame 传输到交易对象每一行都被标识为一个篮子。是否有可能将 arules 指向 id 变量作为标识符?基本上,我正在寻找 "single"来自 read.transactions 的选项as 中的函数-转型。 第二个相关问题是: 我可以将属性与 arules 包一起使用吗?我认为需要对 apriori 进行分析算法不仅在文章级别而且在分组级别。例如。如果我买A1053的文章,我发现一个规则推荐groupA B3。这可能吗?

最佳答案

简答:拆分。我查看了 read.transactions 代码(它在 R 中,对于熟悉 R 的人来说很容易访问)。它做了一些很好的检查,但基本的代码行似乎是:

entries <- split(entries[[cols[2]]], entries[[cols[1]]])
as(entries, "transactions")

在你的例子中:

dat <- split(dat$article, dat$id)
ts <- as(dat, "transactions")

如果您愿意,可以在 read.transactions 函数上做一个变体,从 RODBC 连接而不是平面文件读取。

关于r - 从 SQL Server 获取数据时使用 arules 的关联规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28587281/

相关文章:

r - Hadoop中R的市场篮分析

r - 合并多个data.table

r - ggplot2图形缓存与knitr

用于食谱程序化分类的算法

machine-learning - "splitting attribute"在决策树中可以出现多次吗?

c++ - 检查一个正则表达式是否覆盖另一个正则表达式

R 先验算法-如何将 ItemFrequency() 的顶部项目分配给向量?

r - 使用 arulesSequences 在 R 中进行 cSPADE 数据挖掘 - 转换为 "transactions"格式时出错

解决 R 函数中的 nrow/length(list) 错误

R 的目标是多个文件输出