2017-07-25 7 views
0

私は、例えば、次のコードを実行しています:xgb3つのキャレット行列かどうか?

v.ctrl <- trainControl(method = "repeatedcv", repeats = 1,number = 3, 
        summaryFunction = twoClassSummary, 
        classProbs = TRUE, 
        allowParallel=T) 



xgb.grid <- expand.grid(nrounds = 10000, 
         eta = c(0.01,0.05,0.1), 
         max_depth = c(2,4,6,8,10,14)) 
set.seed(45) 
xgb_tune <-train(target~., 
       data=train, 
       method="xgbTree", 
       trControl=cv.ctrl, 
       tuneGrid=xgb.grid, 
       verbose=T, 
       metric="LogLoss", 
       nthread =3) 

エラーは単純です:

Error in train(target ~ ., data = train, method = "xgbTree", trControl = cv.ctrl, : unused arguments (data = train, method = "xgbTree", trControl = cv.ctrl, tuneGrid = xgb.grid, verbose = T, metric = "LogLoss", nthread = 3)

マイセットstructure(list(feature19 = c(0.58776, 0.40764, 0.4708, 0.67577, 0.41681, 0.5291, 0.33197, 0.24138, 0.49776, 0.58293), feature6 = c(0.48424, 0.48828, 0.58975, 0.33185, 0.6917, 0.53813, 0.76235, 0.7036, 0.33871, 0.51928), feature10 = c(0.61347, 0.65801, 0.69926, 0.23311, 0.8134, 0.55321, 0.72926, 0.663, 0.49206, 0.55531), feature20 = c(0.39615, 0.49085, 0.50274, 0.6038, 0.37487, 0.53582, 0.62004, 0.63819, 0.37858, 0.40478), feature7 = c(0.55901, 0.38715, 0.50705, 0.76004, 0.3207, 0.54697, 0.31014, 0.21932, 0.4831, 0.52253), feature4 = c(0.5379, 0.52526, 0.44264, 0.28974, 0.65142, 0.41382, 0.44205, 0.47272, 0.6303, 0.56405), feature16 = c(0.41849, 0.45628, 0.37617, 0.39334, 0.46727, 0.36297, 0.3054, 0.41256, 0.6302, 0.41892), feature2 = c(0.62194, 0.5555, 0.61301, 0.27452, 0.74148, 0.49785, 0.5215, 0.46492, 0.54834, 0.58106), feature21 = c(0.32122, 0.37679, 0.35889, 0.74368, 0.18306, 0.47027, 0.40567, 0.47801, 0.41617, 0.35244), feature12 = c(0.56532, 0.55707, 0.49138, 0.24911, 0.69341, 0.42176, 0.41445, 0.45535, 0.62379, 0.5523), target = c(1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L)), .Names = c("feature19", "feature6", "feature10", "feature20", "feature7", "feature4", "feature16", "feature2", "feature21", "feature12", "target"), row.names = c(NA, 10L), class = "data.frame")

誰もが私はxgbtreeのためのデータを再処理する必要があるかどうかを知っていますか? Thx u!

答えて

0

R/Caret/machine learningについては、私はうなずいていますが、私の質問に対する回答を絶えず確認した後、あなたのポストを見ました。私はあなたの質問に完全に答えることができる人がいることを願っていますが、その間に私がしたことがあります。

まず、データセットをRに入力してコードを実行しようとしました。私は、あなたの制御機能でタイプミスがあるかもしれないと信じています。未使用の引数で問題が発生するかもしれない "cv"に "c"がありません。

しかし、私はその問題を解決した後、複数のエラーと警告がありました。あなたはtwoClassSummaryを使用していますが、logLossを指定しています(ここでの構文に注意してください。何か変更があった場合はLogLossではありません)...代わりに、このsummaryFunctionをmnlogに切り替えて、そのメトリックとしてAUCを使用します。また、私はあなたのトレーニングセットのあなたの "目標"変数を単純な文字変数、この場合は "Y"または "N"に置き換えました。 csvファイルhereをダウンロードできます。

その後、キャレットのドキュメント(使用可能なモデル)にあるxgBoostメソッドのチューニングパラメータが不足していたことを指摘して、チューニンググリッドに関するエラーを受けました。残りのパラメータのほとんどはデフォルト値1を追加しました。私が使ったチューニンググリッドはhereです。

次のように私は実際にXGBモデルを訓練するために使用私の最終的なコードだった

control = trainControl(method = "repeatedcv", repeats = 1, number = 3, 
        summaryFunction = mnLogLoss, 
        classProbs = TRUE, 
        allowParallel=T) 

tune = train(x=set[,1:10], y=set[,11], method="xgbTree", trControl=control, 
tuneGrid = xgb.grid, verbose=TRUE, metric="logLoss", nthread=3) 

、出力はここに示されています:私はこのことができます願ってい

tune 
eXtreme Gradient Boosting 

10 samples 
10 predictors 
2 classes: 'N', 'Y' 

No pre-processing 
Resampling: Cross-Validated (3 fold, repeated 1 times) 
Summary of sample sizes: 6, 8, 6 
Resampling results across tuning parameters: 

    eta max_depth logLoss 
    0.01 2   0.6914816 
    0.01 4   0.6914816 
    0.01 6   0.6914816 
    0.01 8   0.6914816 
    0.01 10   0.6914816 
    0.01 14   0.6914816 
    0.05 2   0.6848399 
    0.05 4   0.6848399 
    0.05 6   0.6848399 
    0.05 8   0.6848399 
    0.05 10   0.6848399 
    0.05 14   0.6848399 
    0.10 2   0.6765847 
    0.10 4   0.6765847 
    0.10 6   0.6765847 
    0.10 8   0.6765847 
    0.10 10   0.6765847 
    0.10 14   0.6765847 

Tuning parameter 'nrounds' was held constant at a value of 10000 
Tuning parameter 'gamma' was held constant at a 
value of 0 
Tuning parameter 'colsample_bytree' was held constant at a value of 1 
Tuning parameter 
'min_child_weight' was held constant at a value of 1 
Tuning parameter 'subsample' was held constant at a value of 1 
logLoss was used to select the optimal model using the smallest value. 
The final values used for the model were nrounds = 10000, max_depth = 2, eta 
= 0.1, gamma = 0, colsample_bytree = 
1, min_child_weight = 1 and subsample = 1. 

、あなたは何であったかでした求める。私はログ損失コマンドを正しく実行すれば、ログ深度に文字通り影響を及ぼさなかったため、少し深い疑いがあります。私は別の指標AUCを使ってモデルを修正したが、結果は変更されたかどうかに関係なく、Cohen's Kappaと同じ結果が示されなかった。私はこれが10サンプルしかないと推測していますが、うまくいけば誰かが実際に何をしているのか説明できるので、これはコードダンプ以上のものです。

+0

3つのリサンプル。また、心配することはありませんが、@ Ze4はすべての情報を与えるわけではありません。生成される警告があります(「あなたは回帰をしようとしていますが、結果には2つの可能な値しかありません。分類したいのですか?もしそうなら、2つのレベル係数を結果欄として使用してください。これらの問題のいくつか。バージョンはわかりませんが、「エラー:チューニングパラメータグリッドには、nrounds、max_depth、eta、gamma、colsample_bytree、min_child_weight、subsampleの列が必要です」というエラーメッセージが表示されます。 – topepo

関連する問題