Оценка метрики ROC, пакет каретки - R - PullRequest
0 голосов
/ 10 июня 2018

У меня есть этот код:

model_nn <- train(
  Y ~ ., training,
  method = "nnet",
  metric = "ROC",
  trControl = trainControl(
    method = "cv", 
    number = 10,
    verboseIter = TRUE,
    classProbs = TRUE,
    summaryFunction = twoClassSummary
  )
)

nnprediction <- predict(model_nn, testing)
cmnn <-confusionMatrix(nnprediction,testing$Y)
print(cmnn)

, который работает.Однако я не могу оценить, насколько хорошо работает метрика ROC с помощью команды confusionMatrix.Как я могу оценить это, чтобы попробовать другой набор переменных и / или алгоритмов машинного обучения для улучшения производительности ROC?

PS: Зависимая переменная является фактором двух классов.

1 Ответ

0 голосов
/ 10 июня 2018

Просто набрав model_nn, вы получите оценку AUC для различных настроек, используемых во время тренировки;Вот пример, используя первые 100 записей данных iris (2 класса):

library(caret)
library(nnet)

data(iris)
iris_reduced <- iris[1:100,]
iris_reduced <- droplevels(iris_reduced, "virginica")

model_nn <- train(
  Species ~ ., iris_reduced,
  method = "nnet",
  metric = "ROC",
  trControl = trainControl(
    method = "cv", 
    number = 5,
    verboseIter = TRUE,
    classProbs = TRUE,
    summaryFunction = twoClassSummary
  )
)

model_nn

Результат:

Neural Network 

100 samples
  4 predictors
  2 classes: 'setosa', 'versicolor' 

No pre-processing
Resampling: Cross-Validated (5 fold) 
Summary of sample sizes: 80, 80, 80, 80, 80 
Resampling results across tuning parameters:

  size  decay  ROC  Sens  Spec
  1     0e+00  1.0  1.0   1   
  1     1e-04  0.8  0.8   1   
  1     1e-01  1.0  1.0   1   
  3     0e+00  1.0  1.0   1   
  3     1e-04  1.0  1.0   1   
  3     1e-01  1.0  1.0   1   
  5     0e+00  1.0  1.0   1   
  5     1e-04  1.0  1.0   1   
  5     1e-01  1.0  1.0   1   

ROC was used to select the optimal model using  the largest value.
The final values used for the model were size = 1 and decay = 0.1.

Кстати, термин "ROC" здесьнесколько вводит в заблуждение: то, что возвращается, конечно, не ROC (который является кривой , а не числом), но область под кривой ROC, то есть AUC (используя metric='AUC' в trainControlимеет тот же эффект).

...