O número ideal de árvores em uma floresta aleatória depende do número de preditores?

46

Alguém pode explicar por que precisamos de um grande número de árvores em florestas aleatórias quando o número de preditores é grande? Como podemos determinar o número ideal de árvores?

Z Khan
fonte

Respostas:

70

A floresta aleatória usa empacotamento (escolhendo uma amostra de observações em vez de todas) e o método de subespaço aleatório (escolhendo uma amostra de recursos em vez de todos eles, em outras palavras - atributo de empacotamento ) para cultivar uma árvore. Se o número de observações for grande, mas o número de árvores for muito pequeno, algumas observações serão previstas apenas uma vez, ou mesmo nem mesmo. Se o número de preditores for grande, mas o número de árvores for muito pequeno, alguns recursos podem (teoricamente) ser perdidos em todos os subespaços usados. Ambos os casos resultam na diminuição do poder preditivo aleatório da floresta. Mas o último é um caso bastante extremo, uma vez que a seleção do subespaço é realizada em cada nó.

Durante a classificação, a dimensionalidade do subespaço é (bastante pequena, é o número total de preditores) por padrão, mas uma árvore contém muitos nós. Durante a regressão, a dimensionalidade do subespaço é (suficientemente grande) por padrão, embora uma árvore contenha menos nós. Portanto, o número ideal de árvores em uma floresta aleatória depende do número de preditores apenas em casos extremos. pp/3ppp/3

A página oficial do algoritmo afirma que a floresta aleatória não se adequa demais e você pode usar quantas árvores quiser. Mas Mark R. Segal (14 de abril de 2004. "Benchmarks de aprendizado de máquina e regressão aleatória da floresta". Centro de Bioinformática e Bioestatística Molecular) descobriu que se adapta a alguns conjuntos de dados ruidosos. Portanto, para obter o número ideal, você pode tentar treinar floresta aleatória em uma grade de ntreeparâmetros (simples, mas consome mais CPU) ou construir uma floresta aleatória com muitas árvores com keep.inbag, calcular taxas de erro out-of-bag (OOB) para as primeiras árvores (em que muda de para ) e plota a taxa de erro de OOB x número de árvores (mais complexas, mas que consomem menos CPU).n 1nn1ntree

O_Devinyak
fonte
-2

De acordo com este artigo

Eles sugerem que uma floresta aleatória deve ter um número de árvores entre 64 - 128 árvores . Com isso, você deve ter um bom equilíbrio entre a ROC AUC e o tempo de processamento.

silviomoreto
fonte
10
Parece estranho que não há nenhuma dependência em seus resultados sobre o número de recursos no conjunto de dados ...
naught101
-5

Eu quero adicionar algumas coisas, se você tiver mais de 1000 recursos e 1000 linhas, você não pode simplesmente pegar o número da árvore.

sugiro que você primeiro detecte o número de cpu e ram antes de tentar iniciar a validação cruzada e encontre a razão entre eles e o número de árvores

se você usa o sikit learn em python, tem a opção n_jobs=-1de usar todo o processo, mas o custo de cada núcleo requer uma cópia dos dados; depois disso, você pode testar essa fórmula

ntree = sqrt (número de linhas * número de colunas) / numberofcpu

Malouke
fonte
6
Eu acho que você precisa editar isso para fornecer evidências e justificativas para suas declarações.
Mdewey #