Perguntas práticas sobre o ajuste de florestas aleatórias

65

Minhas perguntas são sobre florestas aleatórias. O conceito deste classificador bonito é claro para mim, mas ainda há muitas questões práticas de uso. Infelizmente, não encontrei nenhum guia prático de RF (estive procurando por algo como "Um Guia Prático para Treinamento de Máquinas Boltzman Restritas", de Geoffrey Hinton, mas para as Florestas Aleatórias!

Como se pode ajustar a RF na prática?

É verdade que um número maior de árvores é sempre melhor? Existe um limite razoável (exceto a capacidade comp, é claro) para aumentar o número de árvores e como estimar para um determinado conjunto de dados?

E a profundidade das árvores? Como escolher o razoável? Existe algum sentido em experimentar árvores de diferentes comprimentos em uma floresta e qual é a orientação para isso?

Existem outros parâmetros que vale a pena observar ao treinar RF? Algos para a construção de árvores individuais pode ser?

Quando eles dizem que os RF são resistentes ao excesso de ajuste, qual é a verdade?

Aprecio todas as respostas e / ou links para guias ou artigos que eu possa ter perdido durante a minha pesquisa.

izhak
fonte
Para perfoamnce-tuning, ver também SO: "Como melhorar a Floresta aleatória performance"
SMCI

Respostas:

43

Como eu não sou uma figura autoritária, considere estas breves notas do profissional:

Mais árvores é sempre melhor com retornos decrescentes. Árvores mais profundas são quase sempre melhor sujeitas a exigir mais árvores para um desempenho semelhante.

Os dois pontos acima são diretamente o resultado da troca de viés e variância. Árvores mais profundas reduzem o viés; mais árvores reduz a variação.

O hiperparâmetro mais importante é quantos recursos testar para cada divisão. Quanto mais recursos inúteis houver, mais recursos você deve tentar. Isso precisa de sintonia. Você pode ajustá-lo através de estimativas OOB se quiser apenas conhecer seu desempenho nos dados de treinamento e não houver geminação (~ medidas repetidas). Embora esse seja o parâmetro mais importante, o ideal ainda é geralmente bastante próximo dos padrões de sugestão originais (sqrt (p) ou (p / 3) para classificação / regressão).

Pesquisas bastante recentes mostram que você nem precisa fazer pesquisas divididas exaustivas dentro de um recurso para obter um bom desempenho. Apenas tente alguns pontos de corte para cada recurso selecionado e siga em frente. Isso torna o treinamento ainda mais rápido. (~ Florestas / árvores extremamente aleatórias).

Shea Parkes
fonte
Algumas outras notas: na prática, geralmente confirmo a convergência comparando previsões de uma metade das árvores à outra. No que se refere à super adaptação, é mais uma função do que você está tentando generalizar. Eles não vão se ajustar demais se você estiver treinando em uma amostra representativa, mas raramente é assim que realmente funciona.
Shea Parkes
Suas 'árvores mais profundas = melhor, tudo o mais constante' são verdadeiras para dados extremamente ruidosos com estruturas de dependência que mudam ao longo do tempo, nas quais os relacionamentos lineares são os mais robustos para não mudar entre o conjunto de treinamento e o conjunto de testes?
Jase
Eu poderia ver que o melhor para árvores rasas seria melhor se você tivesse uma situação em que deveria aprender apenas relacionamentos rasos, mas eu realmente gostaria de usar evidências empíricas para provar isso (e não tenho tempo para trabalhar nisso). Se você acredita ou tem provas de que os relacionamentos lineares são os mais resilientes, consideraria fortemente algo que não é baseado em árvore. Talvez redes neurais com pular camadas?
Shea Parkes
Bem, digamos que você tenha um conjunto de dados com 3 recursos relevantes e 100 recursos com ruído branco e 50 pontos de dados. Mas você não sabe quais são os ruídos brancos e os que são relevantes antes do tempo, apenas sabe que seus dados são tão ruídos que esse é o caso. Claramente, as árvores extremamente rasas com uma grande mtrysão melhores, nenhuma prova ou evidência empírica é necessária para ver isso.
Jase 01/02
22
  • Número de árvores : quanto maior, melhor: sim. Uma maneira de avaliar e saber quando parar é monitorar sua taxa de erro ao criar sua floresta (ou qualquer outro critério de avaliação que você possa usar) e detectar quando ela convergir. Você pode fazer isso no próprio conjunto de aprendizado ou, se disponível, em um conjunto de testes independente. Além disso, é preciso observar que o número de nós de teste em suas árvores é delimitado pelo número de objetos; portanto, se você tiver muitas variáveis ​​e poucos objetos de treinamento, uma floresta maior será altamente recomendada para aumentar o chances de avaliar todos os descritores pelo menos uma vez em sua floresta.

  • Profundidade da árvore : existem várias maneiras de controlar a profundidade das suas árvores (limite a profundidade máxima, limite o número de nós, limite o número de objetos necessários para dividir, pare de dividir se a divisão não melhorar suficientemente o ajuste, ... ) Na maioria das vezes, é recomendável podar (limitar a profundidade) das árvores se você estiver lidando com dados ruidosos. Finalmente, você pode usar suas árvores totalmente desenvolvidas para calcular o desempenho de árvores mais curtas, pois elas são um "subconjunto" das árvores totalmente desenvolvidas.

  • Quantos recursos a serem testados em cada nó : valide cruzadamente suas experiências com uma ampla gama de valores (incluindo os recomendados), você deve obter uma curva de desempenho e poder identificar um valor máximo apontando qual é o melhor valor para esse parâmetro + Shea Parkes responde.

  • Shea Parkes mencionou as Extra-Trees, aqui está o artigo original que descreve em detalhes o método: http://orbi.ulg.ac.be/bitstream/2268/9357/1/geurts-mlj-advance.pdf

0asa
fonte