【问题标题】:R caret model evaluation with alternate performance metric具有替代性能指标的 R 插入符号模型评估
【发布时间】:2014-05-28 17:11:57
【问题描述】:

我正在使用 R 的 caret 包进行一些网格搜索和模型评估。我有一个自定义评估指标,它是绝对误差的加权平均值。在观察级别分配权重。

X <- c(1,1,2,0,1) #feature 1
w <- c(1,2,2,1,1) #weights
Y <- 1:5 #target, continuous

#assume I run a model using X as features and Y as target and get a vector of predictions

mymetric <- function(predictions, target, weights){

v <- sum(abs(target-predictions)*weights)/sum(weights) 
return(v)
}

Here 给出了一个示例,说明如何使用 summaryFunction 为插入符号的 train() 定义自定义评估指标。 引用:

trainControl 函数有一个名为 summaryFunction 的参数,它指定了一个计算性能的函数。该函数应具有以下参数:

data 是数据框或矩阵的引用,其列称为 obs 和 pred 用于观察和预测的结果值(无论是数字 用于回归的数据或用于分类的字符值)。 目前,类概率没有传递给函数。这 数据中的值是保留的预测(及其相关的 参考值)用于调整参数的单一组合。如果 trainControl 对象的 classProbs 参数设置为 TRUE, 将出现包含该类的数据中的其他列 概率。这些列的名称与类相同 水平。 lev 是具有结果因子级别的字符串 取自训练数据。对于回归,NULL 值为 传入函数。模型是模型的字符串 正在使用(即传递给 train 方法参数的值)。

我不太清楚如何将观察权重传递给 summaryFunction。

【问题讨论】:

    标签: r r-caret evaluation-function


    【解决方案1】:

    您不能将权重直接传递给汇总函数,这是一种疏忽,因为您可以将它们传递给建模函数。如果基础模型包含权重,则它们用于生成预测值。

    我会将它添加到下一个版本中。

    最大

    【讨论】:

    • 嗨.. 只是为了确认此更改是否在新版本的 Caret 中进行?我正在使用 caret-6.0-58,它的参数没有权重
    • 已确认 - 代码失败,将权重添加到摘要函数并出现错误 - “FUN 中的错误(左,右):二进制运算符的非数字参数”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2015-05-10
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多