我正在使用R的插入符号包进行网格搜索和模型评估。我有一个自定义评估指标,它是绝对误差的加权平均值。权重在观察级别分配。
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为插入符号列()定义自定义评估指标的示例。 引用:
trainControl函数有一个名为summaryFunction的参数,它指定用于计算性能的函数。该函数应具有以下参数:
数据是具有名为obs的列的数据框或矩阵的参考 和观察到的和预测的结果值的预测值(数值 用于回归的数据或用于分类的字符值)。 目前,类概率不会传递给函数。该 数据中的值是保持预测(及其相关联的 参考值)用于单个调整参数组合。如果 trainControl对象的classProbs参数设置为TRUE, 将出现包含该类的数据中的其他列 概率。这些列的名称与类相同 水平。 lev是具有结果因子级别的字符串 取自训练数据。对于回归,NULL值为 传递给函数。 model是模型的字符串 正在使用(即传递给火车的方法参数的值)。
我无法弄清楚如何将观察权重传递给summaryFunction。
答案 0 :(得分:4)
您无法将权重直接传递给摘要函数,这是一种疏忽,因为您可以将它们传递给建模函数。如果基础模型适应权重,则它们用于生成预测值。
我将其添加到下一个版本中。
最高