2017-12-20 5 views
0

Caretのマニュアルサマリー機能の仕組みを理解する上で、いくつか問題があります。私はすべての予測を「失敗」として最大化する簡単なコードを作成しました。しかし何らかの理由で、すべてのインスタンスが失敗と予測されるようではありません(トレーニングデータセット上)。マニュアル概要Caretでの機能 - すべての予測=失敗の作成

コードについては、以下を参照してください:

は、全ての予測を最大化機能を失敗:

BS <- function (data, lev = NULL, model = NULL) { 
    negpredictions <- sum(data$pred == "fail") 
    names(negpredictions) <- c("Min_Precision") 
    negpredictions 
} 

トレーニングスクリプト:

train.control <- trainControl(method = "repeatedcv", 
          number = 10, 
          repeats = 3, 
          classProbs = TRUE, 
          #sampling = "smote", 
          summaryFunction = BS, 
          search = "grid") 


tune.grid <- expand.grid(.mtry = seq(from = 1, to = 10, by = 1)) 


cl <- makeCluster(3, type = "SOCK") 
registerDoSNOW(cl) 
random.forest.orig <- train(pass ~ manufacturer+meter.type+premise+size+age+avg.winter+totalizer, 
       data = meter.train, 
       method = "rf", 
       tuneGrid = tune.grid, 
       metric = "Min_Precision", 
       maximize = TRUE, 
       trControl = train.control) 
    stopCluster(cl) 

答えて

0

caretで指定されたメトリックは、損失関数ではなく、最適なモデルを選択するためのメトリック(ほとんどの場合、ハイパーパラメータの最適な組み合わせ)。したがって、BS関数を指定することによって、単に「失敗」の予測を最大化するmtryを選択するだけです。

機能のヘルプから:

メトリック
要約メトリックは、最適なモデルを選択するために使用されるかを指定する文字列。デフォルトでは、回帰の場合は「RMSE」と「Rsquared」、分類の場合は「Accuracy」と「Kappa」が可能です。カスタムパフォーマンスメトリックが使用されている場合(trainControlのsummaryFunction引数を使用して、メトリックの値が引数の1つと一致する必要があります)、警告が発行され、summaryFunctionによって指定された最初のメトリックが使用されます。 、この引数は名前を付ける必要があります。)

あなたは

random.forest.orig$bestTune

をチェックすると、あなたは最高の曲がBSの機能を最大化1で表示されます。しかし、これはネイティブモデルの損失を変更しません機能。

関連する問題