R中回归森林的特征选择和预测精度
Posted
技术标签:
【中文标题】R中回归森林的特征选择和预测精度【英文标题】:Feature selection and prediction accuracy in regression Forest in R 【发布时间】:2018-02-06 17:19:45 【问题描述】:我正在尝试解决输入特征集大小约为 54 的回归问题。
使用带有单个预测变量“X1”的 OLS 线性回归,我无法解释 Y 的变化 - 因此我试图使用回归森林(即随机森林回归)找到其他重要特征。后来发现选中的“X1”是最重要的特征。
我的数据集有 ~14500 个条目。我以 9:1 的比例将其分成训练集和测试集。
我有以下问题:
当试图找到重要特征时,我应该在整个数据集上运行回归森林,还是只在训练数据上运行?
一旦找到重要特征,是否应该使用前几个特征重新构建模型,以查看特征选择是否能以较小的预测能力成本加速计算?
目前,我已经使用训练集和所有特征构建了模型,并将其用于测试集的预测。我正在从训练集中计算 MSE 和 R 平方。我在训练数据上得到了高 MSE 和低 R2,在测试数据上得到了反转(如下所示)。这不寻常吗?
森林
mean((dTraining$y - 预测(森林, data=dTraining))^2)
0.9371891
rSquared(dTraining$y, dTraining$y - 预测(森林, data=dTraining))
0.7431078
mean((dTest$y - predict(forest, newdata=dTest))^2)
0.009771256
rSquared(dTest$y, dTest$y - predict(forest, newdata=dTest))
0.9950448
请提出建议。 如果 R-squared 和 MSE 是解决这个问题的好指标,或者我需要查看其他一些指标来评估模型是否良好,有什么建议吗?
【问题讨论】:
【参考方案1】:你也应该试试Cross Validated
here
当试图找到重要特征时,我应该在整个数据集上运行回归森林,还是只在训练数据上运行?
仅在训练数据上。您想防止过度拟合,这就是为什么您首先要进行训练测试拆分。
一旦找到重要特征,是否应该使用前几个特征重新构建模型,以查看特征选择是否以较小的预测能力成本加速计算?
是的,但特征选择的目的不一定是speed up computation
。通过无限特征,可以拟合任何数据模式(即过度拟合)。通过特征选择,您希望通过仅使用几个“稳健”特征来防止过度拟合。
目前,我已经使用训练集和所有特征构建了模型,并将其用于测试集的预测。我正在从训练集中计算 MSE 和 R 平方。我在训练数据上得到了高 MSE 和低 R2,在测试数据上得到了反转(如下所示)。这不寻常吗?
是的,这很不寻常。您希望训练 和 测试数据的 MSE 和 R2 值都较低。 (我会仔细检查你的计算。)如果你的训练数据得到高 MSE 和低 R2,这意味着你的训练很差,这非常令人惊讶。另外,我没有用过rSquared
,但也许你想要rSquared(dTest$y, predict(forest, newdata=dTest))
?
【讨论】:
感谢 cmets。 rSquared 是库(miscTools)中的一个模块。它给出与使用公式相同的结果: 1 - sum((dTest$y - predict (fit, newdata = dTest))^2)/ sum((dTest$y - mean(dTest$y))^2) 是否需要检查从训练集中选择为重要的特征是否在测试集中也很重要?以上是关于R中回归森林的特征选择和预测精度的主要内容,如果未能解决你的问题,请参考以下文章