randomForestSRC采样方案

时间:2017-11-06 02:23:57

标签: r random-forest

我使用R中的randomForest包来模拟不平衡数据。结果是二元变量,结果(不,是)的相对频率为(2249(88%),318(12%))。

由于不平衡,RF最初预测为0,OOB错误率为0%,而OOB错误率为100%。我通过强制使用所有318个结果更改了RF中的采样设计,并且318使用以下代码从可能的2249中随机抽样了318个结果。对于no,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)

我收到错误信息“在申请中(samp,2,sum):dim(x)必须有正长度”

我无法弄清楚如何操纵samp和bootstrap以获得我想要的东西。

谢谢,

1 个答案:

答案 0 :(得分: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%目前决定胜利。我们很乐意在可用时通知您此功能,因为它可能与您的情况有关。