如何在R的randomForest中使用classwt?

Str*_*keR 25 r random-forest

我有一个高度不平衡的数据集,目标类实例的比例如下(编辑:) 60000:1000:1000:1000 60000:1000:1000:50(即总共4个类).我想用它randomForest来预测目标类.

因此,为了减少类不平衡,我使用sampsize参数,将其设置为(编辑:) 和其他一些值,但没有太多使用它.实际上,虽然其他级别预测的改进非常微小,但是在我玩的时候,第一类的准确性有所下降.c(5000, 1000, 1000, 50) sampsizerandomForest()

虽然挖通过档案,我遇到的两个特点strata,这是classwtclasswt那些用于胶印级的不平衡问题.

所有文件classwt都是旧的(通常属于2007年,2008年),所有文件都建议不要使用包的randomForest功能,因为它没有完全实现其完整的功能.所以,第一个问题是:现在完全在实施的R包?如果是,传递参数的是什么?(假设目标变量中有4个类的上述情况)Rfortranclasswt
randomForestc(1, 10, 10, 10)classwtsampsize

据说抵消类不平衡问题的另一个论点是分层抽样,它总是与之结合使用sampsize.我理解strata文档中的内容,但是没有足够的文档或示例可以清楚地了解strata用于克服类不平衡问题.所以,第二个问题是:
什么类型的参数都将被传递给randomForest60000:1000:1000:50?它代表什么?

我想在问题中没有明确提到的单词权重应该在答案中起主要作用.

Dan*_*ler 2

随机森林可能不是适合您问题的分类器,因为它们对类别不平衡极其敏感。

当我遇到不平衡问题时,我通常会像您尝试的那样来处理它sampsize。然而,我使所有层的大小相等,并且使用不替换的采样。不放回抽样在这里很重要,否则来自较小类别的样本将包含更多重复,并且该类别的代表性仍然不足。如果这种方法导致样本较小,则可能需要增加mtry,有时甚至将其设置为特征总数。

当最小的类中有足够的项目时,这种方法可以很好地发挥作用。然而,最小的班级只有 50 个项目。我怀疑你会得到有用的结果sampsize=c(50,50,50,50)

classwt从未为我工作过。