2016-12-05 1 views
0

사용자 정의 평가 메트릭을 사용하여 validaiton 세트에서 "early.stop.round"기능을 사용하려고합니다. 즉, feval "기능). !Xgboost early.stop.round 사용자 정의 메트릭 오류가 발생했습니다.

xgbMatrixTrain <- xgb.DMatrix(as.matrix(train[,-c(1,2)]), label   =train$y,missing="NAN") 
xgbMatrixValid <- xgb.DMatrix(as.matrix(valid[,-c(1,2)]), label = valid$y,  missing="NAN") 


MAE <- function(preds, dtrain) { 

labels <- getinfo(dtrain, "label") 
err <- as.numeric(sum(abs(exp(labels) - exp(preds))))/length(labels) 
    return(list(metric = "mae error", value = err)) 
} 

myWatch <- list(val=xgbMatrixValid,train=xgbMatrixTrain) 
bst.mae2<- xgb.train(params = param.noerr, 
       data = xgbMatrixTrain, 
       feval = MAE,      nround=150, 
        print.every.n = 1, 
        watchlist=myWatch, 
        early.stop.round = 20, 
       maximize = FALSE) 

[0] val-mae error:0.59831651363868 train-mae error:0.598864823842993 

오류 경우에 (((||) & & 점수> bestScore을 극대화 & &이 < 점수를 극대화 : 그러나, 나는 다음과 같은 오류 메시지가 FALSE/TRUE가 필요 없는 값을

스톱 라운드 기능을 사용하지 않기 때문에이 오류를 피할 수 있습니다. 스톱 라운드 기능을 동시에 유지하여 해결 방법에 대한 아이디어가 있습니까?

고마워요! 레오

답변

0

코드를 실행할 수없는 재현 가능한 예제가 없습니다. 오류는 코드와 관련이 없지만 데이터의 오류 일 수는 있지만 데이터가 없으면 말할 수 없습니다! 바이너리 응답 변수에 0 또는 1 값이없는 경우 오류 메시지가 표시됩니다. Xgboost는 숫자 데이터 만 처리하므로 확인해 볼 가치가 있습니다. 데이터에 누락 된 "NAN"이 있습니까? 누락 된 응답이있는 행을 제거하면 어떻게됩니까? HTH, 사촌 _pete