R语言randomForest包做回归预测需要交叉验证么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言randomForest包做回归预测需要交叉验证么相关的知识,希望对你有一定的参考价值。

参考技术A rpart包,rpart包是官方推荐的一个包,它的功能就是实现递归分割和回归树。 party包,关于递归分割更为详细的包,它包含了Bagging方法,可以产生条件推断树(conditional inference tree)等; randomForest包,实现了分类与回归树的随机森林(rando 参考技术B 是基于oob,但是oob只是这一轮的oob,之前不一定是oob,所以还是有train过的数据集,因此仍然需要做交叉验证.

R线性回归中的RandomForest尾部mtry

【中文标题】R线性回归中的RandomForest尾部mtry【英文标题】:RandomForest in R linear regression tails mtry 【发布时间】:2012-05-17 12:01:05 【问题描述】:

我正在使用 R 中的 randomForest 包(R 版本 2.13.1,randomForest 版本 4.6-2)进行回归,并注意到我的结果存在显着偏差:预测误差取决于响应变量的值。高值预测不足,低值预测过高。起初我怀疑这是我的数据造成的结果,但以下简单示例表明这是随机森林算法固有的:

n = 50; 
x1 = seq(1,n) 
x2 = matrix(1, n, 1)
predictors = data.frame(x1=x1, x2=x2)
response = x2 + x1
rf = randomForest(x=predictors, y=response)
plot(x1, response)
lines(x1, predict(rf, predictors), col="red")

毫无疑问,树方法在线性方面有其局限性,但即使是最简单的回归树,例如R 中的 tree() 没有表现出这种偏差。我无法想象社区不会意识到这一点,但没有发现任何提及,它通常是如何纠正的?感谢任何cmets

编辑:这个问题的例子有缺陷,请参阅堆栈交换中的“RandomForest for regression in R - response distributiondependent bias”以获得改进的处理https://stats.stackexchange.com/questions/28732/randomforest-for-regression-in-r-response-distribution-dependent-bias

【问题讨论】:

【参考方案1】:

您发现的并不是随机森林中的固有偏差,而只是未能正确调整模型上的调整参数。

使用您的示例数据:

rf = randomForest(x=predictors, y=response,mtry = 2,nodesize = 1)
plot(x1, response)
lines(x1, predict(rf, predictors), col="red")

对于您的真实数据,当然,改进不太可能如此明显,我敢打赌,您从nodesize 获得的里程会比mtry 更多(mtry 在这里完成了大部分工作)。

常规树没有表现出这种“偏差”的原因是,默认情况下,它们会搜索所有变量以获得最佳分割。

【讨论】:

谢谢乔兰。感觉有些不对劲,我很高兴看到有解决方案。不幸的是,对于我的工作,我已经调整了几乎没有效果的参数(当然 nTrees 除外),所以对于这个“简单”的例子,我大多忽略了它们——我想我的情况确实存在偏见,再次感谢 很公平......虽然它仅限于您的数据,但它并不是真正的 RF 偏差,是吗? ;) 你只是有一些难以建模的数据! 是的,RF 中的偏见是可以避免的 - 我已经更改了这个问题的标题,以便将来对人们更有帮助

以上是关于R语言randomForest包做回归预测需要交叉验证么的主要内容,如果未能解决你的问题,请参考以下文章

R语言随机森林RandomForest逻辑回归Logisitc预测心脏病数据和可视化分析|附代码数据

R线性回归中的RandomForest尾部mtry

R语言回归模型构建回归模型基本假设(正态性线性独立性方差齐性)回归模型诊断car包诊断回归模型特殊观察样本分析数据变换模型比较特征筛选交叉验证预测变量相对重要度

R语言随机森林回归(randomforest)模型构建

R中常用数据挖掘算法包

R语言入门——多元回归交叉验证的实现