大数据转化为“交易”来自 arules 包

发布于 2024-12-02 04:03:54 字数 498 浏览 0 评论 0原文

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 的数据时,转换效果很好。

编辑:正如所指出的,其中一个变量是一个因素而不是性格。更改后,转换处理迅速且正确。

The arules package in R uses the class 'transactions'. So in order to use the function apriori() I need to convert my existing data. I've got a Matrix with 2 columns and roughly 1.6mm rows and tried to convert the data like this:

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

where original_data is my data matrix. Because of the amount of data I used the largest AWS Amazon machine with 64gb RAM. After a while I get

resulting vector exceeds vector length limit in 'AnswerType'

The Memory Usage of the machine was still 'only' at 60%. Is this a R-based limitation? Is there any way to work around this other than using sampling? When only using 1/4 of the data the transformation worked fine.

Edit: As pointed out, one of the variables was a factor instead of character. After changing the transformation was processed quickly and correct.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只有一腔孤勇 2024-12-09 04:03:54

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

不过,总的来说,我确实建议通过 bigmemory 使用内存映射文件,您也可以通过 bigsplit 或 mwhich 拆分和处理这些文件。如果卸载数据对您有用,那么您还可以使用更小的实例大小并节省费用。 :)

I suspect that your problem is arising because one of the functions uses integers (rather than, say, floats) to index values. In any case, the size isn't too big, so this is surprising. Maybe the data has some other issue, such as characters as factors?

In general, though, I'd really recommend using memory mapped files, via bigmemory, which you can also split and process via bigsplit or mwhich. If offloading the data works for you, then you can also use a much smaller instance size and save $$. :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文