gpt4 book ai didi

r - 如何在R的randomForest中使用classwt?

转载 作者:行者123 更新时间:2023-12-03 10:43:38 25 4
gpt4 key购买 nike

我有一个高度不平衡的数据集,目标类实例的比例如下60000:1000:1000:50 (即总共 4 个类(class))。我想用randomForest用于对目标类别进行预测。

所以,为了减少类不平衡,我玩了 sampsize参数,将其设置为 c(5000, 1000, 1000, 50)和其他一些值,但没有太多用处。实际上,当我玩 sampsize 时,第一类的准确率下降了。 ,尽管其他类(class)预测的改进非常微小。

在翻阅文件时,我发现了 randomForest() 的另外两个功能。 , 分别是 strataclasswt用于抵消类不平衡问题。
classwt上的所有文件旧的(一般属于2007、2008年),都建议不要使用classwt randomForest 的特点包裹在 R因为它没有像 fortran 那样完全实现其完整的功能.所以第一个问题是:
classwt现在在 randomForest 中完全实现R包?如果是,通过什么c(1, 10, 10, 10)classwt论证代表? (假设目标变量中有4个类的上述情况)

据说可以抵消类别不平衡问题的另一个论点是分层抽样,它总是与 sampsize 一起使用。 .我懂什么sampsize来自文档,但没有足够的文档或示例可以清楚地了解使用 strata克服类(Class)不平衡问题。所以第二个问题是:
什么类型的参数必须传递给 stratarandomForest它代表什么?

我猜这个词重量 我在问题中没有明确提到的应该在答案中发挥主要作用。

最佳答案

classwt正确传递给 randomForest ,检查这个例子:

library(randomForest)
rf = randomForest(Species~., data = iris, classwt = c(1E-5,1E-5,1E5))
rf

#Call:
# randomForest(formula = Species ~ ., data = iris, classwt = c(1e-05, 1e-05, 1e+05))
# Type of random forest: classification
# Number of trees: 500
#No. of variables tried at each split: 2
#
# OOB estimate of error rate: 66.67%
#Confusion matrix:
# setosa versicolor virginica class.error
#setosa 0 0 50 1
#versicolor 0 0 50 1
#virginica 0 0 50 0

类权重是结果的先验。您需要平衡它们以实现您想要的结果。

stratasampsize这个答案可能有帮助: https://stackoverflow.com/a/20151341/2874779

一般来说, sampsize所有类的大小相同似乎是合理的。 strata是一个将用于分层重采样的因素,在您的情况下,您不需要输入任何内容。

关于r - 如何在R的randomForest中使用classwt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20251839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com