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?
fonte
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?
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/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 ntree
parâ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 1ntree
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=-1
de usar todo o processo, mas o custo de cada núcleo requer uma cópia dos dados; depois disso, você pode testar essa fórmulantree = sqrt (número de linhas * número de colunas) / numberofcpu
fonte