Floresta aleatória: e se eu souber que uma variável é importante

12

O meu entendimento é os picaretas florestais aleatórios aleatoriamente mtry variáveis para construir cada árvore de decisão. Portanto, se mtry = ncol / 3, então cada variável será usada em média em 1/3 das árvores. E 2/3 das árvores não as usarão.

Mas e se eu souber que uma única variável é provavelmente muito importante, seria bom aumentar manualmente a probabilidade de essa variável ser selecionada em cada árvore? É possível com o pacote randomForest no R?

Benoit_Plante
fonte

Respostas:

6

Note que mtryé o número de variáveis ​​amostradas aleatoriamente como candidatas em cada divisão. E dentre esses candidatos, o melhor é escolhido para realizar a divisão. Assim, a proporção que você mencionou não é completamente satisfeita. Variáveis ​​mais importantes aparecem com mais freqüência e menos importantes - com menos frequência. Portanto, se a variável for realmente muito importante, existe uma grande probabilidade de que ela seja selecionada em uma árvore e você não precise de correção manual. Mas, às vezes (raramente), é necessário forçar a presença de alguma variável (independentemente de sua possível importância) na regressão. Tanto quanto eu sei, a floresta aleatória do pacote R não suporta essa possibilidade. Porém, se essa variável não tiver intercorrelação com outras, você poderá fazer a regressão comum com essa variável como termo único e executar a regressão aleatória da floresta nos resíduos dessa regressão comum. Se você ainda deseja corrigir a possibilidade de escolher variáveis ​​pré-especificadas, a modificação do código fonte com a próxima compilação é sua opção.

O_Devinyak
fonte
2
Se você precisar de n árvores para obter uma aproximação decente para sua função de destino, mas estiver procurando por importância variável, poderá definir algo como 5 * n ou 10 * n árvores na floresta. Eles convergirão mais, não no "erro de ajuste", mas na mudança de importância variável.
EngrStudent - Restabelece Monica
5

Desde junho de 2015, um novo algoritmo de RF promissor no R-CRAN chamado 'ranger' possui esse recurso. É ajustado com, split.select.weights : "Vetor numérico com pesos entre 0 e 1, representando a probabilidade de selecionar variáveis ​​para divisão."

Soren Havelund Welling
fonte