2016-10-10 10 views
0

XGBoostのearly.stop.round機能を活用して、過大トレーニングではないトレーニングを行いたいと考えています。私は、ウォッチリストのためtraintestxgb.DMatrixを作成し、xgboost()に渡し、必要に応じので検証データに関するXGBostモデルのパフォーマンスレポート

param2 <- list("objective" = "reg:linear", 
        "eval_metric" = "rmse", 
        "max_depth" = 15, 
        "eta" = 0.03, 
        "gamma" = 0, 
        "subsample" = 0.5, 
        "colsample_bytree" = 0.6, 
        "min_child_weight" = 5, 
        "alpha" = 0.15) 

    watchlist <- list(train = xgb.DMatrix(data = train_matrix, label = output_train), 
        test = xgb.DMatrix(data = total_matrix[ind, ], label = as.matrix(output_total[ind, ]))) 

    bst <- xgboost(data=train_matrix, label=output_train, nrounds = 500, watchlist = watchlist, 
         early.stop.round=5,verbose = 2, param=param2, missing = NaN) 

:このために私は次のコードを使用します。中間結果を印刷するにはverboseがあることを確認しました。

[74] train-rmse:0.129515 
[75] train-rmse:0.128455 
[76] train-rmse:0.127804 
[77] train-rmse:0.126874 
[78] train-rmse:0.125914 

をしかし、これのどれも私のテストDMatrixのための各ステップでのモデルの性能を付与するものではありません:verbose=1で私に与えながら

tree prunning end, 1 roots, 1692 extra nodes, 0 pruned nodes ,max_depth=15 
[74] train-rmse:0.129515 
tree prunning end, 1 roots, 1874 extra nodes, 0 pruned nodes ,max_depth=15 
[75] train-rmse:0.128455 
tree prunning end, 1 roots, 1826 extra nodes, 0 pruned nodes ,max_depth=15 
[76] train-rmse:0.127804 
tree prunning end, 1 roots, 1462 extra nodes, 0 pruned nodes ,max_depth=15 
[77] train-rmse:0.126874 
tree prunning end, 1 roots, 1848 extra nodes, 0 pruned nodes ,max_depth=15 
[78] train-rmse:0.125914 

:しかしverbose=2で、私は次のようにログを取得します。また、私は成功せずに試してみました:

  1. verbose=Tverbose=F
  2. 私が所望の出力を得るために行方不明です何validation

test DMatrixの名前を変更します。

答えて

0

テストデータセットのパフォーマンスレポートは、xgboost()ではなくxgb.train()を使用してのみ行うことができます。関連する修正されたコード(上記のparamのコピーではありません)は次のようになります:

dtrain <- xgb.DMatrix(data = train_matrix, label = output_train) 
    dtest <- xgb.DMatrix(data = total_matrix[ind, ], label = as.matrix(output_total[ind, ])) 
    watchlist <- list(train = dtrain, test = dtest)  
    bst <- xgb.train(data= dtrain, nrounds = 500, watchlist = watchlist, 
         prediction = T, early.stop.round=5,verbose = 1, param=param2, missing = NaN) 
関連する問題