我在大数据问题中使用随机森林,该问题具有非常不平衡的响应类,因此我阅读了文档,发现以下参数:
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个样本中的任何一个。