Как я могу использовать SMOTE в R, чтобы увеличить выборку всего моего набора данных так, чтобы исходное распределение классов (например, класс большинства встречался в 53% случаев)? Я знаю, что 53% - это едва ли не большинство, но просто представьте, что это p процентов - общий случай.
set.seed(10)
library(DMwR)
df <- data.frame(x = 1:100, y = 1:100, c = sample(c('a', 'b'), 100, replace=T))
table(df$c)
a b
53 47
ratio <- 53 / 47
new_df <- SMOTE(c ~ ., df, perc.over=100, perc.under=200 * ratio)
> table(new_df$c)
a b
106 94
> 106/94
[1] 1.12766
> ratio
[1] 1.12766
Однако, когда я пробую разные значения perc.under
, например 200, Я не могу поддерживать такое же распределение классов.