在二进制分类问题中,如果类没有平等表示,则存在一些问题。这意味着(+)类的实例数远小于( - )类。例如,您有一个包含1000个实例的两类分类问题。共有100个实例来自(+)类,其余900个实例来自( - )类,那么类(+)与类( - )的比例是1:9。
在这种情况下,有许多解决方案来处理这个问题,如随机抽样(RUS),随机过采样(ROS),SMOTE等。
我想模拟和比较这些不平衡数据集的方法。 所以我必须生成不平衡的数据集。我做了一些像这样的数据:
sigma1 <- diag(rep(2,3))
sigma2 <- diag(rep(5,3))
a <- mvrnorm(n=500, mu=c(0,0,0), Sigma=sigma1); minor <- data.frame(a,Y="1")
b <- mvrnorm(n=9500, mu=c(1,1,1), Sigma=sigma2); major <- data.frame(b,Y="0")
data <- rbind(minor, major)
在这段代码中,我可以处理不平衡1:19的比例,但y和自变量之间没有关系。
因此,我更改了代码,如生成MAR缺失数据集
set.seed(317+k); x1 <- rnorm(N, mean=0, sd=1)
set.seed(317+9822*k); x2 <- rnorm(N, mean=3, sd=2)
set.seed(317+28384*k); x3 <- rnorm(N, mean=5, sd=3)
x <- c(x1,x2,x3); x.inter <- c(x1*x2, x2*x3, x3*x1)
alpha <- c(2,3,4); gamma <- c(1.5,1.9,1.3); beta <- 2; intercept <- 10
eta <- intercept + alpha%*%t((x+gamma)^2) - beta*x.inter
pr <- logistic(x=eta)
Y <- rbinom(N, size=1, prob=1-pr); Y <- as.factor(Y)
data <- data.frame(x1,x2,x3,Y)
但是在这段代码中,我有一些不平衡比例的问题。我知道我应该改变拦截&#39;对于不平衡比率,但比例不是恒定的。因此,当我模拟1000次时,有1000种不同的不平衡比率。
我该如何解决这个问题?或者是否有一些很好的代码来生成用于模拟的不平衡数据?