Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于RMSE的插入符号二值分类_R_R Caret - Fatal编程技术网

基于RMSE的插入符号二值分类

基于RMSE的插入符号二值分类,r,r-caret,R,R Caret,有没有一种方法可以让caret将RMSE用于二进制分类问题 如果您试图使用带有分类问题的metric=“RMSE”,您将收到以下消息: Error in train.default(x, y, weights = w, ...) : Metric RMSE not applicable for classification models 这是有道理的。但是,有没有一种方法可以定义自定义度量?例如,如果您的结果为0或1,则可以将错误定义为结果-p,其中p是模型预测的概率 编辑======

有没有一种方法可以让caret将RMSE用于二进制分类问题

如果您试图使用带有分类问题的
metric=“RMSE”
,您将收到以下消息:

Error in train.default(x, y, weights = w, ...) :
    Metric RMSE not applicable for classification models
这是有道理的。但是,有没有一种方法可以定义自定义度量?例如,如果您的结果为
0
1
,则可以将错误定义为
结果-p
,其中
p
是模型预测的概率

编辑====================


为了给这一点提供一些背景和使用这一衡量标准背后的一些理由,请参见Michael J.Procopio中的2.7.1,或我不知道您为什么要这样做,但您可以创建自己的摘要函数:

library(caret)

set.seed(1)
dat <- twoClassSim(100)

foo <- function(data, lev = NULL, model = NULL) {
  probs <- data[, lev[1]]
  c(rmse = RMSE(pred = probs,
                obs = ifelse(data$obs == lev[1], 1, 0)))
}

ctrl <- trainControl(classProbs = TRUE,
                     summaryFunction = foo)
set.seed(2)
mod <- train(Class ~ ., data = dat,
             method = "lda",
             metric = "rmse",
             minimize = TRUE,
             trControl = ctrl)
库(插入符号)
种子(1)

datY应该是一个因素。在培训模型之前,请在其上使用as.factor()。

很抱歉再次与您讨论此问题。我无法通过如何使插入符号选择具有最小值的模型来计算。上面的示例选择了RMSE最大的模型(将“lda”替换为“rf”进行复制)。我上面的编辑似乎不被接受。要重现问题,请使用
method=“rf”
运行上述代码。我建议的解决方案是将
minimize=TRUE
更改为
maximize=FALSE
。谢谢!这解决了我的“Metric RMSE not Applieve for classification models”(度量RMSE不适用于分类模型)错误,在y上执行二项式训练(),其中y是逻辑(布尔值)。根据您的提示,我使用as.factor()将y从布尔值转换为因子,问题得到了解决。谈论一个神秘的错误消息!在我的例子中,Y已经是一个因子,我仍然得到这个错误。所以这可能解决了一个特定的用例,但我认为这不是一个普遍接受的解决方案。