大数据从 arules 包转换为“事务”

Posted

技术标签:

【中文标题】大数据从 arules 包转换为“事务”【英文标题】:Big Data convert to "transactions" from arules package 【发布时间】:2011-08-30 16:19:32 【问题描述】:

R 中的 arules 包使用“事务”类。所以为了使用函数apriori(),我需要转换我现有的数据。我有一个 2 列和大约 1.6 毫米行的矩阵,并尝试像这样转换数据:

transaction_data <- as(split(original_data[,"id"], original_data[,"type"]), "transactions")

其中 original_data 是我的数据矩阵。由于数据量大,我使用了最大的 AWS Amazon 机器,64gb RAM。过了一会儿,我得到了

结果向量超出“AnswerType”中的向量长度限制

机器的内存使用率仍然“仅”为 60%。这是基于 R 的限制吗?除了使用采样之外,还有什么方法可以解决这个问题?当仅使用 1/4 的数据时,转换效果很好。

编辑:正如所指出的,其中一个变量是一个因素而不是字符。更改后的转换得到了快速和正确的处理。

【问题讨论】:

我多玩了一点,当我稍微减少数据量时,我得到错误Error in unique.default(...) length 547601298 is too large for hashing 显然是R的系统代码中的一些函数MKsetup(),在文件 unique.c 防止向量超过一定长度。 你能把str(original_data)的结果贴出来吗?最好知道数据中是否出现了一些问题。 你能生成一个假但有代表性的例子吗? 【参考方案1】:

我怀疑您的问题之所以出现,是因为其中一个函数使用整数(而不是浮点数)来索引值。无论如何,尺寸都不会太大,所以这很令人惊讶。也许数据还有其他问题,比如字符作为因素?

不过,总的来说,我真的建议通过bigmemory 使用内存映射文件,您也可以通过bigsplitmwhich 对其进行拆分和处理。如果卸载数据对您有用,那么您还可以使用更小的实例大小并节省 $$。 :)

【讨论】:

你在正确的地方,其中一个变量是一个因素而不是一个字符。我将研究bigmemory 包,感谢您的建议

以上是关于大数据从 arules 包转换为“事务”的主要内容,如果未能解决你的问题,请参考以下文章

不能使用R语言的arules的数据集怎么办

R arules / apriori - 如何实际实现

将字符向量转换为规则的事务

R_Studio(关联)对dvdtrans.csv数据进行关联规则分析

从数据库加载大数据并转换为 JSON 时如何提高性能

如何处理SQL Server事务复制中的大事务操作