我使用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以获得我想要的东西。
谢谢,
唐
答案 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%目前决定胜利。我们很乐意在可用时通知您此功能,因为它可能与您的情况有关。