我在一个大数据问题中使用随机森林,它有一个非常不平衡的响应类,所以我阅读了文档,我发现了以下参数:
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)
对不起如果我做了很多(也许是愚蠢的)问题......
您应该尝试使用可将不平衡程度从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采样的组.
| 归档时间: |
|
| 查看次数: |
28402 次 |
| 最近记录: |