Я использую дерево решений для классификации своих дел. Поскольку мои данные не сбалансированы, я повторял класс меньшинства, пока не достиг равновесия 50:50. Я знаю, что это довольно необычный метод, и я также попробовал функцию SMOTE.
Допустим, у меня было 5% плохих случаев, затем 95% хороших случаев. Я повторял свои плохие данные, пока у меня не было 50% плохих и 50% хороших. Код ниже.
#Count frequency of groups
tab <- table(train$case)
#Count number of rows to be added
no_of_rows <- max(tab) - min(tab)
#count number of rows which are already there in the dataframe for the minimum group
existing_rows <- which(train$case%in% names(which.min(tab)))
#Add new rows
new_df <- rbind(train, train[rep(existing_rows,no_of_rows/length(existing_rows)), ])
train <- new_df
#Check the count
table(train$case)
> table(train$case)
bad good
15316 15855
Теперь я хочу сделать разделение 60:40. Это означает 60% плохих дел и 40% хороших дел, но я не знаю, как это сделать.
Кто-нибудь может помочь? Спасибо.