我有一个高度不平衡的数据集,目标类实例的比例如下(编辑:) 60000:1000:1000:1000 60000:1000:1000:50(即总共4个类).我想用它randomForest来预测目标类.
因此,为了减少类不平衡,我使用sampsize参数,将其设置为(编辑:) 和其他一些值,但没有太多使用它.实际上,虽然其他级别预测的改进非常微小,但是在我玩的时候,第一类的准确性有所下降.c(5000, 1000, 1000, 50)sampsizerandomForest()
虽然挖通过档案,我遇到的两个特点strata,这是classwt和classwt那些用于胶印级的不平衡问题.
所有文件classwt都是旧的(通常属于2007年,2008年),所有文件都建议不要使用包的randomForest功能,因为它没有完全实现其完整的功能.所以,第一个问题是:是现在完全在实施的R包?如果是,传递给参数的是什么?(假设目标变量中有4个类的上述情况)Rfortranclasswt
randomForestc(1, 10, 10, 10)classwtsampsize
据说抵消类不平衡问题的另一个论点是分层抽样,它总是与之结合使用sampsize.我理解strata文档中的内容,但是没有足够的文档或示例可以清楚地了解strata用于克服类不平衡问题.所以,第二个问题是:
什么类型的参数都将被传递给randomForest在60000:1000:1000:50?它代表什么?
我想在问题中没有明确提到的单词权重应该在答案中起主要作用.
我在一个大数据问题中使用随机森林,它有一个非常不平衡的响应类,所以我阅读了文档,我发现了以下参数:
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)
对不起如果我做了很多(也许是愚蠢的)问题......