我在大数据问题中使用随机森林,该问题具有非常不平衡的响应类,因此我阅读了文档,发现以下参数:

strata

sampsize


这些参数的文档很少(或者我没有运气找到它),我真的不知道如何实现它。我正在使用以下代码:

randomForest(x=predictors,
             y=response,
             data=train.data,
             mtry=lista.params[1],
             ntree=lista.params[2],
             na.action=na.omit,
             nodesize=lista.params[3],
             maxnodes=lista.params[4],
             sampsize=c(250000,2000),
             do.trace=100,
             importance=TRUE)


响应是具有两个可能值的类,第一个比第二个(10000:1或更大)出现的频率更高

list.params是具有不同参数的列表((!我知道...)

好了,问题(再次)是:如何使用“ strata”参数?我正确使用sampsize吗?

最后,有时会出现以下错误:

Error in randomForest.default(x = predictors, y = response, data = train.data,  :
  Still have fewer than two classes in the in-bag sample after 10 attempts.


抱歉,如果我正在做很多(也许是愚蠢的)问题...

最佳答案

您应该尝试使用将不平衡度从1:10,000降低到1:100或1:10的采样方法。您还应该减小所生成树的大小。 (目前,这些建议是我仅从记忆中重复的建议,但我会发现我是否比海绵皮层能找到更多的权限。)

减少树大小的一种方法是将“ nodesize”设置为更大。在这种程度的不平衡的情况下,您可能需要使节点大小非常大,例如5-10,000。这是rhelp中的一个线程:
https://stat.ethz.ch/pipermail/r-help/2011-September/289288.html

在问题的当前状态下,您有sampsize=c(250000,2000),,而我本以为sampsize = c(8000,2000)之类的内容更符合我的建议。我认为您正在创建的样本中没有2000个样本中的任何一个。

10-06 01:41