随机森林的类非常不平衡

nan*_*nue 18 r random-forest

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

strata 

sampsize
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

响应是一个具有两个可能值的类,第一个出现的频率高于第二个(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.
Run Code Online (Sandbox Code Playgroud)

对不起如果我做了很多(也许是愚蠢的)问题......

42-*_*42- 7

您应该尝试使用可将不平衡程度从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采样的组.