我有一个带有10000个推文的数据集(df),带有2个观察值(正文和标签);根据文本正文,前4000条推文被标记(正面或负面),我想用它作为训练集来预测其余推文的标签,进行测试。 我想使用随机森林算法来预测(插入符号包)和交叉验证以确定准确性。 我用过这个脚本:
training <- subset(df[1:4000,])
testing <- subset(df[4001:10000,])
fitControl1 <- trainControl(method = "repeatedcv",
number = 10,
repeats = 10)
rfFit <- train(training$label~ training$body, data = training,
method = "rf",
trControl = fitControl,
verbose = FALSE)
但这是控制台的错误
Error: cannot allocate vector of size 7.5 Gb
我该如何解决? 提前致谢
答案 0 :(得分:3)
随机森林算法可以破坏你的记忆,特别是如果你没有很多。 R可以使用磁盘作为内存,所以这可能会对你有帮助。
如果你检查
memory.limit()
它会显示你的记忆大小。但是,您也可以使用此命令进行设置。
memory.limit(100000)
你去了,现在你有~100GB的内存。其中一堆就在你的硬盘上。
如果你没有太多硬盘空间......那么这对你没有帮助。
答案 1 :(得分:1)
随机森林将尝试在变量或特征之间的可能性树中分配您的观察结果。但是你做这件事有点奇怪。如果推文的主体有一个变量(推文的一个字符串),第二个是标签。没有实际的功能来执行分类,随机森林会尝试记忆(过度拟合)训练集。随机森林算法创建了几种可能性的树来创建一个复合模型,它可以产生巨大的可能性空间,特别是如果你没有从你的推文语料库中提取这些特征(这是我认为你正在做的事情),以及模型表现得非常糟糕。
您需要做的是标记推文的正文以创建用于提取语料库功能的模型。我建议使用sklearn documentation来提取文字功能。如果您不了解python就可以了,解释非常明确,您可以找到在R中执行操作的工具。
答案 2 :(得分:0)
由于您使用完整的推文作为一个变量(类字符),因此训练模型R将首先将字符向量转换为因子(因为统计模型可以围绕数字矩阵而不是字符构建)并且将每个推文转换为需要这么大空间的一个因素,请参考blog。 此外,这是NLP的问题。在构建模型之前,我建议您首先标记数据集并制作稀疏矩阵。