r - 使用 mlr-package 构建模型时的自定义性能测量

标签 r function machine-learning mlr performance-measuring

我刚刚从 caret 切换过来至mlr对于我目前正在研究的一个具体问题。 我想知道这里是否有人熟悉在 resample() 中指定自定义性能度量功能。

这是一个可重现的代码示例:

library(mlr)
library(mlbench)

data(BostonHousing, package = "mlbench")

task_reg1  <- makeRegrTask(id = "bh", data = BostonHousing, target = "medv")
lrn_reg1   <- makeLearner(cl = "regr.randomForest",
                        predict.type = "response",
                        mtry=3) 
cv_reg1 <- makeResampleDesc("RepCV", folds = 5, reps = 5)

regr_1 <- resample(learner = lrn_reg1,
                     task = task_reg1,
                     resampling = cv_reg1,
                     measures = mlr::rmse)

我想计算平均绝对比例误差,MASE,而不是计算 RMSE。例如,可以在 Metrics 中找到此功能。封装:Metrics::mase() .

我试图包含 measures = Metrics::mase直接在 resample()打电话,但正如预期的那样,有点乐观,我收到以下错误: Error in checkMeasures(measures, task) : Assertion on 'measures' failed: Must be of type 'list', not 'closure'.

我发现mlr中有一个函数用于创建自定义性能指标的包,名为 makeMeasure() (https://rdrr.io/cran/mlr/man/makeMeasure.html)。我尝试用它进行一些实验,但没有成功。我在修改自定义函数方面没有太多经验,所以我希望这里有人可以帮助我,或者为类似的东西提供一些资源。

干杯!

最佳答案

您需要构造一个可在 makeMeasure() 中应用的函数,其格式为 function(task, model, pred, extra.ar​​gs)。我们可以围绕 Metrics::mase() 编写一个包装器,这样您就可以在 resample() 中使用此函数,并且您可以对您找到的任何其他指标执行相同的操作.

mase_fun <- function(task, model, pred, feats, extra.args) {
  Metrics::mase(pred$data$truth, pred$data$response, step_size = extra.args$step_size)
}

mase_measure <- makeMeasure(id = "mase", 
                            minimize = T,
                            properties = c("regr", "req.pred", "req.truth"),
                            fun = mase_fun,
                            extra.args = list(step_size = 1))

resample(learner = lrn_reg1,
         task = task_reg1,
         resampling = cv_reg1,
         measures = mase_measure)

关于r - 使用 mlr-package 构建模型时的自定义性能测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61462353/

相关文章:

r - 如何在R Markdown 方程中制作 curl k?

使用列本身中的文本重命名数据框列

arrays - C中偶数数组的递归

php - 创建 Php 函数以返回 css 类

ruby - 如何使用机器学习对产品的品牌名称进行分类?

r - 如何在 R 中隔离小数点后的数字?

r - Knit 钩子(Hook)在 tex 文件中的\documentclass 行之前添加代码,以避免选项与 xcolor 冲突

php - 如果缺少 URL 段,则使用 Codeigniter

c# - 与google prediction API 具有相似功能的.Net 库

python - Numpy 神经网络中的权重未更新,错误是静态的