使用RMSE的插入二进制分类

时间:2013-12-04 13:27:58

标签: r r-caret

有没有办法让插入符号使用RMSE和二进制分类问题?

如果您尝试将metric = "RMSE"用于分类问题,您将收到以下消息:

Error in train.default(x, y, weights = w, ...) :
    Metric RMSE not applicable for classification models

哪个有道理。但有没有办法定义自定义指标?例如,如果您的结果为01,则可以将错误定义为outcome - p,其中p是模型预测的概率。

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

为了给出一些背景信息以及想要使用此度量的一些推理,请参阅Michael J. Procopio的An Experimental Analysis of Classifier Ensembles for Learning Drifting Concepts Over Time in Autonomous Outdoor Robot Navigation中的2.7.1,或paper on softclassval

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

我不知道你为什么要这样做但你可以自己制作汇总函数:

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)

最高