这可能是由于数据集中目标变量的输入不均衡引起的。具体来说,当负类别的数量比正类别的数量多时,ROSE函数会生成负样品。为了解决这个问题,我们可以使用SMOTE算法来合成新的正样品。以下是一个使用过采样的代码示例:
install.packages("DMwR") #安装DMwR包
library(DMwR) # 加载DMwR包
data(iris) #使用iris数据集的示例
# 创建一个不均衡的数据集
n <- as.numeric(table(iris$Species))
idx <- c(sample(which(iris$Species == names(n)[1]), n[2]),
sample(which(iris$Species == names(n)[2]), n[2]),
sample(which(iris$Species == names(n)[3]), n[3]))
iris.uneven <- iris[idx, ]
# 使用SMOTE对数据集进行过抽样
iris.oversampled <- SMOTE(Species ~ ., iris.uneven, k = 5, perc.over = 200)
table(iris.oversampled$Species)
输出结果表明,SMOTE算法已经生成了更多的正样品:
setosa versicolor virginica
100 100 100