我想避免在随机森林中过度拟合。在这方面,我打算使用 mtry、nodesize 和 maxnodes 等。您能帮我选择这些参数的值吗?我正在使用 R。
另外,如果可能的话,请告诉我如何对随机森林(在 R 中)使用 k 折交叉验证。
如何避免随机森林中的过度拟合?
数据挖掘
机器学习
数据挖掘
r
预测建模
随机森林
2021-09-25 05:00:55
4个回答
相对于其他模型,随机森林不太可能过度拟合,但它仍然是您想要明确努力避免的事情。调整模型参数绝对是避免过度拟合的要素之一,但它不是唯一的要素。事实上,我会说你的训练特征比模型参数更容易导致过度拟合,尤其是随机森林。所以我认为关键是真正有一种可靠的方法来评估你的模型,以检查过度拟合,这让我们想到了你的第二个问题。
如上所述,运行交叉验证将允许您避免过度拟合。根据 CV 结果选择最佳模型将导致模型没有过度拟合,而对于像袋外错误这样的情况不一定如此。在 R 中运行 CV 的最简单方法是使用caret
包。一个简单的例子如下:
> library(caret)
>
> data(iris)
>
> tr <- trainControl(method = "cv", number = 5)
>
> train(Species ~ .,data=iris,method="rf",trControl= tr)
Random Forest
150 samples
4 predictor
3 classes: 'setosa', 'versicolor', 'virginica'
No pre-processing
Resampling: Cross-Validated (5 fold)
Summary of sample sizes: 120, 120, 120, 120, 120
Resampling results across tuning parameters:
mtry Accuracy Kappa Accuracy SD Kappa SD
2 0.96 0.94 0.04346135 0.06519202
3 0.96 0.94 0.04346135 0.06519202
4 0.96 0.94 0.04346135 0.06519202
Accuracy was used to select the optimal model using the largest value.
The final value used for the model was mtry = 2.
@xof6 是正确的,因为模型的深度越深越容易过度拟合,但我想添加更多可能对您有用的参数。我不知道您使用哪个包与 R 一起使用,我对 R 一点也不熟悉,但我认为在那里实现了这些参数的对应项。
树的数量 - 这个数字越大,森林过度拟合的可能性就越小。这意味着,当每个决策树都在学习训练数据的某些方面时,您将获得更多可供选择的选项,可以这么说。特征数量——这个数字构成了每棵树学习的特征数量。随着这个数字的增长,树变得越来越复杂,因此它们是测试数据中可能不存在的学习模式。需要一些试验才能找到正确的值,但这就是机器学习。正如我们所提到的,也可以尝试一般深度!
这是关于 stackexchange 的一个很好的链接,但是我的一般经验是模型的深度越深,它就越容易过度拟合。
我总是减少mtry
直到训练数据集上的错误增加,然后我降低节点大小和深度,直到训练和数据集上的错误之间的差异停止减少
其它你可能感兴趣的问题