2017-10-22 90 views
0

我正在学习不平衡的学习问题。 “不平衡”意味着数据集在其类之间呈现不均等分布,例如,您给出了1000个示例的二元分类问题。总共900个示例用类0标记,其他100个示例用类1标记。我如何在r中创建一些数据集?

大多数分类算法没有考虑数据集的基本分布,所以他们没有处理这种“不平衡的学习问题”。因为如果他们将所有示例分类为0类,那么它们的准确率为90%。

类不平衡分类中的一个主要问题是数据集中的类重叠事件。 (类别不平衡问题的分类:Aida Ali,Siti Mariyam Shamsuddin和Anca L.Ralescu,ISSN 2074-8523)

所以我想模拟这些问题像1)比较一些方法时,数据集有不同的重叠度,2)比较一些方法时,数据集在类不平衡内。 datasets have overlapping

datasets have within class imbalance

所以我必须作出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 

而现在我必须做出类变量Y具有与这些X的关系。我想我可以通过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)) 

但其实我不知道我的代码是正确的。另外我想知道如何在班级不平衡数据集中做出决定。 你能帮我吗?我如何制作这些数据集?

+1

您确实只需要调用一次'set.seed'就可以使数据重现。 – xxfelixxx

+0

@xxfelixxx谢谢我对此进行了修改。 – Ssunny

+0

看看这篇文章。有一个伟大的3级数据集,该人员用权重1:49:50创建(实际为50:2450:2500)https://stats.stackexchange.com/questions/157714/r-package-for-weighted-random-forest -classwt-option –

回答

0

您可以使用内置函数twoClassSim插入符号包。

library(caret) 
set.seed(123) 
data <- twoClassSim(
    1000, 
    intercept = -16.5, 
    linearVars = 15, 
    noiseVars = 5 
) 
table(data$Class) 

Class1 Class2 
    899 101 
相关问题