我试图将logLoss作为通过插入符号调整randomForest(其他分类器)时使用的性能指标(而不是Accuracy或Kappa的默认选项)。
第一个R脚本使用默认值执行时没有错误。但是,我得到了:
{:task 1 failed - " unused argument(model = method)"
使用第二个脚本时。
函数logLoss(predict(rfModel,test[,-c(1,95)],type="prob"),test[,95])
通过利用单独训练的randomForest模型来工作。
数据框有100多列和10,000多行。所有元素都是9级分类"目标"之外的数字。在col = 95。行id位于col = 1。
不幸的是,我没有正确掌握http://topepo.github.io/caret/training.html提供的指导,也没有通过谷歌搜索获得太多运气。
非常感谢您的帮助。
工作R脚本:
fitControl = trainControl(method = "repeatedcv",number = 10,repeats = 10)
rfGrid = expand.grid(mtry=c(1,9))
rfFit = train(target ~ ., data = train[,-1],method = "rf",trControl = fitControl,verbose = FALSE,tuneGrid = rfGrid)
不工作R脚本:
logLoss = function(data,lev=NULL,method=NULL) {
lLoss = 0
epp = 10^-15
for (i in 1:nrow(data)) {
index = as.numeric(lev[i])
p = max(min(data[i,index],1-epp),epp)
lLoss = lLoss - log(p)
}
lLoss = lLoss/nrow(data)
names(lLoss) = c("logLoss")
lLoss
}
fitControl = trainControl(method = "repeatedcv",number = 10,repeats = 10,summaryFunction = logLoss)
rfGrid = expand.grid(mtry=c(1,9))
rfFit = train(target ~ ., data = trainBal[,-1],method = "rf",trControl = fitControl,verbose = FALSE,tuneGrid = rfGrid)