Практические вопросы по настройке случайных лесов

65

Мои вопросы о случайных лесах. Концепция этого красивого классификатора мне ясна, но все же есть много практических вопросов использования. К сожалению, мне не удалось найти никакого практического руководства по ВЧ (я искал что-то вроде «Практического руководства по обучению машин Больцмана с ограничениями» Джеффри Хинтона, но для «Случайных лесов»!)

Как можно настроить RF на практике?

Правда ли, что большее количество деревьев всегда лучше? Существует ли разумное ограничение (кроме, конечно, вычислительной мощности) на увеличение количества деревьев и как его оценить для данного набора данных?

А как насчет глубины деревьев? Как выбрать разумный? Есть ли смысл экспериментировать с деревьями разной длины в одном лесу и каково руководство для этого?

Есть ли какие-то другие параметры, на которые стоит обратить внимание при обучении RF? Альгос для построения отдельных деревьев может быть?

Когда они говорят, что RF устойчивы к переоснащению, насколько это правда?

Я буду благодарен за любые ответы и / или ссылки на руководства или статьи, которые я мог пропустить при поиске.

Ицхака
источник
Для настройки perfoamnce см. Также SO: «Как улучшить производительность randomForest»
smci

Ответы:

43

Я не авторитетная фигура, поэтому рассмотрим следующие краткие заметки практикующего:

Чем больше деревьев, тем лучше с убывающей отдачей. Более глубокие деревья почти всегда лучше требуют большего количества деревьев для аналогичной производительности.

Вышеупомянутые два пункта являются прямым результатом компромисса смещения дисперсии. Более глубокие деревья уменьшают уклон; больше деревьев уменьшает дисперсию.

Самый важный гиперпараметр - это количество объектов, которые нужно протестировать для каждого разделения. Чем больше бесполезных функций, тем больше возможностей вы должны попробовать. Это нужно настроить. Вы можете настроить его с помощью оценок OOB, если вы просто хотите узнать свои результаты на тренировочных данных, а двойников нет (~ повторные измерения). Несмотря на то, что это самый важный параметр, его оптимум все еще обычно довольно близок к исходным значениям по умолчанию (sqrt (p) или (p / 3) для классификации / регрессии).

Сравнительно недавние исследования показывают, что вам даже не нужно делать исчерпывающий разделенный поиск внутри функции, чтобы получить хорошую производительность. Просто попробуйте несколько точек разреза для каждой выбранной функции и двигаться дальше. Это делает обучение еще быстрее. Чрезвычайно Случайные Леса / Деревья.

Ши Паркс
источник
Еще пара замечаний: на практике я обычно подтверждаю сходимость, сравнивая прогнозы от одной половины деревьев до другой. Что касается переоснащения, это больше зависит от того, что вы пытаетесь обобщить. Они не наденутся, если вы тренируетесь на репрезентативной выборке, но это редко так работает.
Шеа Паркс
Верны ли ваши «более глубокие деревья = лучше, все остальное константа» для чрезвычайно шумных данных со структурами зависимостей, которые меняются со временем, в которых линейные отношения являются наиболее устойчивыми, чтобы не изменяться между обучающим набором и тестовым набором?
Джейс
Я мог бы видеть потенциал для более мелких деревьев, чтобы быть лучше, если бы у вас была ситуация, когда вы должны изучать только поверхностные отношения, но я действительно хотел бы использовать эмпирические данные, чтобы доказать это (и у меня нет времени на это работать). Если вы верите или имеете доказательства того, что линейные отношения являются наиболее устойчивыми, то я бы настоятельно рассмотрел что-то не основанное на деревьях. Может быть, нейронные сети с пропущенными слоями?
Shea Parkes
Хорошо, скажем, у вас есть набор данных с 3 соответствующими функциями и 100 функциями, которые являются белым шумом, и 50 точками данных. Но вы не знаете, что такое белый шум, а какие актуальны заранее, вы просто знаете, что ваши данные настолько шумны, что это так. Очевидно, что чрезвычайно мелкие деревья с большими mtryлучше, никаких доказательств или эмпирических доказательств не требуется, чтобы это увидеть.
Jase
22
  • Количество деревьев : чем больше, тем лучше: да. Один из способов оценить и узнать, когда следует остановиться, - отслеживать частоту ошибок при построении леса (или любые другие критерии оценки, которые вы можете использовать) и определять, когда он сходится. Вы можете сделать это на самом учебном наборе или, если возможно, на независимом тестовом наборе. Кроме того, следует отметить, что количество тестовых узлов в ваших деревьях ограничено верхним числом объектов, поэтому, если у вас много переменных и не так много обучающих объектов, настоятельно рекомендуется использовать более крупный лес, чтобы увеличить шансы оценить все дескрипторы хотя бы один раз в вашем лесу.

  • Глубина дерева : есть несколько способов контролировать, насколько глубоки ваши деревья (ограничить максимальную глубину, ограничить количество узлов, ограничить количество объектов, необходимых для разделения, прекратить разделение, если разделение недостаточно улучшает подгонку, ... ). В большинстве случаев рекомендуется обрезать (ограничить глубину) деревья, если вы работаете с зашумленными данными. Наконец, вы можете использовать свои полностью разработанные деревья для вычисления производительности более коротких деревьев, поскольку они являются «подмножеством» полностью разработанных деревьев.

  • Сколько функций для тестирования на каждом узле : перекрестная проверка вашего опыта с широким диапазоном значений (включая рекомендуемые), вы должны получить кривую производительности и уметь определить максимум, указывающий, какое значение является лучшим для этого параметра + Ши Паркс ответ.

  • Ши Паркс упомянул об экстра-деревьях, вот оригинальная статья, подробно описывающая метод: http://orbi.ulg.ac.be/bitstream/2268/9357/1/geurts-mlj-advance.pdf

0asa
источник