R

时间:2017-08-29 09:51:01

标签: r regression random-forest feature-selection

我正在尝试解决输入要素集大小为54的回归问题。

使用具有单个预测器'X1'的OLS线性回归,我无法解释Y的变化 - 因此我试图使用回归森林(即,随机森林回归)找到其他重要特征。之后发现所选的“X1”是最重要的特征。

我的数据集有~14500个条目。我把它分为训练和测试集,比例为9:1。

我有以下问题:

  1. 在尝试查找重要功能时,是应该在整个数据集上运行回归林,还是仅在训练数据上运行?

  2. 一旦发现了重要的功能,是否应该使用前几个功能重建模型,以确定功能选择是否能够以较低的成本加速计算以达到预测能力?

  3. 目前,我已经使用训练集和所有功能构建了模型,我将其用于测试集的预测。我正在计算训练集中的MSE和R平方。我在训练数据上获得高MSE和低R2,并且在测试数据上反向(如下所示)。这不寻常吗?

      

    forest< - randomForest(fmla,dTraining,ntree = 501,importance = T)

         

    mean((dtraining $ y - predict(forest,data = dTraining))^ 2)

         
        

    0.9371891

      
         

    rSquared(dTraining $ y,dTraining $ y - 预测(森林,数据= d培训))

         
        

    0.7431078

      
         

    mean((dTest $ y - predict(forest,newdata = dTest))^ 2)

         
        

    0.009771256

      
         

    rSquared(dTest $ y,dTest $ y - predict(forest,newdata = dTest))

         
        

    0.9950448

      
  4. 请建议。 任何建议,如果R平方和MSE是这个问题的良好指标,或者我是否需要查看其他一些指标来评估模型是否良好?

1 个答案:

答案 0 :(得分:0)

您还应该尝试Cross Validated here

  

在尝试查找重要功能时,我应该在整个数据集上运行回归林,还是仅在训练数据上运行?

仅限于培训数据。你想防止过度拟合,这就是你首先进行列车测试分裂的原因。

  

一旦找到了重要的功能,是否应该使用前几个功能重新构建模型,以确定功能选择是否能够以较低的成本加快计算速度以达到预测能力?

是的,但功能选择的目的不一定是speed up computation。利用无限的特征,可以适合任何数据模式(即过度拟合)。通过功能选择,您希望通过仅使用一些“强大”功能​​来防止过度拟合。

  

目前,我已经使用训练集和所有功能构建了模型,我将其用于测试集的预测。我正在计算训练集中的MSE和R平方。我在训练数据上获得高MSE和低R2,并且在测试数据上反向(如下所示)。这不寻常吗?

是的,这很不寻常。您需要训练测试数据的低MSE和高R2值。 (我会仔细检查你的计算。)如果你的训练数据越来越高MSE和低R2,这意味着你的训练很差,这是非常令人惊讶的。另外,我没有使用rSquared,但您可能想要rSquared(dTest$y, predict(forest, newdata=dTest))