问题描述
Win10 Build 18363.836; R版本R-4.0.2; RStudio版本1.3.1093;处理器:Intel i7-7500U;物理内存:16GB;硬盘:500GB SSD
我正在研究Instacart Market Basket数据集。为了使用recommenderlab 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)
但收到错误消息:
错误无法分配给不存在的元素。 X 位置2、3、4、5、6等不存在。我只有1个元素。
我无法解决该问题,因此我尝试了另一种根据此article来构建矩阵的方法:
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
现在显示:
错误:无法分配大小为19.2 Gb的向量
所以我通过以下方式扩展了内存限制:
memory.limit(50000)
然后,我检查了系统,它显示了所有驱动器的总页面文件43377MB(作为虚拟内存),远远超过R要求生成矩阵。但是仍然收到相同的错误消息。
我还尝试将火车数据分成四部分,只是将其转换为25%,但仍然出现错误:
错误:无法分配大小为3.2 Gb的向量
这甚至远远少于现在笔记本电脑上的可用物理内存。而且由于我需要对数据进行协作过滤,因此最好将矩阵整体生成。谁能帮助我找出我在编码上犯的错误,或者教我另一种生成矩阵的方法?谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)