在r中的插入符号中创建RMSLE度量标准

时间:2017-10-19 09:44:11

标签: r-caret evaluation xgboost metric

有人可以帮我解决以下问题:我需要将带有插入符号包的xgboost训练模型更改为默认指标RMSLE。默认情况下,插入符号和xgboost在RMSE中训练和测量。

以下是代码行:

以插入符号格式

创建自定义汇总函数
custom_summary = function(data, lev = NULL, model = NULL){
out = rmsle(data[, "obs"], data[, "pred"])
names(out) = c("rmsle")
out
}

创建控制对象

control = trainControl(method = "cv",  
                   number = 2,     
                   summaryFunction = custom_summary)

创建调整参数网格

grid = expand.grid(nrounds = 100, 
               max_depth = 6,          
               eta = 0.075,     
               gamma = 0, 
               colsample_bytree = 0.4, 
               min_child_weight = 2.25,
               subsample = 1)

cl = makeCluster(3, type="SOCK") #make clusters

registerDoSNOW(cl)  #register clusters

set.seed(1)

训练我的模型

caret4 =  train(price_doc~. - sub_area - id,
                    data=train.train,
                    method="xgbTree",
                    trControl=control, 
                    tuneGrid=grid, 
                    metric="rmsle",
                    maximize = FALSE)

我不断收到错误:{:任务1失败 - "找不到功能" rmsle""

1 个答案:

答案 0 :(得分:0)

我的项目中也遇到了同样的问题。 即使使用以下命令在内存中加载Metrics包之后也是如此 的库(指标)

如果你看到,rmsle函数是从另一个名为custom_summary的函数调用的。它不是直接调用的。 所以我从函数custom_summary中加载了Metrics包,它解决了我的问题。

所以这里,custom_summary函数应该如下所示:

  

custom_summary = function(data,lev = NULL,model = NULL){
  的库(指标)
  out = rmsle(数据[," obs"],数据[," pred"])   name(out)= c(" rmsle")
  出
  }