【问题标题】:SMOTE - multiclassSMOTE - 多类
【发布时间】:2022-01-10 22:05:02
【问题描述】:

鉴于我有一个类不平衡问题,我正在应用 SMOTE(DMwR 包)。但是,我有三个班级结果而不是两个。

该函数正确地对少数类进行过采样,但我没有遵循多数/中产类的行为(即所有类别都包含不同的样本大小)。

假设:

library(DMwR)

set.seed(1234)

train = data.frame(group=as.factor(rep(c(1,2,3),c(35,110,220))),
            score=rnorm(365,100))

train_resample <- SMOTE(group ~ ., train, perc.over = 400, perc.under=200)

table(train_resample$group)

#  1   2   3 
# 175  104 176

少数类是有道理的,35+(35*4) = 175。另外,剩下的样本很清楚,140*200/100 = 280。但是,我不确定这个样本是如何分布在其余类中的.它保留了样本大小的顺序,但可能是随机的。

有什么想法吗?

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以试试 UBL 包中的 SmoteClassif() 函数。该函数允许您指定要对每个类进行欠采样或过采样的百分比。

    【讨论】:

    • 我使用的 SMOTE 函数也有这些选项(过采样/欠采样),如示例所示,尽管在示例中会产生输出,但我很困惑。
    猜你喜欢
    • 2018-12-27
    • 2018-12-20
    • 2019-08-23
    • 1970-01-01
    • 2019-09-30
    • 2020-08-29
    • 2021-03-01
    • 2019-11-30
    • 1970-01-01
    相关资源
    最近更新 更多