随机森林模型大小与训练集大小有关:如何避免?

我正在训练一个随机森林模型,目的是将其保存下来用于预测(它将被下载并在外部环境中使用)。我希望这个模型尽可能小。

我读到了一些选项,可以减少模型的内存大小。

尽管如此,我不明白为什么训练集的大小会与模型的大小相关?毕竟,一旦森林的系数确定了,为什么还需要保留原始数据集呢?

df <- irismodel <- randomForest::randomForest(Species ~ ., data = df,                  localImp = FALSE,                 importance = FALSE,                 keep.forest = TRUE,                 keep.inbag = FALSE,                 proximity=FALSE,                 ntree = 25)object.size(model)/1000#> 73.2 bytesdf <- df[sample(nrow(df), 50), ]model <- randomForest::randomForest(Species ~ ., data = df,                  localImp = FALSE,                 importance = FALSE,                 keep.forest = TRUE,                 keep.inbag = FALSE,                 proximity=FALSE,                 ntree = 25)object.size(model)/1000#> 43 bytes

reprex包(v0.2.1)于2019-05-21创建

我尝试了上述提到的技巧来减少大小,但与训练集大小的作用相比,它们的效果微乎其微。有没有办法移除这些信息?


回答:

我认为你可以在拟合模型后移除一些部分:

object.size(model)/1000# 70.4 bytesmodel$predicted <- NULL # 移除预测值model$y <- NULL # 移除y# .. 可能其他部分也不需要object.size(model)/1000# 48.3 bytes

我使用predict(model, df)检查它是否仍然能工作,结果是可以的。

使用names(model)来检查model内的元素。

看起来$votes很大,而且你不需要它,这里是我安全移除的更多项目:

model$predicted <- NULLmodel$y <- NULLmodel$err.rate <- NULLmodel$test <- NULLmodel$proximity <- NULLmodel$confusion <- NULLmodel$localImportance <- NULLmodel$importanceSD <- NULLmodel$inbag <- NULLmodel$votes <- NULLmodel$oob.times <- NULLobject.size(model)/1000# 32.3 bytes

示例:

df <- irismodel <- randomForest::randomForest(Species ~ ., data = df,                  localImp = FALSE,                 importance = FALSE,                 keep.forest = TRUE,                 keep.inbag = FALSE,                 proximity=FALSE,                 ntree = 25)

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注