我可以针对 `caret` 中的中值相对绝对误差进行优化吗?

Can I optimize for median relative absolute error in `caret`?

我在插入符号中有一个 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
)

我尝试使用 MdRAEMDRAE,但它们都返回了这个错误。

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

是否有所有可用指标的列表?我在 caret ebook.

中找不到它

此指标未直接在 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
)