2017-02-06 7 views
0

Я использую Caret для обучения моей модели (задача двоичной классификации). Как я могу убедиться, что train() не тренируется по метрике точности, а по метрике Specificity (TN/(TN + FP))?Train on Specific

что работает на точность:

control <- trainControl(method="cv", number=10) 
metric <- "Accuracy" 

set.seed(7) 
fit.svm <- train(target_var ~., data=dataset, method="svmRadial", metric=metric, trControl=control) 

Это не работает для изменения:

metric = "Specificity" 

Кто-нибудь знает, как тренировать модель для оптимизации Специфичность?

KR, Arnand

ответ

1

Попробуйте specifiyng в summaryFunction аргумент twoClassSummary внутри trainControl вместе с classProbs = TRUE и metric = "Spec" внутри train():

control <- trainControl(method="cv", 
         number=10, 
         summaryFunction = twoClassSummary, 
         classProbs = TRUE) 

fit.svm <- train(target_var ~., 
       data=dataset, 
       method="svmRadial", 
       metric="Spec", 
       trControl=control) 
+0

Thank, если я использую вашу функцию я получаю: «Ошибка '[.data.frame' (data,, lvls [1]): undefined columns selected ' Если я заменил' trControl 'на' trainControl ', он будет работать, но я получу меру Warning: Предупреждающее сообщение: В train.default (x, y, weights = w, ...): Метрика «Spec» не находилась в результирующем наборе. Вместо этого будет использоваться точность. – Arnand

+0

см. В редакторе, вам, вероятно, потребуется 'classProbs = TRUE' внутри' trainControl() ', а набор данных должен быть data.frame. – mtoto

+0

Он работает с классомProbs = TRUE, спасибо! – Arnand