2

Я занимаюсь реализацией случайного леса (для классификации), и у меня есть некоторые вопросы относительно алгоритма выращивания деревьев, упомянутого в литературе.Случайный алгоритм развития лесного дерева

При подготовке дерева решений существует два критерия, позволяющих остановить выращивание дерева:
a. Остановитесь, когда больше нет функций для разделения узла.
b. Остановитесь, когда узел имеет все образцы в нем, принадлежащие к одному классу.

Исходя из этого,
1. Рассмотрим растет одно дерево в лесу. При разделении узла дерева, я случайно выбрать м из M общих функций, а затем из этих м особенности Я считаю, что одна функции с максимальным усилением информации. После того, как я нашел эту функцию, скажите f, следует ли удалить эту функцию из списка функций, прежде чем переходить к дочерним узлам узла? Если я не удалю эту функцию, эта функция может снова быть выбрана по дереву.
Если я реализую алгоритм без, удаляя функцию, выбранную на узле, тогда единственный способ остановить выращивание дерева - это когда листья дерева станут «чистыми». Когда я это сделал, я получил «максимальную глубину рекурсии», достигшую ошибки в Python, потому что дерево раньше не могло достичь этого «чистого» состояния.
В литературе РФ даже написанные Брейманом говорят, что дерево должно вырасти до максимума. Что это значит?

2. При расщеплении узла, после выбора наилучшей функции для разделения (путем получения информации), каков должен быть порог, на котором нужно разделить? Один из подходов состоит в том, чтобы не иметь порога, создать один дочерний узел для каждого уникального значения функции; но у меня тоже есть функции с непрерывной оценкой, поэтому это означает создание одного дочернего узла на образец!

+0

Сомневаюсь, что вы попадаете на глубину рекурсии без ошибок в коде. Поскольку глубина дерева должна быть log (N), а затем доходить до глубины тысяч, вы будете говорить о сумасшедшем большом количестве образцов ..... –

+0

Дерево глубины 20 довольно сложное дерево, что может быть целых 2 ** 20 = 1M листьев: что-то сломано, если у вас больше листьев, чем datapoints –

+0

@JohnGreenall Да, может быть какая-то ошибка .. но, с другой стороны, если я удалю уже выбранные функции для некоторого раскола, когда я спускаюсь, я не получаю эту проблему; потому что в конечном итоге у меня заканчиваются функции для разделения.Но каков для этого стандарт РФ? Должен ли я удалять функции, или это нормально держать их и позволять им повторяться по дереву? –

ответ

1

Q1

  • Вы не должны удалять функции из M. В противном случае он не будет в состоянии обнаружить некоторые типы отношений (например: линейные отношения)
  • Может быть, вы можете остановить раньше, в вашем условие может увеличиться до листьев только с 1 образцом, это не будет иметь статистической значимости. Так что лучше остановиться на, скажем, когда число выборок на листе составляет < = 3

Q2

  • Для непрерывных функций может быть, вы можете бен их групп и использовать их, чтобы выяснить, расщепление точка.
Смежные вопросы