我正在研究不平衡的学习问题。 'Imbalanced'意味着数据集在其类之间呈现不均等的分布,例如,您给出了具有1000个示例的二进制分类问题。总共900个示例标记为0级,其他100个示例标记为1级。
大多数分类算法都没有考虑数据集的基础分布,因此他们没有处理这种“不平衡的学习问题”。因为如果他们将所有示例归类为0级,那么它们的准确率为90%。
类不平衡分类中的一个主要问题是数据集中的类重叠事件。单一类别中的不平衡可能会加剧问题。(类别不平衡问题的分类:评论,Aida Ali,Siti Mariyam Shamsuddin和Anca L.Ralescu,ISSN 2074-8523)
所以我想模拟这些问题,比如1)比较数据集具有不同重叠度的一些方法,2)比较数据集在类不平衡时的一些方法。 labels
所以我必须在r中创建数据集,我不知道如何生成这些数据集。 我只是做了一些自变量
set.seed(3)
x1 <- rnorm(n) # normal dist
x3 <- rexp(n) # exponential dist
x5 <- rpois(n,lambda=3) # poisson dist
error <- rnorm(n) # error term
现在我必须创建与这些X有关系的类变量Y.我想我可以通过X的系数来调整重叠率。
IR <- 90 # IR means imbalanced ratio 'IR=# of class0/# of class1'
eta <- -200*x1 + 0.5*sin(x3) + 300*x5^3 + error
Y <- as.factor( ifelse( eta > quantile( eta, IR/(IR+1) ), 1, 0) )
但实际上我不知道我的代码是否正确。另外我想知道如何在类不平衡数据集中制作。 你可以帮帮我吗?我该如何制作这些数据集?
答案 0 :(得分:0)
您可以使用 caret 包中的内置函数twoClassSim
。
library(caret)
set.seed(123)
data <- twoClassSim(
1000,
intercept = -16.5,
linearVars = 15,
noiseVars = 5
)
table(data$Class)
Class1 Class2
899 101