首页 文章

随机林中的tuneGrid参数问题

提问于
浏览
7

我一直在处理一些非常不 balancer 的数据,我想使用分层抽样来创建更 balancer 的随机森林

现在,我正在使用插入包,主要用于调整随机森林 . 所以我尝试设置一个tuneGrid,将mtry和sampsize参数传递给插入符号列表方法,如下所示 .

mtryGrid <- data.frame(.mtry = 100),.sampsize=80)
rfTune<- train(x = trainX,
               y = trainY,
               method = "rf",
               trControl = ctrl,
               metric = "Kappa",
               ntree = 1000,
               tuneGrid = mtryGrid,
               importance = TRUE)

当我运行此示例时,我收到以下错误

The tuning parameter grid should have columns mtry

我遇到像this这样的讨论,建议传入这些参数应该是可能的 .

另一方面,这个page表明可以传入的唯一参数是mtry

我甚至可以通过插入符号将sampsize传递到随机森林中吗?

2 回答

  • 0

    您的 mtryGrid 似乎存在支架问题 . 或者,您也可以使用 expand.grid 来提供您想要尝试的 mtry 的不同值 . 默认情况下,您可以为随机林调整的唯一参数是 mtry . 但是,您仍然可以将其他参数传递给 train . 但那些将具有修正值,因此不会被 train 调整 . 但你仍然可以要求在 train 中使用分层样本 . 下面是我将如何做,假设 trainY 是一个布尔变量,您希望根据该变量对样本进行分层,并且您希望每个类别的样本大小为80:

    mtryGrid <- expand.grid(mtry = 100) # you can put different values for mtry
    rfTune<- train(x = trainX,
                   y = trainY,
                   method = "rf",
                   trControl = ctrl,
                   metric = "Kappa",
                   ntree = 1000,
                   tuneGrid = mtryGrid,
                   strata = factor(trainY),
                   sampsize = c(80, 80), 
                   importance = TRUE)
    
  • 13

    我怀疑有人可以直接将 sampsizestrata 传递给 train . 但是从here我相信解决方案是使用 trControl() . 那是,

    mtryGrid <- data.frame(.mtry = 100),.sampsize=80)
    rfTune<- train(x = trainX,
                   y = trainY,
                   method = "rf",
                   trControl = trainControl(sampling=X),
                   metric = "Kappa",
                   ntree = 1000,
                   tuneGrid = mtryGrid,
                   importance = TRUE)
    

    其中 X 可以是 c("up","down","smote","rose") 之一 .

相关问题