【发布时间】:2015-10-16 16:53:49
【问题描述】:
我正在研究 R 中的随机森林,我想将 10 折交叉验证添加到我的模型中。但我很困在那里。 这是我的代码示例。
install.packages('randomForest')
library(randomForest)
set.seed(123)
fit <- randomForest(as.factor(sickrabbit) ~ Feature1,..., FeatureN ,data=training1, importance=TRUE,sampsize = c(200,300),ntree=500)
我在网上找到了插入符号中的函数rfcv,但我不确定它是如何工作的。任何人都可以帮助使用此功能或提出一种更简单的方法来实现交叉验证。你能用随机森林包代替插入符号吗?
【问题讨论】:
-
我的理解是,正确构建的随机森林模型不需要交叉验证,因为森林中的每棵树都是用袋外样本构建的,并与未使用的剩余样本进行检查。为什么要交叉验证?
-
我的数据集的大小有点小,大约 50 个特征和 10000 个样本。数据集也非常不平衡,只有 200 个样本总数对应于 1 类,其余的对应于 2 类。所有这些都没有提到我必须单独保留 30% 的数据,以便用看不见的数据测试最终模型。我想使用 k 折交叉验证通过更好地选择特征来提高模型性能。
-
我认为您不了解随机森林的基本前提。您的数据集不小;我花了数年时间对药物数据进行射频分析,比您的数据集小 一个数量级,从来没有遇到过问题。您通常不交叉验证 RF 模型;用于构建森林的算法隐含地为您执行此操作。
-
对于不平衡的数据,默认的 RF OOB-CV 可能不令人满意,因为模型很容易只预测最流行的类别。我建议使用分层或分类权重选项。使用经过交叉验证的 AUC 来决定哪些设置对您的目标有希望。
-
嗨,Soren,据我所知,我正在使用 Strata。如果未指定 Strata,Strata 和 sampsize 结合使用,将使用类标签“as.factor(sickrabbit)”。
标签: r random-forest cross-validation