如何将logLoss合并到插入符号中

时间:2015-03-25 21:23:40

标签: r r-caret

我试图将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)

2 个答案:

答案 0 :(得分:1)

您的参数名称不正确(即"unused argument (model = method)")。 webpage表示最后一个函数参数应该被称为model而不是method

答案 1 :(得分:0)

我认为你应该在 id count 1 11 0 2 22 3 3 33 2 4 44 5 summaryFunction=mnLogLoss trainControl设置metric="logLoss"(我发现它here)。像这样:

train