在r

时间:2017-10-04 17:44:25

标签: r

在二进制分类问题中,如果类没有平等表示,则存在一些问题。这意味着(+)类的实例数远小于( - )类。例如,您有一个包含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种不同的不平衡比率。

我该如何解决这个问题?或者是否有一些很好的代码来生成用于模拟的不平衡数据?

0 个答案:

没有答案