Как избежать переобучения в случайном лесу?

11
  1. Я хочу избежать переобучения в случайном лесу. В связи с этим я намерен использовать mtry, nodeize, maxnodes и т. Д. Не могли бы вы помочь мне выбрать значения для этих параметров? Я использую R.

  2. Также, если возможно, скажите, пожалуйста, как я могу использовать перекрестную проверку в k-кратном порядке для случайного леса (в R).

Arun
источник

Ответы:

7

По сравнению с другими моделями, случайные леса реже подходят, но вы все равно должны избегать их явно. Настройка параметров модели, безусловно, является одним из элементов, позволяющих избежать переоснащения, но не единственным. На самом деле, я бы сказал, что ваши тренировочные возможности с большей вероятностью приведут к переоснащению, чем параметрам модели, особенно со случайными лесами. Поэтому я думаю, что ключ в том, чтобы действительно иметь надежный метод для оценки вашей модели, чтобы проверить, подходит ли она больше, чем что-либо еще, что подводит нас ко второму вопросу.

Как упоминалось выше, проверка перекрестной проверки позволит вам избежать переобучения. Выбор вашей лучшей модели на основе результатов CV приведет к модели, которая не будет соответствовать требованиям, а это не всегда так, как если бы была ошибка. Самый простой способ запустить CV в R с помощью 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?
Арун
Это звучит как другой вопрос для публикации - различия огромны, учитывая, что вы выполняете такие вещи, как рекурсивный выбор функций, используя любой алгоритм по вашему выбору в карете.
Дэвид
@David Что вы имеете в виду « которое не обязательно так что - то вроде отказа от ошибки мешка»? Вы имеете в виду , что из оценки мешок не является хорошим способом , чтобы избежать переобучения?
Пьер
5

@ xof6 верен в том смысле, что чем глубже модель, тем больше она подходит, но я хотел бы добавить еще несколько параметров, которые могут быть вам полезны. Я не знаю, какой пакет вы используете с R, и я совсем не знаком с R, но я думаю, что там должны быть аналоги этих параметров.

Количество деревьев - чем больше это число, тем меньше вероятность того, что лес перегружен. Это означает, что по мере того, как каждое дерево решений изучает какой-либо аспект обучающих данных, вы получаете, так сказать, больше возможностей для выбора. Количество функций - это число показывает, сколько функций изучает каждое отдельное дерево. Поскольку это число растет, деревья становятся все более и более сложными, поэтому они учатся модели, которые не могли бы быть там в тестовых данных. Потребуются некоторые эксперименты, чтобы найти правильное значение, но таково машинное обучение. Экспериментируйте с общей глубиной, как мы уже упоминали!

moriara
источник
4

Вот хорошая ссылка на это на stackexchange /stats/111968/random-forest-how-to-handle-overfitting , однако мой общий опыт показывает , что чем глубже модель, тем больше она стремится надевать.

0xF
источник
Это имеет смысл с одним классификатором дерева. Тем не менее, я читал на этих форумах, что случайные леса защищены от чрезмерной подгонки и что деревья должны быть полностью выращены (т. Е. Размер узла = 1 для классификации).
Seanosapien
0

Я всегда уменьшаю, mtryпока ошибка в наборе данных поезда не увеличивается, затем я уменьшаю размер узла и глубину, пока разница между ошибкой в ​​поезде и наборе данных не перестанет уменьшаться

Qbik
источник