Могу ли я оптимизировать среднюю относительную абсолютную ошибку в `caret`? - PullRequest
0 голосов
/ 21 мая 2019

У меня есть модель KNN в карете, и я хотел бы оптимизировать ее для средней относительной абсолютной ошибки.

library(caret)
model <- train(
  close_price~ ., data = train.data, method = "knn",
  trControl = trainControl("cv", number = 10),
  preProcess = c("center", "scale"),
  metric = "MdRAE",
  tuneLength = 10
)

Я пытался использовать MdRAE и MDRAE, и они оба вернули эту ошибку.

Warning message:
In train.default(x, y, weights = w, ...) :
  The metric "MdRAE" was not in the result set. RMSE will be used instead

Есть ли список всех доступных метрик?Я не смог найти его в электронной книге карет .

1 Ответ

1 голос
/ 27 мая 2019

Этот показатель непосредственно не реализован в caret, но вы можете легко сделать это самостоятельно:

mdrae_summary <- function(data, lev=NULL, model=NULL) {
    c(MdRAE=median(abs(data$pred - data$obs)/data$obs))
}

model <- train(
  close_price~ ., data = train.data, method = "knn",
  trControl = trainControl("cv", number = 10, summaryFunction = mdrae_summary),
  preProcess = c("center", "scale"),
  metric = "MdRAE",
  tuneLength = 10
)
...