Существует ли формула или правило для определения правильного размера выборки для randomForest?

13

Я играю с randomForest и обнаружил, что обычно увеличение SampSize приводит к повышению производительности. Существует ли правило / формула / и т. Д., В котором предлагается оптимальный размер sampSize или это метод проб и ошибок? Я предполагаю другой способ сформулировать это; каковы мои риски слишком малого размера или слишком большого размера (переоснащение?)?


Этот вопрос относится к реализации R случайного леса в randomForestпакете. Функция randomForestимеет параметр, sampSizeкоторый описан в документации как

Размер (ы) образца для рисования. Для классификации, если размер выборки представляет собой вектор длины числа слоев, то выборка стратифицируется по слоям, а элементы размера выборки указывают числа, которые будут взяты из слоев.

screechOwl
источник

Ответы:

21

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

Обычное практическое правило для наилучшего размера выборки - это «образец начальной загрузки», выборка, равная по размеру исходному набору данных, но выбранная с заменой, поэтому некоторые строки не выбираются, а другие выбираются более одного раза. Обычно это обеспечивает почти оптимальную производительность и является стандартной по умолчанию в реализации R. Однако в реальных приложениях вы можете обнаружить, что настройка размера выборки может привести к повышению производительности. Если есть сомнения, выберите подходящий размер выборки (и другие параметры модели), используя перекрестную проверку.

Мартин О'Лири
источник
2

За ночь я запустил 4500 случайных лесов с некоторыми случайными настройками параметров:

Проблема регрессии, при Ysignal = x1^2+sin(x2*pi) + x3 * x4 + x5 которой xвыборка выполняется независимо от нормального распределения, sd = 1, среднее = 1

Ytotal = Ysignal + Yerror

где Yerror = rnorm(n.observations,sd=sd(Ysignal))*noise.factor

theoretical.explainable.variance"TEV" = var(Ysignal= / var(Ytotal)

randomForest.performance = explained.variance(OOB cross-validation) / TEV

наборы данных были отобраны из задачи регрессии, и добавленный шум n.obsбыл случайным числом между 1000 и 5000 n.extra.dummy.variablesмежду 1 и 20

ntree всегда 1000

sample_replacement всегда true

mtryот 5 до 25, ограничено от n.obs noise.factor0 до 9

samplesize.ratio случайное число от 10% до 100%, соотношение размера каждой начальной загрузки

все модели были обучены как rfo = randomForest(x=X, y=Ytotal, <more args>)

randomForest.performance, его способность объяснить самую высокую долю от TEVувеличения в общем случае, когда samplesizeопускается , когда TEVменьше , чем 50% , и уменьшается , когда TEVвыше , чем 50%.

Таким образом, если ваши randomForest-modelfitотчеты, например, 15% объяснили дисперсию с помощью OOB-CV, и это приемлемая для вас точность модели, то вы, вероятно, можете настроить производительность немного выше, снизив sampsizeдо трети числа данных наблюдений ntree > 1000.

Мораль : для очень шумных данных лучше декоррелировать деревья, чем уменьшать смещение, выращивая деревья максимального размера.

Сорен Хавелунд Веллинг
источник
1

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

Фрэнк Харрелл
источник
2
Доктор Харрелл, я думаю, что OP спрашивает о размере повторной выборки, используемой для построения каждого отдельного дерева, а не об общем размере набора данных.
Sycorax сообщает восстановить Monica