首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在R中执行随机森林/交叉验证

如何在R中执行随机森林/交叉验证
EN

Stack Overflow用户
提问于 2013-11-04 09:01:20
回答 1查看 58.2K关注 0票数 21

我找不到一种方法来对我试图生成的回归随机森林模型执行交叉验证。

因此,我有一个包含1664个解释变量(不同的化学性质)的数据集,其中只有一个响应变量(保留时间)。我正在尝试建立一个回归随机森林模型,以便能够在给定保留时间的情况下预测某物的化学性质。

代码语言:javascript
复制
ID  RT (seconds)    1_MW    2_AMW   3_Sv    4_Se
4281    38  145.29  5.01    14.76   28.37
4952    40  132.19  6.29    11  21.28
4823    41  176.21  7.34    12.9    24.92
3840    41  174.24  6.7 13.99   26.48
3665    42  240.34  9.24    15.2    27.08
3591    42  161.23  6.2 13.71   26.27
3659    42  146.22  6.09    12.6    24.16

这是我的表格的一个例子。我想基本上绘制RT与1_MW等(最多1664个变量)的关系图,这样我就可以找出这些变量中哪些重要,哪些不重要。

我愿意:-

代码语言:javascript
复制
r = randomForest(RT..seconds.~., data = cadets, importance =TRUE, do.trace = 100)
varImpPlot(r)

它告诉我哪些变量是重要的,哪些是不重要的,这是很好的。但是,我希望能够对我的数据集进行分区,以便可以对其执行交叉验证。我找到了一个在线教程,解释了如何做到这一点,但对于分类模型,而不是回归。

我知道你是这么想的

代码语言:javascript
复制
k = 10
n = floor(nrow(cadets)/k)
i = 1
s1 = ((i-1) * n+1)
s2 = (i * n)
subset = s1:s2

定义要进行多少交叉折叠,以及每个折叠的大小,并设置子集的起始值和结束值。然而,我不知道以后在这里做什么。我被告知要循环,但老实说,我不知道该怎么做。我也不知道如何将验证集和测试集绘制到同一张图上,以描述准确性/误差的级别。

如果你能帮我解决这个问题,我将不胜感激,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-06-06 22:32:08

作为顶级厨师pointed out,为了防止过度拟合,交叉验证并不是必需的。这是随机森林算法的一个很好的特性。

听起来你的目标是特征选择,交叉验证对于这个目的仍然很有用。看看randomForest包中的rfcv()函数。文档指定了数据框和向量的输入,因此我将从使用您的数据创建它们开始。

代码语言:javascript
复制
set.seed(42)
x <- cadets
x$RT..seconds. <- NULL
y <- cadets$RT..seconds.

rf.cv <- rfcv(x, y, cv.fold=10)

with(rf.cv, plot(n.var, error.cv))
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19760169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档