【问题标题】:R - Caret RFE gives "task 1 failed - Stopping" error when using pickSizeBestR - Caret RFE 在使用 pickSizeBest 时给出“任务 1 失败 - 停止”错误
【发布时间】:2017-08-13 05:13:52
【问题描述】:

我正在使用 Caret R 包来训练 SVM 模型。我的代码如下:

options(show.error.locations = TRUE)    
svmTrain <- function(svmType, subsetSizes, data, seeds, metric){
        svmFuncs$summary <- function(...) c(twoClassSummary(...), defaultSummary(...), prSummary(...))

    data_x <- data.frame(data[,2:ncol(data)])
    data_y <- unlist(data[,1])

    FSctrl <- rfeControl(method = "cv",
                     number = 10,
                     rerank = TRUE,
                     verbose = TRUE,
                     functions = svmFuncs,
                     saveDetails = TRUE,
                     seeds = seeds
    )

    TRctrl <- trainControl(method = "cv",
                       savePredictions = TRUE,
                       classProbs = TRUE,
                       verboseIter = TRUE,
                       sampling = "down",
                       number = 10,
                       search = "random",
                       repeats = 3,
                       returnResamp = "all",
                       allowParallel = TRUE
    )
    svmProf <- rfe( x = data_x,
                y = data_y,
                sizes = subsetSizes,
                metric = metric,
                rfeControl = FSctrl,
                method = svmType,
                preProc = c("center", "scale"),
                trControl = TRctrl,
                selectSize = pickSizeBest(data, metric = "AUC", maximize = TRUE),
                tuneLength = 5
    )
}

data1a = openTable(3, 'a')
data1b = openTable(3, 'b')
data = rbind(data1a, data1b)

last <- roundToTens(ncol(data)-1)
subsetSizes <- c( 3:9, seq(10, last, 10) )

svmTrain <- svmTrain("svmRadial", subsetSizes, data, seeds, "AUC")

当我注释掉 pickSizeBest 行时,算法运行良好。但是,当我不发表评论时,会出现以下错误:

Error in { (from svm.r#58) : task 1 failed - "Stopping"

第 58 行是 svmProf &lt;- rfe( x = data_x,..

如果我以错误的方式使用pickSizeBest,我尝试查找,但我找不到问题。有人可以帮我吗?

非常感谢!

编辑:我刚刚意识到pickSizeBest (data, ...) 不应该使用data。但是,我仍然不知道应该在那里添加什么。

【问题讨论】:

    标签: r svm r-caret rfe


    【解决方案1】:

    我无法运行您的示例,但我建议您只需传递函数pickSizeBest,即:

    [...]

    trControl = TRctrl,
    selectSize = pickSizeBest,
    tuneLength = 5
    

    [...]

    这里描述了功能: http://topepo.github.io/caret/recursive-feature-elimination.html#backwards-selection

    【讨论】:

    • 它是这样工作的,但是,当我查看拟合的模型时,它说“精度用于使用最大值选择最佳模型。”但我想改用 AUC。
    • 我原以为rfe()metric 参数会被传递下去。不过,我需要一个最低限度的工作示例来进一步帮助您。
    • 谢谢,我想,我有一个解决方法。如果我没有将所有 3 个函数都传递给 svmFuncs$summary,那么只有计算 AUC 的 prSummary 才会使用 AUC。我还预计,如果我使用 AUC,我是否计算其他指标并不重要,但是,由于某些原因,它不能那样工作。
    猜你喜欢
    • 2015-06-09
    • 2023-03-28
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多