接下来发生的事情是,我有一个长度为860k,宽约520列的数据集(绝大多数都是布尔值,表示某个单词出现或未出现在给定的正文中的文本)。我想从这个数据集构建一个模型,以便在使用caret
包时存在各种单词的情况下预测评级。然而,即使是36gb的ram也不足以同时运行它(显然我只会训练大约600k但仍然)。我设法让模型完成大约25k的记录。因此,这让我相信我最好的选择是一次训练25k记录,然后组合模型。但我不知道该怎么做或者这是最好的方法。有没有人有建议?我已经厌倦了我的电脑慢慢爬了6个小时,然后在内存耗尽时犯了错误。
答案 0 :(得分:0)
首先,Caret甚至支持合并培训?你在建造什么类型的模型?我通常使用的那些无法合并部分训练集。我知道你已经问过这个问题,但如果没有对这个问题的肯定回答,整个解决方案的分支就会消失。
这些词之间是否存在预期的交叉相关性,这样某一对的存在会产生与单独使用每个单词所得到的显着不同的评级?如果单词看起来是独立的,那么我的第一个想法是分割列而不是行,并尝试依赖训练批量单词。
你的描述意味着一个整数(短)评级矩阵,一个好的400位,然后可能还有100个其他项 - 整数?从这里,我得到一个小于500字节的记录大小。其中860k占用不到500Mb。如果我们不打包布尔,它仍然低于1Gb。更好的映射 - 解压每条记录可能会带来轻微的性能损失 - 解决问题?稀疏矩阵怎么样?几乎所有这些布尔都是假的,是吗?
每个单词你真的需要超过1k的训练线吗?你可以把它砍成易于处理的尺寸,特别是如果重新格式化你的数据表示可以节省你所需的空间,但不是全部吗?