【问题标题】:randomForestSRC sampling schemerandomForestSRC 抽样方案
【发布时间】:2018-04-18 03:20:19
【问题描述】:

我正在使用 R 中的 randomForest 包对不平衡数据进行建模。结果是一个二元变量,结果(否,是)的相对频率为(2249(88%),318(12%))。

由于不平衡,RF 最初预测为“否”,OOB 错误率为 0%,“是”,OOB 错误率为 100%。我通过使用以下代码强制使用从可能的 2249 中随机抽样的所有 318 个是结果和 318 个否结果来更改 RF 中的抽样设计。 OOB 错误率更改为合理的 44%(否)和 12%(是)。

rf1 <- randomForest(binary.outcome ~ ., data = data, 
                   strata = data$binary.outcome,
                   sampsize = c(318,318), replace = TRUE, importance = TRUE,
                   proximity = TRUE, mtry = 8, ntree = 2000)

有谁知道如何在 randomForestSRC 中重复这种抽样设计?

我无法从 CRAN pdf 规范中解决问题

rfsrc.1 <- rfsrc(binary.outcome ~ ., data = data, 
                bootstrap = "by.user", samptype = "swor",
                samp = c(318,318), replace = TRUE, importance = "permute",
                proximity = TRUE, mtry = 8, ntree = 2000)

我收到错误消息“在 apply(samp,2, sum): dim(x) must have positive length”

我不知道如何操作 samp 和 bootstrap 来获得我想要的东西。

谢谢,

不要

【问题讨论】:

    标签: r random-forest


    【解决方案1】:

    我们的文档可能会更清晰。您应该在 rfsrc() 调用中使用 case.wt 选项。将 bootstrap、samptype 和 samp 保留为默认值。 case.wt 必须是维度为 n 的向量,其中 n 等于已处理数据集中的案例数。在您的情况下, n= 2567 假设没有丢失数据。每个少数类案例的权重应为 1/318,每个多数类案例的权重应为 1/2249。向量将在内部进行归一化,并且每个引导程序将具有相等数量的每个类,如果这是本意的话。

    请注意,我们正在研究一种称为 g-mean 的新性能度量,它与少数二类问题相关。它将在即将发布的 beta 版本中发布

    https://github.com/kogalur/randomForestSRC

    此外,我们将实施阈值,如果少数类在节点中的比例大于其在数据集中的整体比例,则允许少数类获胜,而不是默认阈值 50%目前决定胜负。我们很乐意在此功能可用时通知您,因为它可能与您的情况有关。

    【讨论】:

    • 谢谢 Udaya - 这回答了我的问题。它还可以推广到存在某些子组的其他情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多