【问题标题】:R - caret::train "random forest" parametersR - caret::train “随机森林”参数
【发布时间】:2018-03-11 20:29:18
【问题描述】:

我正在尝试使用 caret 包中的 train() fx 在 60 个变量和约 20,000 个观察值上构建分类模型。我正在使用随机森林方法并在我的训练集上返回 0.999 准确度,但是当我使用模型进行预测时,它将每个测试观察分类为同一类(即 20 个观察中的每一个都被归类为“1”) 5 种可能的结果)。我确定这是错误的(测试集是针对 Coursera 测验的,因此我没有发布确切的代码)但我不确定发生了什么。

我的问题是,当我调用拟合的最终模型 (fit$finalModel) 时,它说它总共生成了 500 棵树(默认和预期),但是每次拆分尝试的变量数量为 35。 我知道将分类,为每个拆分选择的标准观察数是总预测变量数的平方根(因此,应该是 sqrt(60) = 7.7,称之为 8)。会不会是这个问题??

我对我的模型或数据清理等是否有问题感到困惑。

set.seed(10000)
fitControl <- trainControl(method = "cv", number = 5)
fit <- train(y ~ ., data = training, method = "rf", trControl = fitControl)

适合$finalModel

Call:
 randomForest(x = x, y = y, mtry = param$mtry) 
           Type of random forest: classification
                 Number of trees: 500
No. of variables tried at each split: 41

    OOB estimate of  error rate: 0.01%

【问题讨论】:

  • 我还会查看您的树深度,这是过度拟合随机森林的最简单方法之一。我建议对树深度和变量数量进行超参数网格搜索。您还应该使用自己的验证集进行确认。你的班级也平衡吗?设置更高的节点大小也可能会有所帮助。
  • 包作者指出随机森林可以抵抗过度拟合。我仍然很难理解究竟是怎么回事。我相信这与训练模型时的引导有关。

标签: r random-forest prediction r-caret training-data


【解决方案1】:

如果学生未能删除 NA 值超过 50% 的自变量,则在 Coursera 上的约翰霍普金斯大学实用机器学习课程的最终项目中使用随机森林将为测验的所有 20 个测试用例生成相同的预测。

解决方案:从模型中删除具有高比例缺失值的变量。

【讨论】:

    猜你喜欢
    • 2015-02-26
    • 2018-03-30
    • 1970-01-01
    • 2015-05-10
    • 2016-12-02
    • 2019-02-04
    • 2019-05-04
    • 1970-01-01
    • 2021-10-12
    相关资源
    最近更新 更多