Win10 内部版本 18363.836;R 版本 R-4.0.2;RStudio 版本 1.3.1093;CPU:英特尔 i7-7500U;物理内存:16GB;硬盘:500GB SSD
我正在研究Instacart Market Basket数据集。为了使用推荐实验室 R 包构建推荐模型,我需要创建一个包含 customer_id 和 product_name 的矩阵以进行协作过滤。
加载数据后,我合并和过滤数据以准备训练集。
data_train = orders %>%
filter(eval_set=='train') %>%
left_join(order_products) %>%
left_join(products) %>%
mutate(actual=1) %>%
select(user_id, order_id, product_id, product_name, actual)
我试图建立这样的矩阵。
data_train %>%
select(user_id, product_name) %>%
mutate(n=1) %>%
arrange(product_name) %>%
pivot_wider(names_from = "product_name", values_from = "n", values_fill=0)
但是得到了错误信息:</p>
错误无法分配给不存在的元素。x 位置 2、3、4、5、6 等不存在。i 只有 1 个元素。
我无法解决问题,所以我根据这篇文章尝试了另一种构建矩阵的方法:</p>
ratings_matrix <- train01 %>%
select(user_id, product_name) %>%
mutate(value = 1) %>%
spread(product_name, value, fill = 0) %>%
select(-user_id) %>%
as.matrix() %>%
as("binaryRatingMatrix")
ratings_matrix
现在显示:</p>
错误:无法分配大小为 19.2 Gb 的向量
所以我通过以下方式扩展了内存限制:
memory.limit(50000)
然后我检查了我的系统,它显示所有驱动器的总页面文件 43377MB(作为虚拟内存),这远远超过 R 要求生成矩阵。但仍然收到相同的错误消息。
我还尝试将火车数据分成四份,只转换了其中的 25%,但仍然出现错误:
错误:无法分配大小为 3.2 Gb 的向量
这甚至远远低于我笔记本电脑上的可用物理内存。而且由于我需要对数据进行协同过滤,因此最好将矩阵生成为一个整体。谁能帮我找出我在编码上犯了什么样的错误,或者教我另一种生成矩阵的方法?谢谢。