使用R进行回归的randomForest有意义吗?

艾丽夫·Y

我想检查在我的数据中哪个变量对结果的影响最大,即股票收益率。我的数据如下。

在此处输入图片说明

而且我的代码也已附加。

library(randomForest)
require(data.table)
data = fread("C:/stockcrazy.csv")
PEratio <- data$offeringPE/data$industryPE
data_update <- data.frame(data,PEratio)

train <- data_update[1:47,]
test <- data_update[48:57,]

对于上面的子集数据集训练和测试,我不确定是否需要对此数据进行交叉验证。而且我不知道该怎么做。

data.model <- randomForest(yield ~ offerings + offerprice + PEratio + count + bingo 
                           + purchase , data=train, importance=TRUE)

par(mfrow = c(1, 1))
varImpPlot(data.model, n.var = 6, main = "Random Forests: Top 6 Important Variables")
importance(data.model)
plot(data.model)


model.pred <- predict(data.model, newdata=test)
model.pred

d <- data.frame(test,model.pred)

我不确定IncMSE的结果是好是坏。有人可以解释吗?在此处输入图片说明

另外,我发现测试数据的预测值不是真实数据的良好预测。那么我该如何改善呢?

在此处输入图片说明

LyzandeR

让我们来看看。让我们从%IncMSE开始:

在交叉引用关于%IncMSE的交叉验证中发现了这个非常好的答案,我引用:

如果预测变量在当前模型中很重要,则为该预测变量随机但实际地分配其他值(即:在您的数据集上置换该预测变量的值),会对预测产生负面影响,即:使用同一模型进行预测从除一个变量之外相同的数据得出的结果应该更糟。

因此,您先对原始数据集然后对“置换”数据集进行预测性度量(MSE),然后以某种方式进行比较。一种方法,特别是由于我们期望原始MSE总是较小,因此可以采取不同的方法。最后,为了使这些值与变量可比,对它们进行缩放。

这意味着,在您的情况下,最重要的变量是购买,即,当购买变量被置换(即,值的顺序随机更改)时,在计算均值方面,所得模型比具有其原始顺序的变量差12%平方误差。使用排列的购买变量,MSE高出12%,这意味着该变量是最重要的。变量重要性只是衡量预测变量在所使用模型中的重要性的一种度量。在您的情况下,购买是最重要的,而市盈率则是最小的(对于这6个变量)。您不能将其解释为好是坏,因为它没有显示出模型如何适合看不见的数据。我希望现在已经清楚了。

对于交叉验证:

在培训阶段,您不需要进行交叉验证,因为它会自动发生。大约有2/3的记录用于创建树,剩下的1/3(袋外数据)用于随后评估树(使用以下方法计算树的R平方) oob数据)

至于模型的改进:

仅显示预测的收益率和实际收益率的前10行,就不能对模型的好坏做出安全的决定。您需要的是对身体的测试。最常见的是R平方。它很简单,但是用于比较模型并获得有关模型的第一意见时,它确实起作用。这是由模型为您制作的每棵树计算的,可以由data.model $ rsq访问。范围从0到1,其中1是理想模型,0表示拟合度很差(有时甚至取负值表示拟合度很差)。如果您的rsq不好,则可以尝试以下方法来改进模型,尽管不能确定您会获得想要的结果:

  1. 用其他方式校准树木。通过指定较大的节点大小编号来更改生长的树木数量并修剪树木。(这里您使用默认的500棵树,节点大小为5棵树,这可能会超出您的模型。)
  2. 如果可能,增加变量的数量。
  3. 选择其他型号。在某些情况下,随机森林无法正常工作

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对ConcurrentDictionary进行排序有意义吗?

来自分类Dev

使用JavaScript进行输入消毒不是没有意义吗?

来自分类Dev

PyGTK仍然有意义吗?

来自分类Dev

PyGTK仍然有意义吗?

来自分类Dev

base()的用法有意义吗?

来自分类Dev

属性的属性有意义吗?

来自分类Dev

为什么我的回归系数在我的 R 模型中没有意义?

来自分类Dev

逻辑回归系数没有意义

来自分类Dev

使用 Python(或 R)将文本数据提取到有意义的表中进行分析

来自分类Dev

通过调用单独的页面进行重定向有意义吗?

来自分类Dev

是吗 超级/扩展byte []有意义吗?

来自分类Dev

可以在没有有意义的替代文本的情况下使用longdesc吗?

来自分类Dev

可以在没有有意义的替代文本的情况下使用longdesc吗?

来自分类Dev

使用外部方法设置对象是否有意义?使用这个吗?

来自分类Dev

使用FireWire 800,使用SSD硬盘而不是7200rpm有意义吗?

来自分类Dev

在使用“代码优先”的情况下,使用MetadataType强制进行验证是否有意义?

来自分类Dev

缩小和缩小都有意义吗?

来自分类Dev

Abs(无符号长整数)有意义吗?

来自分类Dev

单例模式对套接字有意义吗?

来自分类Dev

使IO成为MonadCont的实例有意义吗?

来自分类Dev

REM在边界半径上有意义吗?

来自分类Dev

阻止全局迭代器有意义吗?

来自分类Dev

static final String =“ something”-静态有意义吗?

来自分类Dev

python中的`def main(args):`有意义吗?

来自分类Dev

测试猫鼬模型有意义吗?

来自分类Dev

catch(...)总是有意义吗?

来自分类Dev

HTML元素上的rem单位有意义吗?

来自分类Dev

混合正则化符有意义吗?

来自分类Dev

Little Man Computer仍然有意义吗?

Related 相关文章

热门标签

归档