Случайный лес: что если я знаю, что переменная важна


12

Насколько я понимаю, случайный лес выбирает случайным образом переменные mtry для построения каждого дерева решений. Таким образом, если mtry = ncol / 3, то каждая переменная будет использоваться в среднем на 1/3 деревьев. И 2/3 деревьев не будут их использовать.

Но что, если я знаю, что одна переменная, вероятно, очень важна, было бы хорошо, чтобы вручную увеличить вероятность выбора этой переменной в каждом дереве? Это возможно с пакетом randomForest в R?

Ответы:


6

Обратите внимание, что МТРИколичество переменных, случайно выбранных в качестве кандидатов при каждом разделении. И из этих кандидатов лучше всего выбрать расщепление. Таким образом, пропорция, которую вы упомянули, не удовлетворена полностью. Более важные переменные появляются чаще, а менее важные - реже. Таким образом, если переменная действительно очень важна, то существует большая вероятность, что она будет выбрана в дереве, и вам не нужно вносить исправления вручную. Но иногда (редко) возникает необходимость форсировать наличие некоторой переменной (независимо от ее возможной важности) в регрессии. Насколько мне известно, R пакет случайных лесов не поддерживает такую ​​возможность. Но если эта переменная не имеет никакой корреляции с другими, вы можете сделать обычную регрессию с этой переменной в качестве одного члена, а затем запустить случайную лесную регрессию на остатках этой обычной регрессии. Если вы все еще хотите исправить возможность выбора заранее заданных переменных, тогда вам следует изменить исходный код с последующей компиляцией.


2
Если вам нужно n деревьев, чтобы получить достойное приближение для вашей целевой функции, но вы ищете переменную важность, то вы можете установить что-то вроде 5 * n или 10 * n деревьев в лесу. Они будут сходиться больше не из-за «ошибки соответствия», а из-за изменения в значимости переменной.
EngrStudent

5

С июня 2015 года эта функция появилась в новом многообещающем радиочастотном алгоритме R-CRAN под названием «рейнджер». Он подправлен с помощью split.select.weights : «Числовой вектор с весами от 0 до 1, представляющий вероятность выбора переменных для разделения».

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.