2016-12-05 4 views
0

私はカスタム評価メトリックを使用してvalidaitonセットでxgb.train(xgboostライブラリ-R)の "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、cousin_pete

関連する問題