Я бы предложил вам использовать «Технику избыточной выборки синтетического меньшинства ( SMOTE )» (Chawla et al. 2002) или «Примеры случайной выборки ( ROSE )» (Menardiи Torelli, 2013).
1) Вы можете отрегулировать выборку в каждом сечении перекрестной проверки, добавив sampling=
в trainControl
.
Например:
trainControl(method = "repeatedcv",
number = 10,
repeats = 10,
sampling = "up")
2) Или, отрегулировав выборку перед тренировкой, вызвав функции SMOTE и ROSE .
library("DMwR") #for smote
library("ROSE")
dat <- iris[1:70,]
dat$Species <- factor(dat$Species)
table(dat$Species) #class imbalances
setosa versicolor
50 20
set.seed(100)
smote_train <- SMOTE(Species ~ ., data = dat)
table(smote_train$Species)
setosa versicolor
80 60
set.seed(100)
rose_train <- ROSE(Species ~ ., data = dat)$data
table(rose_train$Species)
setosa versicolor
37 33