2015-07-26 3 views
4

Я работаю над случайным лесом в R, и я хотел бы добавить 10-кратное перекрестное подтверждение моей модели. Но я совсем застрял там. Это образец моего кода.Случайный лес Crossvalidation in R

install.packages('randomForest') 
library(randomForest) 
set.seed(123) 
fit <- randomForest(as.factor(sickrabbit) ~ Feature1,..., FeatureN ,data=training1, importance=TRUE,sampsize = c(200,300),ntree=500) 

я нашел в Интернете функцию rfcv в каре, но я не уверен, чтобы понять, как это работает. Может ли кто-нибудь помочь с этой функцией или предложить более простой способ реализации перекрестной проверки. Можете ли вы сделать это, используя случайный пакет леса вместо каретки?

+0

Мое понимание состоит в том, что правильно построенная случайная модель леса не требует перекрестной проверки, поскольку каждое дерево в лесу построено с образцом из мешка и проверяется на неиспользованный оставшийся образец. Почему вы хотите перекрестить проверку? –

+0

Размер моего набора данных немного мал около 50 функций и 10000 образцов. Набор данных также очень несбалансирован, и только 200 из общего числа образцов соответствуют классам 1, а остальные относятся к классам 2. Все это без упоминания о том, что я должен хранить отдельные 30% моих данных для тестирования конечной модели с невидимыми данными. Я хотел бы использовать коррекцию кросс-кросс-кода для улучшения производительности модели путем лучшего выбора функций. –

+0

Я думаю, вы не понимаете основную предпосылку случайных лесов. Набор данных невелик; Я потратил годы на то, чтобы провести RF-анализ фармацевтических данных на порядок меньше, чем ваш набор данных, и никогда не возникало проблем. Обычно вы не выполняете _not_ cross, проверяете модель RF; алгоритм, используемый для создания леса, неявно делает это для вас. –

ответ

5

Вам не нужно перекрестно проверять случайную модель леса. Вы застреваете с пакетом randomForest, потому что он не предназначен для этого.

Вот отрывок из Breiman's official documentation:

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

Каждое дерево построено с использованием другого образца бутстрапа из исходных данных. Примерно одна треть случаев исключена из образца бутстрапа и не используется при построении k-го дерева.

Поместите каждый случай в конструкцию k-го дерева вниз по k-му дереву, чтобы получить классификацию. Таким образом, для каждого случая получается классификация тестового набора примерно в одной трети деревьев. В конце прогона возьмите j, чтобы быть классом, который получил большинство голосов каждый раз, когда n был oob. Доля раз, когда j не равна истинному классу n, усредненному по всем случаям, является оценкой ошибки oob. Это оказалось беспристрастным во многих тестах.

+0

Большое спасибо за сообщение. Это очень четкое объяснение. –