如何避免在随机森林中过度拟合?


11
  1. 我想避免在随机森林中过度拟合。在这方面,我打算使用mtry,nodesize和maxnodes等。您能帮我为这些参数选择值吗?我正在使用R。

  2. 另外,如果可能,请告诉我如何针对随机森林(在R中)使用k倍交叉验证。

Answers:


7

相对于其他模型,Random Forests不太可能过拟合,但是您仍然需要做出明确的努力来避免这种情况。调整模型参数无疑是避免过度拟合的一个因素,但这并不是唯一的因素。实际上,我想说的是,您的训练功能比模型参数更可能导致过度拟合,尤其是对于随机森林。因此,我认为关键是真正有一种可靠的方法来评估模型,以检查是否过度拟合,这使我们想到了第二个问题。

如上所述,运行交叉验证将使您避免过拟合。根据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. 

非常感谢您的答复和建议。是否只想知道与使用randomForest算法选择重要变量相比,使用插入符号包进行特征选择有何不同?
阿伦(Arun)2015年

听起来这是一个不同的问题-考虑到您使用插入符号中选择的任何算法来运行递归特征选择之类的事情,差异是巨大的。
大卫

@David“什么是开箱即用的错误,不一定是这种情况”是什么意思?您是说凭空估计不是避免过度拟合的好方法吗?
Pierre

5

在某种程度上,@ xof6是正确的,因为模型越深,越倾向于过度拟合,但是我想添加更多可能对您有用的参数。我不知道您在R中使用哪个程序包,而且我完全不熟悉R,但是我认为必须在其中实现这些参数的对应项。

树木数量-这个数字越大,森林适应的可能性就越小。这意味着,随着每个决策树都在学习训练数据的某些方面,可以说,您将获得更多选择。特征数量-此数字构成每棵树学习的特征数量。随着数量的增加,树变得越来越复杂,因此它们是学习模式,测试数据中可能没有这种模式。找到正确的价值还需要做一些实验,但这就是机器学习。正如我们提到的,还可以尝试一般深度!


4

这是关于stackexchange的一个很好的链接 /stats/111968/random-forest-how-to-handle-overfitting,但是我的一般经验是模型越深越倾向于过度拟合。


这对于单个树分类器是有意义的。但是,我在这些论坛上已经读到,可以保护随机森林免受过度拟合的影响,并且应该完全种植树木(即,节点大小= 1用于分类)。
Seanosapien

0

我总是减小mtry直到火车数据集的误差增加,然后降低节点的大小和深度,直到火车和数据集的误差之间的差异减小为止

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.