【问题标题】:How do I make a randomForest model size smaller?如何使 randomForest 模型尺寸更小?
【发布时间】:2012-11-21 09:04:16
【问题描述】:

我一直在 R 中使用 700 万行数据(41 个特征)训练 randomForest 模型。这是一个示例调用:

myModel

我确实认为只有 50 棵树和 30 个终端节点,“myModel”的内存占用会很小。但它在转储文件中是 65 兆。该对象似乎拥有来自训练过程的各种预测、实际和投票数据。

如果我只想要森林,仅此而已?我想要一个很小的转储文件,稍后我可以加载它以快速做出预测。我觉得森林本身不应该那么大......

任何人都知道如何将这个傻瓜简化为我可以预测未来的东西吗?

【问题讨论】:

  • ?randomForest 建议不要使用带有大量变量的公式界面...如果您不使用公式界面,结果会有所不同吗? ?randomForestValue 部分还告诉你如何关闭一些输出(重要性矩阵、整个森林、邻近矩阵等)。
  • 可能刚刚回答了我自己的问题...在模型中删除我不想要的字段似乎就足够了。如果我只是这样做: myModel$votes
  • 如果您将投票对象设为 NULL,您将无法做出预测。
  • 我认为您错过了 rF 的要点-它始终如您所说->预测,实际和投票数据-并且假设您训练 rF 的数据越大,模型越大;一种解决方案是对行进行聚类/在 cols (inptus) 上进行特征选择,以使矩阵更小;
  • @John,你为什么不发布一个小例子来说明你可以将这些组件归零并仍然进行预测?

标签: r artificial-intelligence data-mining random-forest


【解决方案1】:

你可以利用R中的tuneRF函数来知道树的数量并缩小尺寸。

tuneRF(data_train, data_train$Response, stepFactor = 1.2, improve = 0.01, plot = T, trace = T)

使用?tuneRF 了解更多关于内部变量的信息。

【讨论】:

    【解决方案2】:

    试图改掉以 cmets 发布答案的习惯...

    ?randomForest 建议不要使用带有大量变量的公式界面...如果不使用公式界面,结果会不会有所不同? ?randomForestValue 部分还告诉你如何关闭一些输出(重要性矩阵、整个森林、邻近矩阵等)。

    例如:

    myModel <- randomForest(mydata[,!grepl("RESPONSE",names(mydata))],
      mydata$RESPONSE, ntree=50, maxnodes=30, importance=FALSE,
      localImp=FALSE, keep.forest=FALSE, proximity=FALSE, keep.inbag=FALSE)
    

    【讨论】:

    • 没有任何看似可切换的项目帮助。如果我只是这样做: myModel$votes
    • 如果您想使用模型进行预测,keep.forest=FALSE 似乎不是一个好主意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多