Несколько метрик оценки в классификации с использованием пакета каретки
Я использую caret
настроить MLP в 10-кратном резюме (повторяется 5 раз). Я хотел бы получить prSummary (F1, Precision, Recall), а также стандартные оценки точности и каппы в итоговом выводе.
- С
caret::defaultSummary()
Я получаю желаемую Точность и Значения Каппа, однако ей не хватает F1, точности и отзыва. - С участием
prSummary()
используется функция, противоположная истинной: отсутствует каппа и точность. - Есть ли способ получить обе метрики одновременно? Я предоставил игрушечный пример с набором данных iris и удалил один класс, чтобы получить проблему двоичной классификации.
Q2) На заметку: желательно ли использовать seeds
параметр, как я сделал, для воспроизводимости перекрестной проверки? Потому что при случайной выборке мой код, вероятно, все еще не воспроизводим, верно?
########################## Info ############################
# Toy Example - F1, Precision & Recall averaged over folds
#
########################## Preparation & Libraries ############################
#load libraries
library("dplyr")
library("ggplot2")
library("mlbench") # for hyperparameter tuning
library("caret") # for hyperparameter tuning
library("tictoc") # for a performance measure
df1 <- iris %>% rename(
Class = Species
) %>% subset(., Class == "versicolor" | Class == "setosa")
df1$Class <- factor(df1$Class)
########################## Caret Preparation ############################
k.folds = 10
df1.seeds = c(rep(list(sample(1:10000,4,replace = T)),50),
sample(1:10000,1,replace = T))
df1.control <- trainControl( # 10 Fold cross validation, repeated 5 times
method="repeatedcv",
number=k.folds,
repeats=5,
classProbs = T,
seeds = df1.seeds,
# summaryFunction=prSummary,
# summaryFunction=prSummary defaultSummary twoClassSummary,
summaryFunction=prSummary,
#savePredictions=T
)
########################## Hyperparametertuning NeuralNet (MLP) ############################
df1.tunegrid <- expand.grid(.size=c(1:(ncol(df1)-1)))
metric <- "Accuracy"
set.seed(1337)
tic("MLP DF1, Hyperparameter Startegy 1: Grid Search")
mlp_df1 <- train(Class~., data=df1, method="mlp", metric=metric, tuneGrid=df1.tunegrid, trControl=df1.control)
toc()
print(mlp_df1)
# plot(mlp_df1)
print(mlp_df1$bestTune)